Azure active directory 部署后无法获取Azure keyvault机密

Azure active directory 部署后无法获取Azure keyvault机密,azure-active-directory,azure-keyvault,Azure Active Directory,Azure Keyvault,我正在尝试在我的应用程序中获取keyvault secret,它在本地运行正常(使用我的AD凭据执行应用程序时),但在部署我的AppService后,它不工作。下面是我在Azure Portal中分配的代码和角色(IAM)。(角色:主要vault贡献者)适用于Me和AppService public async Task<string> GetSecret() { var keyVaultUrl = "https://mykv.vault.azure.net/

我正在尝试在我的应用程序中获取keyvault secret,它在本地运行正常(使用我的AD凭据执行应用程序时),但在部署我的AppService后,它不工作。下面是我在Azure Portal中分配的代码和角色(IAM)。(角色:主要vault贡献者)适用于Me和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;
    }
public异步任务GetSecret()
{
var keyVaultUrl=”https://mykv.vault.azure.net/secrets/mysecret";
AzureServiceTokenProvider AzureServiceTokenProvider=新的AzureServiceTokenProvider();
KeyVaultClient KeyVaultClient=new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback));
var secret=await keyVaultClient.GetSecretAsync(keyVaultUrl)
.配置等待(错误);
返回秘密值;
}
公共myclass()//ctor
{
var sce=GetSecret().Result;
}

将应用程序部署到azure时,请转到应用程序服务>
标识
打开系统分配的托管标识

然后转到azure key vault,单击
访问策略
添加访问策略

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

有关更多详细信息,请参阅本教程