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 文件并解决了问题。