Authentification JWT avec WP - Approche

8

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

  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 est expiré, l'utilisateur sera redirigé vers le site parent pour se reconnecter.

Mes questions:

  1. Est-ce la bonne approche?
  2. Comment puis-je 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 y a un plugin WP pour JWT mais aucune documentation pour cela, donc je ne suis pas sûr s'il servira mon objectif.

Rutwick Gangurde
la source
hmmm wtf est jwt?
Mark Kaplun
Ajout de liens pertinents. Vérifier.
Rutwick Gangurde
ok, maintenant je sais ce qu'est JWT, je ne comprends toujours pas la question et pourquoi est-ce spécifique à wordpress. N'y a-t-il pas un guide des meilleures pratiques pour cela? Quoi qu'il en soit, les recommandations de plugin / bibliothèque sont hors sujet ....
Mark Kaplun
1
Je ne veux pas de recommandation de plugin, j'écris mon propre code. Suppression de la dernière ligne qui vous a amené à le penser.
Rutwick Gangurde

Réponses:

8

Cela s'est présenté comme une notification en raison du vote positif. Voici comment je l'ai résolu.

  1. Le point de terminaison codé dans l'application avec laquelle je suis censé m'authentifier prépare le jeton.
  2. Le jeton doit être au format spécifié.
  3. Il doit ensuite être codé en base 64 et chiffré par hachage.
  4. Le wp_initgestionnaire doit être utilisé pour gérer la demande POST envoyée par le point d'extrémité, pour extraire le jeton.
  5. La clé sera partagée via une autre manière, utilisée pour le déchiffrement.
  6. Une fois le jeton extrait, comparez-le à 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'exirer 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 également le flux général de celui-ci, vous pouvez l'utiliser où vous le souhaitez.

Rutwick Gangurde
la source
0

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

Fondamentalement, 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éer une authentification protégé sur votre site principal qui génère un JWT (JSON Web Token) et redirige vers l'URL spéciale de votre site WordPress.

Voir le code complet ici .

Ryan
la source