Api-使用azure keyvault SecretClient .net sdk时必须指定版本
Api-version must be specified when using azure keyvault SecretClient .net sdk
我正在尝试使用托管标识在 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 中部署时工作正常。
问题二:
当为本地开发将 ExcludeManagedIdentityCredential 设置为 true 时,我开始看到另一个问题,它给我的错误是缺少 api-version。我不明白为什么以及在何处需要在使用 azure .net sdk 时指定 api 版本。
错误:
服务请求失败。
状态:400(错误请求)
内容:
{"error":{"code":"BadParameter","message":"api-必须指定版本"}}
问题一:
Managed Identity 在设计上不能用于验证 locally-running 应用程序。尝试阅读 document.
中的 重要 提示
Managed Identity cannot be used to authenticate locally-running
applications. Your application must be deployed to an Azure
service that supports Managed Identity.
问题二:
请将 Azure Key Vault 机密客户端库的版本更改为最新版本。
dotnet add package Azure.Security.KeyVault.Secrets
我在本地用 environment variables 试过 DefaultAzureCredential
。
string keyVaultName = Environment.GetEnvironmentVariable("KEY_VAULT_NAME");
var kvUri = "https://" + keyVaultName + ".vault.azure.net";
var client = new SecretClient(new Uri(kvUri), new DefaultAzureCredential());
KeyVaultSecret secret = new KeyVaultSecret("testdefault", "123456");
KeyVaultSecret result = await client.SetSecretAsync(secret);
Console.WriteLine(result.Name);
我正在尝试使用托管标识在 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 中部署时工作正常。
问题二:
当为本地开发将 ExcludeManagedIdentityCredential 设置为 true 时,我开始看到另一个问题,它给我的错误是缺少 api-version。我不明白为什么以及在何处需要在使用 azure .net sdk 时指定 api 版本。
错误:
服务请求失败。 状态:400(错误请求)
内容: {"error":{"code":"BadParameter","message":"api-必须指定版本"}}
问题一:
Managed Identity 在设计上不能用于验证 locally-running 应用程序。尝试阅读 document.
中的 重要 提示Managed Identity cannot be used to authenticate locally-running applications. Your application must be deployed to an Azure service that supports Managed Identity.
问题二:
请将 Azure Key Vault 机密客户端库的版本更改为最新版本。
dotnet add package Azure.Security.KeyVault.Secrets
我在本地用 environment variables 试过 DefaultAzureCredential
。
string keyVaultName = Environment.GetEnvironmentVariable("KEY_VAULT_NAME");
var kvUri = "https://" + keyVaultName + ".vault.azure.net";
var client = new SecretClient(new Uri(kvUri), new DefaultAzureCredential());
KeyVaultSecret secret = new KeyVaultSecret("testdefault", "123456");
KeyVaultSecret result = await client.SetSecretAsync(secret);
Console.WriteLine(result.Name);