web-dev-qa-db-fra.com

Authentification JWT avec WP - approche

Nous utilisons JWT ( JSON Web Token ) pour authentifier notre application WordPress avec un service externe. Le flux actuel auquel nous pensons est comme ceci:

  1. L'utilisateur se connecte sur le site parent
  2. Le site parent envoie une demande POST avec les informations utilisateur et le jeton JWT au site WordPress.
  3. Le site WP stocke le jeton JWT
  4. L'expiration du jeton est vérifiée à chaque fois que l'utilisateur visite une nouvelle page et, si le jeton a expiré, l'utilisateur sera redirigé vers le site parent pour se reconnecter.

Mes questions:

  1. Est-ce la bonne approche?
  2. Comment stocker le jeton JWT? Un biscuit? Ou dans la base de données, avec les informations de l'utilisateur comme identifiant unique? Remarque: les utilisateurs ne seront pas enregistrés sur le site WP.
  3. Comment vérifier l'expiration?

Il existe un plug-in WP pour JWT mais il n’existe pas de documentation à ce sujet. Par conséquent, je ne suis pas sûr qu’il me soit utile.

8
Rutwick Gangurde

Ceci est apparu comme une notification en raison de l'upvote. Voici comment je l'ai résolu.

  1. Le noeud final codé dans l'application que je suis censé authentifier prépare le jeton.
  2. Le jeton doit être au format spécifié.
  3. Il devrait ensuite être codé en base 64 et chiffré par hachage.
  4. Le gestionnaire wp_init doit être utilisé pour gérer la demande POST envoyée par le noeud final afin d'extraire le jeton.
  5. La clé sera partagée d'une autre manière, utilisée pour le déchiffrement.
  6. Une fois le jeton extrait, comparez-le avec un jeton généré localement avec les mêmes informations.
  7. Stockez-le dans un cookie et vérifiez-le à chaque accès à la page. Vous pouvez l'exclure après un certain temps ou continuer à augmenter la tranche de temps à chaque accès à la page.

Le point final peut être dans n'importe quelle langue. C'est aussi le flux général de celui-ci, vous pouvez l'utiliser n'importe où.

7
Rutwick Gangurde

L'activation de l'authentification unique dans WordPress m'a pris plus de 18 heures de lutte, mais pourrait ne vous prendre que quelques minutes:

En gros, vous voudrez utiliser https://wordpress.org/plugins/wp-force-login/ et une version modifiée de https://as.wordpress.org/plugins/jwt-authenticator/ puis créez un point de terminaison protégé par une autorisation sur votre site principal, qui génère un JWT (jeton Web JSON) et redirige vers l'URL spéciale de votre site WordPress.

Voir code complet ici .

0
Ryan