Obtenir IPrincipal de OAuth Porteur du Jeton dans OWIN
J'ai ajouté avec succès l'authentification OAuth pour mon WebAPI 2 projet à l'aide d'OWIN. - Je recevoir des jetons et de les utiliser dans l'en-Tête HTTP pour accéder aux ressources.
Maintenant je veux utiliser ces jetons aussi sur d'autres canaux pour l'authentification ne sont pas la norme des requêtes HTTP que le OWIN modèle est fait pour. Par exemple, je suis en utilisant les WebSockets où le client doit envoyer le Porteur OAuth Jeton d'authentification.
Sur le côté serveur, je reçois le jeton à travers le WebSocket. Mais comment puis-je maintenant, mettez ce jeton dans la OWIN pipeline pour extraire le IPrincipal et ClientIdentifier-il? Dans la WebApi 2 modèle, tout cela est abstrait pour moi, il n'y a rien que j'ai à faire pour le faire fonctionner.
Donc, en gros, j'ai le jeton comme une chaîne et que vous voulez utiliser OWIN à l'accès à l'utilisateur des informations codées dans le jeton.
Je vous remercie d'avance pour l'aide.
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé une partie de la solution dans ce post de blog: http://leastprivilege.com/2013/10/31/retrieving-bearer-tokens-from-alternative-locations-in-katanaowin/
J'ai donc créé mon propre Fournisseur comme suit:
Puis j'avais besoin de l'ajouter à mon Application au Démarrage.Auth.cs comme ceci:
Avec une coutume AuthenticationTokenProvider, je peux récupérer toutes les autres valeurs à partir du jeton tôt dans le pipeline:
Et maintenant, par exemple dans mon WebSocket Virage, je peux les récupérer ClientId et d'autres comme ceci:
Par défaut, OWIN utilisation ASP.NET la machine clé de la protection des données à protéger le jeton d'accès OAuth lorsqu'il est hébergé sur IIS. Vous pouvez utiliser MachineKey classe System.Web.dll pour ôter la protection de l'jetons.
Ensuite, la construction d'un TicketDataFormat pour obtenir le AuthenticationTicket objet où vous pouvez obtenir le ClaimsIdentity et AuthenticationProperties.
Pour ôter la protection d'autres OAuth jetons, il vous suffit de changer la _purpose de contenu. Pour des informations détaillées, voir OAuthAuthorizationServerMiddleware classe ici:
http://katanaproject.codeplex.com/SourceControl/latest#src/Microsoft.Owin.Security.OAuth/OAuthAuthorizationServerMiddleware.cs
en plus de johnny-qian réponse, à l'aide de cette méthode est la meilleure pour créer DataProtector. johnny-qian réponse, dépend d'IIS et échoue sur auto-hébergé scénarios.
Qu'est-ce que votre jeton comme, est-il chiffrer la chaîne ou une chaîne formatée, c'est quoi le format?
J'ai mon code:
La c.Le billet est toujours null.