Où stocker Porteur du Jeton dans MVC, Web API
Scénario
J'ai un ASP.NET l'API Web qui utilise l'authentification OAuth Flux de mots de Passe à fournir au Porteur des Jetons pour obtenir l'accès à ses ressources.
Je suis maintenant dans le processus de fabrication d'un MVC de l'application qui vont avoir besoin d'utiliser cette API.
Le plan est d'avoir les contrôleurs MVC faire des appels à l'API au nom du navigateur client.
Les requêtes ajax depuis le navigateur va frapper les contrôleurs MVC et puis les appels d'API sont faites. Les résultats sont ensuite communiqués au client sous forme de JSON et poignées en java-script.
Le client ne doivent jamais communiquer directement avec l'API.
Arriver Authentifié.
J'ai besoin de trouver la meilleure façon de gérer le Porteur du Jeton, une fois qu'il a été reçu dans le MVC application via un appel à l'api web jeton de point de terminaison.
J'ai besoin d'utiliser ce porteur de jeton pour la suite des appels à l'api.
Mon plan est de le stocker dans le System.Web.HttpContext.Current.Session["BearerToken"]
Je peux alors créer un personnalisé AuthorizationAttribute
qui va vérifier pour voir si un BearerToken est présente dans la HttpContext, si elle n'est pas présente, le client devra réexaminer le jeton d'extrémité.
Cela vous semble faisable?
Je pose la question pour les peuples avis sur ce que je ne suis pas convaincu que la meilleure solution pour mon projet.
Im faisant le wep appel de l'api à l'aide d'un objet HttpClient dans le MVC app
OriginalL'auteur Derek | 2016-09-13
Vous devez vous connecter pour publier un commentaire.
J'ai réussi à venir avec quelque chose qui je pense fonctionne très bien.
Je suis en utilisant le Owin Middleware pour l'Authentification par Cookie.
Au sein de l'Application MVC, j'ai un Owin fichier de Démarrage où le Cookie d'Authentification est configuré :-
J'ai ensuite fait un AccountController avec deux méthodes d'Action pour la connexion et À la déconnexion :-
De La Connexion.
Déconnexion
Protéger les Ressources
Je suis userSession objet NULL sur mon HomeController/Index
userSession sera nulle si vous n'êtes pas à l'aide de l'injection de dépendance dans votre application.
oui vous avez raison, pouvez-vous m'aider à résoudre cela?
merci Derek, j'ai réussi à fixe. solution sympa
OriginalL'auteur Derek
Puisque vous avez mentionné que vous utilisez HttpClient(). Je n'ai qu'une chose semblable à l'aide de HttpClient()-
Obtenir un jeton
Utiliser le jeton pour publier des données
Même si vous stockez le Porteur du jeton dans HttpContext, vous aurez besoin de prendre soin de l'jeton date d'expiration qui est défini dans l'API du Web. La validation de l'existence de jeton juste dans la session ne va pas aider depuis l'ancien jeton ne sera pas valide après l'expiration du temps.
OriginalL'auteur Souvik Ghosh