【发布时间】:2021-09-08 16:26:16
【问题描述】:
我正在尝试使用托管标识在 azure keyvault 中设置机密。我现在面临两个问题。希望有人可以帮助我。
代码:
var client = new SecretClient(new Uri("keyvaulturl"),
new DefaultAzureCredential(new DefaultAzureCredentialOptions()
{ ExcludeManagedIdentityCredential = true }));
await client.SetSecretAsync(new KeyVaultSecret(keyName,
serializer.SerializeObject(someobject)));
问题一:
DefaultAzureCrendetialOption 不适用于托管标识,但是当我将 ExcludeManagedIdentityCredential 设置为 true 时,它能够回退到下一个身份验证提供程序(必须是 azure cli)。我不确定为什么会发生这种情况,因为在相同代码运行前几天,我能够使用相同的代码设置和检索 keyvault 机密。(当然不使用任何 DefaultAzureCredentialOptions 参数)。
请注意,此问题仅发生在我的本地环境中,并且托管身份在部署在 azure 中时可以正常工作。
问题 2:
当为本地开发设置 ExcludeManagedIdentityCredential 为 true 时,我开始看到另一个问题,它给我的错误是缺少 api-version。我不明白为什么在使用 azure .net sdk 时需要在哪里指定 api 版本。
错误:
服务请求失败。 状态:400(错误请求)
内容: {"error":{"code":"BadParameter","message":"api-version 必须指定"}}
【问题讨论】:
-
报错说它需要请求中的api-version查询参数。这是在 API 构建 REST 请求时完成的。你在本地复制这个吗?您使用的是官方的 Microsoft Key Vault 库还是其他东西?
标签: azure azure-keyvault azure-managed-identity defaultazurecredential