无法使Azure KeyVault配置提供程序正常工作

问题描述 投票:1回答:1

我试图在.Net Core Console应用程序中设置Azure KeyVault配置提供程序。我已经按照this文档这样做了。

但它没有取得秘密。我可以使用KeyVaultClient来获取它。

这是完整的代码:

class Program
{
    public static IConfigurationRoot Configuration { get; set; }

    static void Main(string[] args)
    {
        var builder = new ConfigurationBuilder()
        .SetBasePath(Directory.GetCurrentDirectory())
        .AddJsonFile("appsettings.json");

        Configuration = builder.Build();

        var secretUri = $"{Configuration["Vault"]}secrets/testSecret/4438b47c28cc413f9434bcb2d3c7d7ca";

        var keyVault = new KeyVaultClient(async (string authority, string resource, string scope) => {
            var authContext = new AuthenticationContext(authority);
            var credential = new ClientCredential(Configuration["ClientId"], Configuration["ClientSecret"]);
            var token = await authContext.AcquireTokenAsync(resource, credential);

            return token.AccessToken;
        });

        var result1 = keyVault.GetSecretAsync(secretUri).Result.Value;

        builder.AddAzureKeyVault(
            Configuration["Vault"],
            Configuration["ClientId"],
            Configuration["ClientSecret"]);

        var result2 = Configuration["testSecret"];
    }
}

result1从keyvault获得价值,但result2null

不知道这里出了什么问题。

c# azure .net-core azure-keyvault
1个回答
3
投票

我也跟着你提到的documentation。如果我在添加keyVault后重新构建构建器,则可以获得该值。

 builder.AddAzureKeyVault(
            Configuration["Vault"],
            Configuration["ClientId"],
            Configuration["ClientSecret"]);
Configuration = builder.Build();
var result2 = Configuration["testSecret"];

测试结果

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.