Azure KeyVault Get Secret API响应404或401错误

时间:2019-04-26 03:02:03

标签: rest azure azure-keyvault secret-key

我正试图从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-未经授权。 但是我可以使用命令行来获取秘密。 进行安静的通话和卷曲操作以揭露秘密有什么秘密吗?所有这些情况都使用相同的凭据。 附带的一个问题是,在micorosft api测试页上,有一个带有绿色“运行”按钮的“请求预览”部分,几乎就像是在邀请您运行该api,但是链接是docs.microsoft.com和盒子上的复制按钮被禁用。我从来没有在一个地方见过这么多问题,所以我想可能是我在这里不了解某些内容。

2 个答案:

答案 0 :(得分:2)

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

请按照以下步骤操作。

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

2。在邮递员中,向网址发送请求

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

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

enter image description here

3。在步骤2中复制access_token,然后将其用作授权令牌来调用api:

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

enter image description here

此外,如果您想使用CURL来获取机密,请尝试以下类似的方法。 TOKEN与上面第2步中的access_token相同。

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

有关通过卷曲和完成步骤获取access_token的更多详细信息,可以参考此link。不要忘记在请求访问令牌步骤中将resource更改为https://vault.azure.net

答案 1 :(得分:0)

传递承载令牌。将有一个Url生成令牌并将其传递给身份验证,然后您将不会得到错误。