gpt4 book ai didi

.net - Visual Studio 2022 中的 Azure 服务身份验证即使在注销后也能正常工作

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

我正在开发 ASP.NET Core Web API 项目。在此项目中,我使用 Azure.Security.KeyVault.SecretsSecretClient 类从 key 保管库获取 secret 。

当我使用我的个人 Microsoft 帐户登录 Visual Studio 时,以及在不登录 Visual Studio 的情况下,我都可以从 Key Vault 中获取 secret 。我想知道 SecretClient 类如何对用户进行身份验证?即使没有登录 Visual Studio,如何才能获取 Azure AD token 以使用 Azure key 保管库对自身进行身份验证以检索 secret ?

下面是我在 Program.cs (.NET 6) 文件中用于注入(inject) SecretClient 依赖项的代码:

using backendapp.Services.Contracts;
using backendapp.Services;
using Microsoft.Extensions.Azure;
using backendapp.Services.Repository;

namespace backendapp;

public class Program
{
public static void Main(string[] args)
{
var builder = WebApplication.CreateBuilder(args);

// Add services to the container.

builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
builder.Services.AddAzureClients(azureClientFactoryBuilder =>
{
azureClientFactoryBuilder.AddSecretClient(builder.Configuration.GetSection("KeyVault"));
});
builder.Services.AddSingleton<IKeyVaultManager, KeyVaultManager>();
builder.Services.AddSingleton<IDocumentClientWrapper, DocumentClientWrapper>();
builder.Services.AddSingleton<IDbManager, DbManager>();
builder.Services.AddSingleton<IEmployeeRepository, EmployeeRepository>();

var app = builder.Build();

// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}

app.UseHttpsRedirection();

app.UseAuthorization();

app.MapControllers();

app.Run();
}
}

还在 appsettings.json 中,我有一个 KeyVault 部分,其中只有一个 VaultUri 条目。

下面是我的 KeyVaultManager 类,它使用 SecretClient

    public class KeyVaultManager : IKeyVaultManager
{
private SecretClient _secretClient;

public KeyVaultManager(SecretClient secretClient)
{
_secretClient = secretClient;
}

public async Task<string> GetSecretAsync(string secretName)
{
try
{
KeyVaultSecret keyVaultSecret = await _secretClient.GetSecretAsync(secretName);
return keyVaultSecret.Value;
}
catch(Exception ex)
{
throw;
}
}
}

我想知道如何在不登录 Visual Studio 的情况下从我的个人帐户下的 keyvault 获取 secret 。 enter image description here

最佳答案

Azure 身份验证利用各种方法对 Azure 服务进行身份验证,并按特定顺序进行尝试。

您可以查看AzureDefaultCredentials文档以查看不同的机制以及尝试它们的顺序。

您很可能仍在使用 Azure Cli 登录。

关于.net - Visual Studio 2022 中的 Azure 服务身份验证即使在注销后也能正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76550785/

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