WaitingForActivation而不是密钥保管库秘密值(在Azure中,为什么?

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

我正在尝试使用Azure中的Manged Identity连接到我的Key Vault。为此,我在Vault下的KeyVault下的appsettings.json中添加了具有关键文件库名称的条目。我还对Program.cs进行了以下更改,基本上添加了类型为IConfiguration的变量来帮助我阅读appsettings.json和整个ConfigureAppConfiguration部分。

public IConfiguration Configuration { get; set; }

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureAppConfiguration(builder =>
        {
            // use Identity Management
            var configuration = new ConfigurationBuilder().AddJsonFile("appsettings.json").Build();
            var keyVaultUrl = string.Format("https://{0}.vault.azure.net/", configuration.GetSection("KeyVault").GetSection("Vault").Value);

            var azureServiceTokenProvider = new AzureServiceTokenProvider();
            var keyVaultClient = new KeyVaultClient(
                new KeyVaultClient.AuthenticationCallback(
                    azureServiceTokenProvider.KeyVaultTokenCallback));
            builder.AddAzureKeyVault(keyVaultUrl, keyVaultClient, new DefaultKeyVaultSecretManager());

            var secretValue = keyVaultClient.GetSecretAsync(keyVaultUrl, "MyApp-MyDatabaseSettings--MyDatabasePassword");
        })
        .ConfigureWebHostDefaults(webBuilder =>
        {
            webBuilder.UseStartup<Startup>();
        });

当我将鼠标悬停在secretValue上时,我得到的状态为WaitingForActivation(而不是实际值),知道为什么吗?

编辑:我确实转到网络应用>身份>系统分配>,然后将其设置为开启。

c# azure azure-keyvault secret-key azure-managed-identity
1个回答
0
投票

我通过执行此操作使其工作:

var secretVal = Task.Run(async () => await keyVaultClient.GetSecretAsync(keyVaultUrl, "MyApp-MyDatabaseSettings--MyDatabasePassword")).Result.Value;

如果有人知道更好的方法,我将保持开放状态,以供其他答案使用。

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