首页 > 解决方案 > 从 Azure Identity 获取用户名

问题描述

我在一个简单的 .NET Core 控制台应用程序中使用新的 Azure.Identity 包 ( https://docs.microsoft.com/en-us/dotnet/api/overview/azure/identity-readme ) 登录到 Azure,例如:

var credential = new DefaultAzureCredential()

工作正常,但现在我想获取当前登录用户的姓名、电子邮件等。有谁知道如何做到这一点?

标签: c#azureauthentication

解决方案


您可以GetTokenAsync先获取令牌,然后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;

推荐阅读