web-dev-qa-db-fra.com

Utiliser JWT pour authentifier un utilisateur avec un système externe?

Nous avons une application WordPress qui va être liée à un système parent. Nous voulons utiliser JWT pour l'authentification avec le parent. L'idée est que si l'utilisateur n'est pas connecté au parent, il ne devrait pas être autorisé à accéder au site WordPress (seulement le front-end, toujours, le tableau de bord est strictement réservé à l'administrateur). Si l'utilisateur essaie d'accéder à l'application WordPress via un signet ou un historique, nous devrons l'envoyer au site parent pour qu'il se connecte. Aucun appel d'API ne sera effectué sur le site parent, à l'exception de l'authentification, car le WP app a ses propres données. Cela m'amène aux questions.

  1. JWT convient-il à notre situation?
  2. Comment pourrais-je l'intégrer à WordPress?
  3. Dois-je modifier le système d'authentification natif de WP pour le rendre compatible avec JWT?

Mon approche actuelle est la suivante: un utilisateur se connecte au système parent et suit le lien vers le site WordPress. Le jeton JWT sera envoyé en tant que demande d'envoi au site WP. Je vais analyser la demande, en utilisant probablement l'action init, et obtenir le nom d'utilisateur et le mot de passe WP. Je définirai ensuite le jeton avec une heure d'expiration (est-ce vraiment requis?) Et je connecterai l'utilisateur. Si l'utilisateur tente d'accéder à l'application via un signet ou un historique, je le redirigerai vers le site parent.

Est-ce la bonne façon? Y a-t-il un meilleur moyen? Je suis heureux de fournir plus d'informations si nécessaire.

4
Rutwick Gangurde

Un commentaire récent a attiré mon attention sur cette question que j'avais postée. J'avais également posté une autre question concernant ce sujet, que j'avais ensuite résolue et posté une réponse, ici: Authentification JWT avec WP - Approche

Copiez cette réponse ici, de sorte qu'elle aide quelqu'un qui tombe par hasard sur cette implémentation:

  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ù.

1
Rutwick Gangurde