gpt4 book ai didi

c# - 从 TokenCredential 对象 (.NET) 获取用户数据

转载 作者:行者123 更新时间:2023-12-03 00:00:58 25 4
gpt4 key购买 nike

我正在构建一个 .NET core tool (控制台应用程序)需要使用 SecretClient 访问某些 Azure Keyvault secret 。该客户需要 TokenCredential我使用DefaultAzureCredential() .

客户端已成功通过身份验证并检索 secret ,但是我可以知道使用了流程中的哪种方法(即环境、缓存、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);

我检查了credential对象但没有看到任何有用的信息来获取用户名。我想要 Console.WriteLine 类似 Successfully logged in with <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="502035203510243523247e333f3d" rel="noreferrer noopener nofollow">[email protected]</a> using SharedTokenCacheCredential

最佳答案

我首先通过 GetToken 获取 jwt 来获取 upn方法,然后用 JwtSecurityTokenHandler 解析它。不是我正在寻找的方法,但它有效,我想知道是否有更干净的方法。

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;

关于c# - 从 TokenCredential 对象 (.NET) 获取用户数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64901059/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com