Microsoft.Azure.KeyVault.Models.KeyVaultErrorException: '操作返回无效状态代码 'BadRequest''
Microsoft.Azure.KeyVault.Models.KeyVaultErrorException: 'Operation returned an invalid status code 'BadRequest''
我试图从 .Net 4.5 控制台应用程序上的 Azure keyVault 获取机密,我按照 This tuto 进行操作,但是我收到了标题中提到的 Bad Request 错误。我必须提到我的控制台应用程序是新创建的,并且正在使用属于另一个 .Net 核心网络 api 的 clientId 和 ClientSecret,api 能够成功获取秘密,但事实并非如此在我的控制台应用程序中。请在下面找到我正在使用的代码,在 client.GetSecretAsync(vaultAddress,SecretName):
的指令中抛出异常
static void Main(string[] args)
{
Console.WriteLine($"Secret Value from Vault is: { GetVaultValue()}");
//DoVault();
Console.ReadLine();
}
static string GetVaultValue()
{
KeyVaultClient client = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(GetToken));
var vaultAddress = "https://VaultName.vault.azure.net/";
var secretName = "storageName:NameAccount";
var secret = client.GetSecretAsync(vaultAddress, secretName).GetAwaiter().GetResult();
return secret.Value;
}
static async Task<string> GetToken(string authority, string resource, string scope)
{
var clientId = "This-IS-ID";
var clientSecret = "THIS-iS-my-Secret";
ClientCredential credential = new ClientCredential(clientId, clientSecret);
var context = new AuthenticationContext(authority, TokenCache.DefaultShared);
var result = await context.AcquireTokenAsync(resource, credential);
return result.AccessToken;
}
secretName
包含冒号 :
,导致此错误。
根据我的测试,我们不允许在密钥保管库名称中包含冒号:
请检查并更正。
对于仍在寻找替代解决方案的人。我遇到过同样的问题。在我的例子中,Pfx 已过期。当Pfx密码不正确或Pfx文件格式无效时也会出现同样的错误。
如果您尝试在 Azure KeyVault 导入表单中手动添加它,您可能会收到此错误:
The content of the specified PKCS#12 X.509 certificate cannot be read.
Verify that the certificate is in valid PKCS#12 format and that the
submitted password matches the certificate's export password.
我生成了一个没有过期日期的新 Pfx 文件并解决了问题。
我试图从 .Net 4.5 控制台应用程序上的 Azure keyVault 获取机密,我按照 This tuto 进行操作,但是我收到了标题中提到的 Bad Request 错误。我必须提到我的控制台应用程序是新创建的,并且正在使用属于另一个 .Net 核心网络 api 的 clientId 和 ClientSecret,api 能够成功获取秘密,但事实并非如此在我的控制台应用程序中。请在下面找到我正在使用的代码,在 client.GetSecretAsync(vaultAddress,SecretName):
的指令中抛出异常static void Main(string[] args)
{
Console.WriteLine($"Secret Value from Vault is: { GetVaultValue()}");
//DoVault();
Console.ReadLine();
}
static string GetVaultValue()
{
KeyVaultClient client = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(GetToken));
var vaultAddress = "https://VaultName.vault.azure.net/";
var secretName = "storageName:NameAccount";
var secret = client.GetSecretAsync(vaultAddress, secretName).GetAwaiter().GetResult();
return secret.Value;
}
static async Task<string> GetToken(string authority, string resource, string scope)
{
var clientId = "This-IS-ID";
var clientSecret = "THIS-iS-my-Secret";
ClientCredential credential = new ClientCredential(clientId, clientSecret);
var context = new AuthenticationContext(authority, TokenCache.DefaultShared);
var result = await context.AcquireTokenAsync(resource, credential);
return result.AccessToken;
}
secretName
包含冒号 :
,导致此错误。
根据我的测试,我们不允许在密钥保管库名称中包含冒号:
请检查并更正。
对于仍在寻找替代解决方案的人。我遇到过同样的问题。在我的例子中,Pfx 已过期。当Pfx密码不正确或Pfx文件格式无效时也会出现同样的错误。
如果您尝试在 Azure KeyVault 导入表单中手动添加它,您可能会收到此错误:
The content of the specified PKCS#12 X.509 certificate cannot be read. Verify that the certificate is in valid PKCS#12 format and that the submitted password matches the certificate's export password.
我生成了一个没有过期日期的新 Pfx 文件并解决了问题。