2017-05-08 22 views
1

我一直在尋找一個確切的答案,但它似乎大多數答案是客戶調用和超出範圍。如何提取並從令牌獲得索賠?

問題:我已經擁有訪問令牌訪問令牌。如何獲得使用C#代碼的索賠只給予訪問令牌?

我想:下面是同樣的問題,但沒有答案,我認爲適合。

How to get the claims out of a authenticated SecurityToken

How do I read claims from my Oauth token?

+0

對於澄清:你想,在服務器上,確定只給他承載令牌的用戶的聲明? –

+0

是的,這可能嗎? – user1960948

+0

這個呢? http://stackoverflow.com/questions/26357054/return-more-info-to-the-client-using-oauth-bearer-tokens-generation-and-owin-in –

回答

1

安裝,包裝Newtonsoft.Json

訪問令牌只是base64編碼JSON。您可以按如下

 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>(); 

UPDATE

  1. 解析客戶端訪問令牌不推薦,訪問令牌 只應在資源服務器上解析解析令牌。
  2. 您必須驗證資源服務器上的訪問令牌,以使 確定該令牌未被篡改。
  3. 大多數情況下,您不需要像上面那樣解析令牌,只需使用 推薦的JWT庫即可執行驗證和解析。例如

    app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions());