我试图在我的应用程序中获取keyvault秘密,它是在本地工作正常(而执行应用程序与我的AD凭证),但部署我的AppService后,它是不工作。下面是我在Azure Portal中分配的代码和角色(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时,进入你的App服务>。Identity
> turn on
您的系统分配的托管身份。
然后进入你的 azure 密钥库,点击 Access policies
和 add access policy
.
选择 Secret permission
至少有 获取和列表 允许。然后在 Select principal
属性,点击你之前注册的webapp服务委托人。
更多的细节,你可以参考这个教程来了解 使用 azure 管理身份从 ASP.NET 核心应用程序连接到 azure 密钥库。.