部署后无法获取 Azure 密钥保管库机密

Unable to get Azure keyvault secret after deployment

我试图在我的应用程序中获取 keyvault 秘密,它在本地工作正常(在使用我的 AD 凭据执行应用程序时),但在部署我的 AppService 后它不工作。以下是我在 Azure 门户中分配的代码和角色 (IAM)。我和 AppService 的(角色:密钥保管库贡献者)。

public async Task<string> GetSecret()
    {
        var keyVaultUrl = "https://mykv.vault.azure.net/secrets/mysecret";
        AzureServiceTokenProvider azureServiceTokenProvider = new AzureServiceTokenProvider();
        KeyVaultClient keyVaultClient = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback));
        var secret = await keyVaultClient.GetSecretAsync(keyVaultUrl)
            .ConfigureAwait(false);
        return secret.Value;
    }
public myclass()//ctor
    {
    var sce=GetSecret().Result;
    }

当您将应用程序部署到 Azure 时,转到您的应用程序服务 > Identity > turn on 您的系统分配的托管标识。

然后转到您的 Azure Key Vault,单击 Access policiesadd access policy

选择 Secret permission,至少要有 Get 和 List 权限。然后在 Select principal 属性中,单击您之前注册的 webapp 服务主体。

更多的细节可以参考Connect to azure key vault from an ASP.NET core app using azure managed identity的教程。