Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.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# 从Azure Identity获取用户名_C#_Azure_Authentication - Fatal编程技术网

C# 从Azure Identity获取用户名

C# 从Azure Identity获取用户名,c#,azure,authentication,C#,Azure,Authentication,我正在一个简单的.NET核心控制台应用程序中使用新的Azure.Identity包()登录Azure,例如: var credential = new DefaultAzureCredential() 工作正常,但现在我想获取当前登录用户的姓名、电子邮件等。有人知道如何做到这一点吗?您可以先使用获取令牌,然后通过解码获取用户的用户名(upn) 您可以首先使用获取令牌,然后通过解码获取用户的用户名(upn) 在我的特定场景中,令牌中没有“upn”声明。但这种方法对于解决问题仍然非常有用。在我的特

我正在一个简单的.NET核心控制台应用程序中使用新的Azure.Identity包()登录Azure,例如:

var credential = new DefaultAzureCredential()
工作正常,但现在我想获取当前登录用户的姓名、电子邮件等。有人知道如何做到这一点吗?

您可以先使用获取令牌,然后通过解码获取用户的用户名(
upn

您可以首先使用获取令牌,然后通过解码获取用户的用户名(
upn


在我的特定场景中,令牌中没有“upn”声明。但这种方法对于解决问题仍然非常有用。在我的特定场景中,令牌中没有“upn”声明。但这种方法对于解决这个问题仍然非常有用。
var credential = new DefaultAzureCredential();
string[] scopes = new string[] { "https://graph.microsoft.com/.default" };
var token = await credential.GetTokenAsync(new Azure.Core.TokenRequestContext(scopes));

var handler = new JwtSecurityTokenHandler();
var jsonToken = handler.ReadToken(token.Token) as JwtSecurityToken;
var upn = jsonToken.Claims.First(c => c.Type == "upn").Value;