我正试图从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和盒子上的复制按钮被禁用。我从来没有在一个地方见过这么多问题,所以我想可能是我在这里不了解某些内容。
答案 0 :(得分:2)
该文档似乎不正确。如果您想获取秘密,则可以使用Client credentials flow来获取访问令牌,并使用它来获取秘密。
请按照以下步骤操作。
1。在Azure Active Directory中注册应用程序,请参阅此link。获取应用程序ID和密钥,请参见此link。使用正确的秘密权限将服务主体添加到密钥仓库的Access policies
中(只需搜索AD App的名称,然后添加它即可)。
2。在邮递员中,向网址发送请求
POST https://login.microsoftonline.com/{your tenant id}/oauth2/token?api-version=1.0
请求正文和完整示例(client_id
和client_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
有关通过卷曲和完成步骤获取access_token
的更多详细信息,可以参考此link。不要忘记在请求访问令牌步骤中将resource
更改为https://vault.azure.net
。
答案 1 :(得分:0)
传递承载令牌。将有一个Url生成令牌并将其传递给身份验证,然后您将不会得到错误。