Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在没有JWT的情况下从访问令牌获取用户数据_C#_Azure_Azure Active Directory_Access Token_Azure Ad Graph Api - Fatal编程技术网

C# 如何在没有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.

我正在从Azure AD登录获取访问令牌。 但我不想使用JWT dll从访问令牌中提取数据。 所以我需要一个替代的解决方案。 这是我在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的解决方案。

我不会问你为什么不想使用你的库来达到它的目的。无论如何,JWT只是3个以64进制编码的字符串,并与“.”连接在一起(假设其已签名但未加密)

因此:


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

仅解码base 64编码字符串的问题在于您没有验证签名。因此,您不能保证JWT令牌来自您期望的源代码。事实上,但我对这个问题的理解是AZAD基础设施已经对JWT进行了身份验证。
var split = jwt.Split('.')
var token = Convert.FromBase64String(split([1]))