2017-10-13 111 views
2

我有一個背景JS應用程序不會有任何用戶輸入,所以我正在尋找使用應用程序驗證,而無需用戶輸入。我已經在Azure AD門戶和apps.dev.microsoft.com中設置了一個應用程序。微軟圖形OAuth問題

我使用以下端點:

login.microsoftonline.com/{Tenant}/oauth2/token 

用下面的身體:

client_id: application_id 
client_secret: generated key 
grant_type: client_credentials 
scope: "https://graph.microsoft.com/.default" 

然而,這產生的access_token當我嘗試和使用圖形API使用它,我得到以下錯誤

訪問令牌驗證失敗

當調查令牌與具有用戶輸入的普通OAuth令牌相比時,我注意到它傳入角色而不是scp,觀衆是我的應用程序,而不是graph.microsoft.com。

我在做什麼錯了?

回答

3

在Azure AD門戶中註冊的應用程序與Azure AD V1.0端點一起使用,在apps.dev.microsoft.com中註冊的應用程序可與v2.0端點一起使用。請首先參考this document瞭解v2.0端點的不同之處。

要使用Azure的AD v2.0的訪問安全資源,而無需用戶交互(客戶端憑證流),你應該發送POST請求到/令牌V2.0端點:

POST /common/oauth2/v2.0/token HTTP/1.1 
Host: login.microsoftonline.com 
Content-Type: application/x-www-form-urlencoded 

client_id=535fb089-9ff3-47b6-9bfb-4f1264799865&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default&client_secret=qWgdYAmab0YSkuL1qKv5bPX&grant_type=client_credentials 

你可以請參閱this document以瞭解如何在Azure AD V2.0端點中使用OAuth 2.0客戶端憑據授權。

如果您想要使用客戶端憑證流的azure ad v1.0(在azure門戶中註冊的應用程序),請參閱this document。在azure ad v1.0中,您應該指明客戶端應用程序請求授權的參數resource,在您的方案中,如果要獲取令牌以調用Microsoft圖表API,資源應爲https://graph.microsoft.com/

+0

謝謝你,那是我的問題。我在門戶中創建了兩個應用程序,一個在app.dev中創建。我混淆了v1和v2的端點。 將資源添加到我的v1端點,並且一旦我運行v2的管理員同意網址,一切正常。 謝謝 –