C# 如何在没有JWT的情况下从访问令牌获取用户数据
我正在从Azure AD登录获取访问令牌。 但我不想使用JWT dll从访问令牌中提取数据。 所以我需要一个替代的解决方案。 这是我在JWT中的示例代码C# 如何在没有JWT的情况下从访问令牌获取用户数据,c#,azure,azure-active-directory,access-token,azure-ad-graph-api,C#,Azure,Azure Active Directory,Access Token,Azure Ad Graph Api,我正在从Azure AD登录获取访问令牌。 但我不想使用JWT dll从访问令牌中提取数据。 所以我需要一个替代的解决方案。 这是我在JWT中的示例代码 var handler = new JwtSecurityTokenHandler(); JwtSecurityToken tokenS = handler.ReadToken(data.AccessToken) as JwtSecurityToken; var claims = tokenS.
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的解决方案。我不会问你为什么不想使用你的库来达到它的目的。无论如何,JWT只是3个以64进制编码的字符串,并与“.”连接在一起(假设其已签名但未加密) 因此:
中间的一位是json中的标记,使用newtonsoft读取它仅解码base 64编码字符串的问题在于您没有验证签名。因此,您不能保证JWT令牌来自您期望的源代码。事实上,但我对这个问题的理解是AZAD基础设施已经对JWT进行了身份验证。
var split = jwt.Split('.')
var token = Convert.FromBase64String(split([1]))