简体   繁体   English

通过应用程序配置获取 KeyVault 值

[英]Fetching KeyVault values through App Configuration

I'd like to fetch both App Configuration and KeyVault values directly from IConfiguration.我想直接从 IConfiguration 获取 App Configuration 和 KeyVault 值。 This is from a console application in.Net 7这是来自 .Net 7 中的控制台应用程序

Program.cs:程序.cs:

var host = Host.CreateDefaultBuilder()
    .ConfigureLogging(a => a.AddConsole())
    .ConfigureHostConfiguration(config => config.AddEnvironmentVariables())
    .ConfigureAppConfiguration(config =>
    {
        config.ConfigureKeyVault();
    })
    .ConfigureServices((context, services) =>
    {
        var env = context.HostingEnvironment;
        var startUp = new Startup(env);
        startUp.ConfigureServices(services);
        startUp.ConfigureConsoleMethods(services);
                
        _serviceProvider = services.BuildServiceProvider(true); 
    })
    .Build();

Extension Method:扩展方法:

public static void ConfigureKeyVault(this IConfigurationBuilder config)
{
    var settings = config.Build();

    var appConfigConnString = settings.GetConnectionString("AppConfig");
    var keyVaultEndpoint = settings.GetValue<string>("KeyVault:Endpoint");
    var kvOptions = new DefaultAzureCredentialOptions { ManagedIdentityClientId = settings.GetValue<string>("KeyVault:ClientId") };

    config.AddAzureAppConfiguration(options =>
   {
        options.Connect(appConfigConnString);
        options.ConfigureKeyVault(x => x.SetCredential(new DefaultAzureCredential(kvOptions)));
    });
}

With this setup, I can fetch my KeyVault keys like this:通过此设置,我可以像这样获取我的 KeyVault 密钥:

services.AddScoped<IApiFactory, ApiFactory>(x =>
{
    var keyVault = x.GetRequiredService<IKeyVaultService>();
                
    return new ApiFactory(
        keyVault.GetSecret("SomeObj:ClientId"),
        keyVault.GetSecret("SomeObj:ClientSecret"));
});

But I would rather get my key's using IConfiguration, like this:但我宁愿使用 IConfiguration 获取我的密钥,如下所示:

services.AddScoped<IApiFactory, ApiFactory>(x =>
{        
    return new ApiFactory(
        this.Configuration.GetValue<string>("SomeObj:ClientId"),
        this.Configuration.GetValue<string>("SomeObj:ClientSecret"));
});

Question问题

How can I fetch my KeyVault values from IConfiguration?如何从 IConfiguration 获取我的 KeyVault 值?

If you set up a key vault reference in Azure App Configuration, the secret retrieved from the key vault should be accessible from IConfiguration .如果在 Azure 应用程序配置中设置密钥保管库引用,则应该可以从IConfiguration访问从密钥保管库检索到的机密。

  • Make sure the key name (eg "SomeObj:ClientId") is the one that you set in Azure App Configuration instead of the secret name you set in Key Vault.确保密钥名称(例如“SomeObj:ClientId”)是您在 Azure 应用程序配置中设置的密钥名称,而不是您在 Key Vault 中设置的密钥名称。
  • Make sure the configuration is built before you attempt to access it.在尝试访问配置之前,请确保已构建该配置。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 从 Amazon rds 获取值以响应应用程序 - Fetching Values from Amazon rds to react app 通过terraform更新SP更新keyvault - SP renewal and update keyvault through terraform Microsoft.Extensions.Azure 在 KeyVault 中配置时注册 BlobServiceClient - Microsoft.Extensions.Azure register BlobServiceClient when configuration in KeyVault 使用 ARM 模板从 KeyVault 获取 Azure KeyVault 机密到应用服务 - Get Azure KeyVault Secrets from the KeyVault to an App Service using ARM Templates Firebase 数据未在 flutter 应用程序中获取 - Firebase data is not fetching in flutter app Azure Active Directory 应用程序服务无法使用用户凭据/令牌连接到 Azure Keyvault - Azure Active Directory app service can't connect to Azure Keyvault using user creds/token 读取应用服务的配置部分 - Reading Configuration Section of an App Service Flutter-Firebase rtdb,获取子值返回为空 - Flutter-Firebase rtdb, fetching child values return as empty 从 firebase 获取数据正常但在我重新加载应用程序时不呈现 - fetching data from firebase fine but not rendering when i reload app 在 Azure 中国连接到 KeyVault - Connect to KeyVault in Azure China
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM