如何在没有JWT的情况下从访问令牌获取用户数据

时间:2017-12-07 17:33:54

标签: c# azure azure-active-directory access-token azure-ad-graph-api

我从Azure AD登录获取Access令牌。 但我不想使用JWT dll从Access Token中提取数据。 所以我需要一个替代解决方案。 这是我在JWT中的示例代码

 var handler = new JwtSecurityTokenHandler();
            JwtSecurityToken tokenS = handler.ReadToken(data.AccessToken) as JwtSecurityToken;
            var claims = tokenS.Claims;
            var username = claims.FirstOrDefault(s => s.Type == "email").Value;

使用dll:使用System.IdentityModel.Tokens.Jwt; 我不希望这个dll用于提取数据。我不需要使用dll就需要另一种解决方案。

1 个答案:

答案 0 :(得分:1)

我不会问为什么你不想使用你所拥有的库来达到其预期的目的。无论如何,JWT只是3个base 64编码的字符串与'连接。(假设它已签名但未加密)

所以:

var split = jwt.Split('.')
var token = Convert.FromBase64String(split([1]))

中间位是json中的标记,使用newtonsoft来读取它