2017-05-08 1 views
1

Je cherchais une réponse exacte, mais il semble que la plupart des réponses soient appelées par des clients et hors de la portée. Question: J'ai déjà un jeton d'accès au jeton d'accès. Comment obtenir une réclamation en utilisant le code C# donné un jeton d'accès SEULEMENT?Comment extraire et obtenir une revendication de jeton?

Je pense: Ci-dessous sont les mêmes questions, mais pas de réponses je pense.

How to get the claims out of a authenticated SecurityToken

How do I read claims from my Oauth token?

+0

Pour plus de précisions: Vous voulez, sur le serveur, identifier les demandes d'un utilisateur donné que son jeton porteur? –

+0

oui serait-ce possible? – user1960948

+0

Qu'en est-il de celui-ci? http://stackoverflow.com/questions/26357054/return-more-info-to-the-client-using-oauth-bearer-tokens-generation-and-owin-in –

Répondre

1

Install-Package Newtonsoft.Json

Le jeton d'accès est juste JSON base64. Vous pouvez analyser le jeton comme suit

 string token = 
      "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ"; 
     var parts = token.Split('.'); 
     var decoded = Convert.FromBase64String(parts[1]); 
     var part = Encoding.UTF8.GetString(decoded); 
     var jwt = JObject.Parse(part); 
     var name = jwt["name"].Value<string>(); 

MISE À JOUR

  1. Parsing jeton d'accès sur le client n'est pas recommandé, jeton d'accès doit être analysé uniquement sur le serveur de ressources.
  2. Vous devez valider le jeton d'accès sur le serveur de ressources pour que le code soit sûr que le jeton n'a pas été altéré en cours de route.
  3. La plupart du temps, vous n'avez pas besoin d'analyser le jeton comme ci-dessus, utilisez simplement une bibliothèque JWT recommandée qui effectue à la fois la validation et l'analyse. par exemple.

    app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions());