【问题标题】:Azure KeyVault Get Secret API responds with 404 or 401 errorAzure KeyVault Get Secret API 响应 404 或 401 错误
【发布时间】:2019-04-26 03:02:03
【问题描述】:

我正在尝试从 Azure Key Vault 中获取秘密。这是一个非常简单的 Restful API 调用。例如所有键,就这么简单:

GET {vaultBaseUrl}/secrets?api-version=7.0

其中 vaultBaseUrl 在 Azure 控制台中作为 Vault DNS 名称提供。 我正在使用控制台模式进行测试 https://docs.microsoft.com/en-us/rest/api/keyvault/getsecrets/getsecrets#code-try-0 但返回值总是 404。 当我在 Azure 控制台中尝试 curl 时,它会给出 401 - Unauthorized。 但是我可以使用命令行来获取秘密。 有什么秘诀可以让安静的电话和卷曲工作以找出秘密吗?所有这些情况都使用相同的凭据。 附带的问题是,在 micorosft api 测试页面上有一个带有绿色运行按钮的“请求预览”部分,几乎就像是在邀请您运行 api,但链接是 docs.microsoft.com 和盒子上的复制按钮被禁用。我从来没有在一个地方看到过这么多问题,所以我想可能是我不明白这里的一些东西。

【问题讨论】:

    标签: rest azure azure-keyvault secret-key


    【解决方案1】:

    文档似乎不正确。如果你想获取秘钥,你可以使用Client credentials flow获取访问令牌并使用它来获取秘钥。

    按照以下步骤操作。

    1.在 Azure Active Directory 中注册应用程序,请参阅此link。获取应用程序 ID 和密钥,请参阅此 link。使用正确的秘密权限在您的密钥库中的Access policies 中添加服务主体(只需搜索您的 AD 应用程序的名称,然后添加它)。

    2.在邮递员中,向url发送请求

    POST https://login.microsoftonline.com/{your tenant id}/oauth2/token?api-version=1.0
    

    请求正文和完整示例(client_idclient_secret 是步骤 1 中的应用程序 ID 和密钥):

    3.复制第2步中的access_token,然后作为授权令牌调用api:

    GET https://yourkeyvault.vault.azure.net/secrets?api-version=7.0
    

    另外,如果你想使用 CURL 来获取秘密,试试下面的方法。 TOKEN 与上面第 2 步中的 access_token 相同。

    curl -X GET -H "Authorization: Bearer [TOKEN]" https://yourkeyvault.vault.azure.net/secrets?api-version=7.0
    

    有关通过 curl 获取access_token 的更多详细信息以及完整的步骤,您可以参考此link。不要忘记在 Request the Access Token 步骤中将 resource 更改为 https://vault.azure.net

    【讨论】:

      【解决方案2】:

      传递不记名令牌。将有一个 URL 来生成令牌并将其传递给身份验证,然后您将不会收到错误。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-08-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-01
        • 2016-05-24
        相关资源
        最近更新 更多