2016-02-09 39 views
0

我有我自己的自定義OAuthAuthorizationServerProvider實現。我正在使用基於令牌的安全性與WebApi進行通信。將字符串OAuth令牌轉換爲ClaimsPrincipal

在標題中有一個帶有不記名令牌的Authorization標題。這與WebApi完美結合。

我的應用程序對第​​三方MVC組件有依賴性。我想傳遞不記名標記作爲查詢字符串的一部分,並將其轉換爲ClaimsPrincipal以檢索當前用戶。

我可以在C#中調用一個不記名的令牌作爲字符串轉換爲ClaimsPrincipal(或任何可以讓我讀取用戶id聲明的對象)?

+0

如果'承載令牌'是一個jwt,你可以使用:http://www.nuget.org/packages/System.IdentityModel.Tokens.Jwt/5.0.0-rc1-211161024然後你有權訪問所有索賠。 –

+0

你能否更好地闡述你的需求?他們對我並不完全清楚。您的應用中的任何控制器應該都會收到一個'this.User',它已經由您使用的任何身份驗證框架設置。然後,您可以將'var identity = User.Identity'設置爲ClaimsIdentity'並從那裏查找所有聲明。也許獲取令牌本身並不那麼容易。 – superjos

回答

0

您可以訪問OAuthAuthorizationServerOptions(在我的情況下名爲OAuthOptions),然後訪問令牌格式並使用取消保護功能。

ticket = Startup.OAuthOptions.AccessTokenFormat.Unprotect(token); 

一旦你有了令牌,你可以很容易地得到理賠。