Autenticazione JWT con WP - Approccio


8

Stiamo utilizzando JWT ( JSON Web Token ) per autenticare la nostra applicazione WordPress con un servizio esterno. L'attuale flusso a cui stiamo pensando è così:

  1. L'utente accede dal sito padre
  2. Il sito padre invia una richiesta POST con le informazioni utente e il token JWT al sito WordPress
  3. Il sito WP memorizza il token JWT
  4. Il token viene verificato per scadenza ogni volta che l'utente visita una nuova pagina e, se il token è scaduto, l'utente verrà reindirizzato al sito padre per accedere nuovamente.

Le mie domande:

  1. È questo l'approccio giusto?
  2. Come posso conservare il token JWT? Un biscotto? O nel database, con le informazioni dell'utente come identificatore univoco? Nota: gli utenti non saranno registrati sul sito WP.
  3. Come posso verificare la scadenza?

Esiste un plug-in WP per JWT ma non c'è documentazione per questo, quindi non sono sicuro che servirà al mio scopo.


hmmm wtf è jwt?
Mark Kaplun,

Aggiunti collegamenti pertinenti. Dai un'occhiata.
Rutwick Gangurde,

ok, ora so cos'è JWT, non capisco ancora la domanda e perché è specifica per wordpress. Non esiste una guida delle migliori pratiche per questo? Comunque i consigli su plugin / librerie sono fuori tema ....
Mark Kaplun,

1
Non voglio una raccomandazione per il plugin, sto scrivendo il mio codice. Rimossa l'ultima riga che ti ha portato a pensarlo.
Rutwick Gangurde,

Risposte:


8

Questo è apparso come una notifica a causa del voto. Ecco come l'ho risolto.

  1. L'endpoint codificato nell'app che dovrei autenticare prepara il token.
  2. Il token deve essere nel formato specificato.
  3. Dovrebbe quindi essere codificato in base 64 e crittografato con hash.
  4. Il wp_initgestore deve essere utilizzato per gestire la richiesta POST inviata dall'endpoint, per estrarre il token.
  5. La chiave verrà condivisa in qualche altro modo, utilizzata per la decodifica.
  6. Una volta estratto il token, confrontalo con un token generato localmente con le stesse informazioni.
  7. Conservalo in un cookie e controllalo ad ogni accesso alla pagina. Puoi scadere dopo un po 'o continuare ad aumentare l'intervallo di tempo ad ogni accesso alla pagina.

L'endpoint potrebbe essere in qualsiasi lingua. Anche questo è il flusso generale di esso, puoi usarlo dove vuoi.


0

L'attivazione del Single Sign-On in WordPress mi ha richiesto oltre 18 ore di difficoltà, ma potrebbe richiedere solo pochi minuti:

Fondamentalmente, ti consigliamo di utilizzare https://wordpress.org/plugins/wp-force-login/ e una versione modificata di https://as.wordpress.org/plugins/jwt-authenticator/ e quindi creare un'autenticazione endpoint protetto sul tuo sito principale che genera un JWT (token Web JSON) e reindirizza all'URL speciale del tuo sito WordPress.

Vedi il codice completo qui .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.