2017-05-05 241 views
1

我對微軟分散的文檔有點困惑。Keyvault身份驗證(REST API)

我已經創建了一個應用程序(https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-create-service-principal-portal),這意味着我現在有:

  • 應用ID
  • 重點
  • 目錄編號

我已經到Azure中KeyVault門戶網站和我已授予應用程序的權限。

出於測試目的,我試圖通過CURL運行測試。我使用該算法的基礎是下面的Microsoft網頁(https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-protocols-oauth-service-to-service#request-an-access-tokenhttps://docs.microsoft.com/en-us/rest/api/#create-the-request

所以,我做的第一件事就是通過下面的調用獲取令牌:

curl -d "grant_type=client_credentials&client_id=<removed_for_security>&client_secret=<removed_for_security>" https://login.microsoftonline.com/<removed_for_security>/oauth2/token 

這將返回一個令牌。

然後我(嘗試)使用該令牌如下:

curl -H "Authorization: Bearer <removed_for_security>」 -vv https://<removed_for_security>.vault.azure.net/secrets/<removed_for_security>/<removed_for_security> 

我沒有得到任何內容,則只需「HTTP/1.1 401未經授權」

回答

2

好了,我可以確認該請求你所做的是有效的,大多數情況下,你忘記了API版本,但問題不在於API版本(它會告訴你這一點)。

https://xxx.vault.azure.net/secrets/xxx/?api-version=2015-06-01 

此網址的作品,所以我猜測令牌是不正確的。檢查最簡單的方法是前往JWT.io並粘貼令牌並查看內容,如果它們與密鑰保管庫期望的內容相匹配。可能你有一個不匹配。

+0

是。我忘了API版本。 –

+0

很奇怪,當我刪除API版本時,它特意告訴我,我忘了指定API版本......很高興知道它的工作原理@LittleCode – 4c74356b41

0

您需要指定您正在請求令牌的資源。

curl -d "grant_type=client_credentials&client_id=<removed_for_security>&client_secret=<removed_for_security>&resource=https://vault.azure.net" https://login.microsoftonline.com/<removed_for_security>/oauth2/token 

並且還添加了api版本。