【问题标题】:Microsoft.Azure.KeyVault.Models.KeyVaultErrorException: 'Operation returned an invalid status code 'BadRequest''Microsoft.Azure.KeyVault.Models.KeyVaultErrorException:'操作返回无效状态代码'BadRequest''
【发布时间】:2020-08-20 15:55:41
【问题描述】:

我正在尝试从 .Net 4.5 控制台应用程序上的 Azure keyVault 获取机密,我关注了This tuto,但我收到了标题中提到的错误请求错误。我不得不提到我的控制台应用程序是新创建的,并且正在使用属于另一个 .Net 核心 web 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;
    }

【问题讨论】:

  • 如果您没有正确的权限会出现此错误
  • @Sajeetharan 谢谢你的评论,我会调查的
  • 让我们知道结果
  • 请分享您的代码。并指出错误发生在哪里。
  • KeyVaultClient 已被弃用,取而代之的是 SecretClient,可在我们的新包 Azure.Security.KeyVault.Secrets 中使用。我们还将 KeyClient 和 CertificateClient 拆分为单独的包。有关详细信息,请参阅 aka.ms/valuepropaka.ms/intro。与 Azure.Identity 中的 DefaultAzureCredential 一起使用,这些更易于使用,并且不需要从开发环境更改代码到生产环境。

标签: c# .net azure console-application azure-keyvault


【解决方案1】:

secretName 包含冒号 :,导致了这个错误。

根据我的测试,我们不允许在密钥保管库名称中包含冒号:

请检查并更正。

【讨论】:

  • 如果我的回答对您有帮助,您可以接受它作为答案(单击答案旁边的复选标记,将其从灰色切换为已填充。)。见meta.stackexchange.com/questions/5234/…。这对其他社区成员可能是有益的。谢谢。
  • 非常感谢您抽出宝贵时间进行测试,非常感谢。
【解决方案2】:

对于仍在寻找替代解决方案的人。我遇到过同样的问题。就我而言,Pfx 已过期。当 Pfx 密码不正确或 Pfx 文件格式无效时也会出现同样的错误。

如果您尝试在 azure KeyVault 导入表单中手动添加它,您可能会收到此错误:

无法读取指定的 PKCS#12 X.509 证书的内容。 验证证书是否采用有效的 PKCS#12 格式,并且 提交的密码与证书的导出密码一致。

我生成了一个没有过期日期的新 Pfx 文件并解决了问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-09
    • 1970-01-01
    • 2022-10-06
    • 2021-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多