C# 从令牌凭据对象(.NET)获取用户数据

C# 从令牌凭据对象(.NET)获取用户数据,c#,azure,.net-core,C#,Azure,.net Core,我正在构建一个(控制台应用程序),需要使用。此客户端需要一个我使用的 客户端已成功通过身份验证并检索机密,但是我是否可以知道使用了流中的哪种方法(即环境、缓存、CLI、交互)?我想显示用于登录的用户名,因为您可能在SharedCache中有一个帐户,但您可能想使用另一个帐户 var credentials = new DefaultAzureCredential(); var secretClient = new SecretClient(new Uri(configuration["

我正在构建一个(控制台应用程序),需要使用。此客户端需要一个我使用的

客户端已成功通过身份验证并检索机密,但是我是否可以知道使用了流中的哪种方法(即环境、缓存、CLI、交互)?我想显示用于登录的用户名,因为您可能在SharedCache中有一个帐户,但您可能想使用另一个帐户

var credentials = new DefaultAzureCredential();
var secretClient = new SecretClient(new Uri(configuration["Authentication:KeyVaultUri"]), credentials);

// Just using the client to retrieve values
var settings = JsonSerializer.Deserialize<AppSettingsKeys>((await secretClient.GetSecretAsync(configuration["Authentication:SecretName"])).Value.Value);
var-credentials=newdefaultazurecredential();
var secretClient=new secretClient(新Uri(配置[“身份验证:KeyVaultUri]”),凭证);
//只是使用客户端检索值
var settings=JsonSerializer.Deserialize((等待secretClient.GetSecretAsync(配置[“身份验证:SecretName]”)).Value.Value);

我检查了
credential
对象,但没有看到任何有助于获取用户名的内容。我想使用Console.WriteLine之类的
成功登录pepe@test.com使用SharedTokenCacheCredential

我能够获得
upn
,方法是首先使用该方法获取jwt,然后使用。 这不是我想要的方法,但它是有效的,我想知道是否有更干净的方法

var credential = new DefaultAzureCredential();
var secretClient = new SecretClient(new Uri(configuration["Authentication:KeyVaultUri"]), credential);

var settings = JsonSerializer.Deserialize<AppSettingsKeys>((await secretClient.GetSecretAsync(configuration["Authentication:SecretName"])).Value.Value);

var token = await credential.GetTokenAsync(
                            new Azure.Core.TokenRequestContext(
                                new[] { "https://vault.azure.net/.default" }));

var handler = new JwtSecurityTokenHandler();
var jsonToken = handler.ReadToken(token.Token) as JwtSecurityToken;
var upn = jsonToken.Claims.First(c => c.Type=="upn").Value;
var-credential=newdefaultazurecredential();
var secretClient=new secretClient(新Uri(配置[“身份验证:KeyVaultUri”]),凭证);
var settings=JsonSerializer.Deserialize((等待secretClient.GetSecretAsync(配置[“身份验证:SecretName]”)).Value.Value);
var token=await credential.GetTokenAsync(
新建Azure.Core.TokenRequestContext(
新[]{”https://vault.azure.net/.default" }));
var handler=新的JwtSecurityTokenHandler();
var jsonToken=handler.ReadToken(token.token)作为JwtSecurityToken;
var upn=jsonToken.Claims.First(c=>c.Type==“upn”).Value;

您是指中的
upn
吗?是的,我需要
upn
,谢谢。我可以通过调用该方法并使用JwtSecurityHandler对其进行解析来获取jwt,但我想知道是否有一种更简单的方法可以提供TokenCredential。