2017-10-20 39 views
0

Pour donner des renseignements généraux, ours avec moi,Quelles sont les meilleures pratiques pour gérer les JWT dans une application .NET Core 2.0 avec un frontal React?

  • Nous avons un service OAuth externe existant qui est utilisé pour l'authentification partagée dans l'ensemble de nos applications. Il a un formulaire de connexion qui est utilisé pour l'authentification de l'utilisateur et fournit des JWT pour ses API, appelées dans l'application sur laquelle je travaille actuellement.
  • L'application que je travaille utilise .NET Core 2.0 avec un frontal React. Le côté serveur est essentiellement responsable de la gestion du jeton pour les API externes et de la fourniture d'API 'proxy' pour que le client React appelle, qui à son tour appelle les API externes. Essentiellement, l'architecture est comme n'importe quelle autre application Web API/MVC standard, mais au lieu de saisir directement des données à partir d'une base de données, elle appelle simplement d'autres API externes.

Dans le contexte de l'application .NET Core, elle utilise l'authentification JWT pour ses API. Une fois que l'utilisateur s'est authentifié avec ce service externe, il aura un JWT pour les API externes (stockées dans la session) et un autre JWT pour les API internes du proxy (passées au client dans un cookie). Ainsi, le client appelle ("api/users"), qui est acheminé vers mon contrôleur, autorisé à l'aide de JWT, ce contrôleur appelle un UserService, qui utilise le JWT stocké dans la session pour appeler l'API externe. .

React client fait appel API avec jeton -> .NET API Core Grabs JWT stockée en session -> utilise JWT pour faire appel à l'API externe

Tout cela fonctionne très bien, mais maintenant je suis en cours d'exécution quelques problèmes avec l'actualisation du client JWT. Je ne transmets actuellement qu'un jeton d'accès au client dans un cookie, mais je dois également passer un jeton d'actualisation au client afin qu'il puisse récupérer un nouveau jeton d'accès lorsque le délai d'expiration est écoulé, ce que je ne suis pas. en train de faire. J'ai aussi besoin de passer le temps d'expiration du jeton. Est-il sensé de sérialiser tout cela dans un objet JSON et de le transmettre dans un cookie? Quel serait un bon moyen de faire parvenir tout cela au client? Essentiellement, j'essaie d'arriver à un point où le client va vérifier, "Est-ce que mon jeton a déjà expiré?", Si oui, utilisez le jeton d'actualisation pour en obtenir un nouveau, sinon continuez avec l'appel de l'API.

Désolé si toutes ces informations sont trop compliquées pour une question simple, essayant juste de donner un peu de contexte.

+0

Utilisez-vous Identity Server? quel est le fournisseur d'identité? – Coding

+0

Quelle est votre question sur reactjs? – webdeb

Répondre

0

Si vous utilisez Identity Server, vous pouvez vérifier les jetons de rafraîchissement here

+0

Je n'utilise pas Identity pour le moment. Pour un peu plus de contexte, ceci est un guide approximatif de ce que j'utilise pour l'authentification JWT: https://stackoverflow.com/questions/45715394/asp-net-core-2-0-bearer-auth-without-identity – Blake