2014-09-23 120 views
3

我想通過curl使用Azure AD向Azure Service Management API進行身份驗證。使用Azure Active Directory進行Azure服務管理API身份驗證Oauth

set up an application在我的默認目錄。在這個免費試用中,這是我唯一的目錄。

當我定位oauth令牌端點時,我收到一個JWT。

curl --data "grant_type=client_credentials&client_id=<my_client_id>&client_secret=<my_encoded_secret>&resource=https%3A%2F%2Fmanagement.core.windows.net" https://login.windows.net/<my_tenant_id>/oauth2/token 

但是當我使用該令牌列出我的訂閱細節我收到一個錯誤:

curl -H "x-ms-version: 2014-06-01" \ 
    -H "Authorization: Bearer <my_token>" \ 
    https://management.core.windows.net/<my_subscription_id>/ 

    <Error xmlns="http://schemas.microsoft.com/windowsazure" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> 
     <Code>ForbiddenError</Code> 
     <Message>The server failed to authenticate the request. Verify that the certificate is valid and is associated with this subscription.</Message> 
    </Error> 

我已授予權限的服務管理API的應用程序作爲「委派權限」,因爲「應用程序權限「不可用。

enter image description here

我在想什麼?

+0

Matt,這有什麼好運氣?我正面臨類似的問題。 – batta 2014-09-27 02:05:09

回答

1

這是不可能的,由於應用程序的權限:0設置爲服務管理API。 client_credentials授權類型使用來自應用程序(client_id和client_secret)的憑證,並且由於應用程序對此API沒有權限,所以調用失敗。

由於Service Management API不允許任何類型的應用程序權限,因此我們必須使用authorization_code grant type或其他某種方法來獲取用戶令牌。

+0

這是否意味着我們只能使用瀏覽器彈出窗口以交互方式驗證我們的AAD應用程序的Microsoft帳戶?我嘗試使用服務主體創建AAD應用程序,但由於相同的Forbidden錯誤,我無法訪問舊的服務管理REST API。 – Toni 2015-09-28 07:35:52

+0

如果將AAD應用程序添加爲本機應用程序,則可以使用AAD應用程序的服務主體憑據和客戶端ID進行身份驗證。如果將AAD應用程序添加爲Web應用程序,則需要瀏覽器彈出方法。 – 2015-09-29 15:59:50

+0

感謝您的澄清。但是,在使用本地AAD應用程序的服務主體進行身份驗證時(可能是因爲應用程序的「訪問服務管理」權限只是一個委託權限而不是應用程序權限),我仍然無法訪問Service Management API。 – Toni 2015-09-29 18:44:18

相關問題