2017-06-09 145 views
1

我嘗試使用微軟圖形API,以獲取有關用戶的信息。在Azure的AD某一特定羣體。我需要將數據作爲數據倉庫ETL任務的一部分。從其他雲應用程序提取數據時,我已獲得一個API密鑰並將密鑰放置在授權標頭中。如何在沒有用戶委託的情況下使用OAuth? - 微軟圖形API

OAuth是新的給我(除了經歷過它的用戶),我覺得我理解的概念,但我相信有些事情我沒有把握正確的。

問題:

我使用,我收到訪問令牌時,得到的GET請求一個401錯誤http://graph.microsoft.com/v1.0/groups

所採取的步驟:

  1. 顯然,我必須要註冊一個應用程序 - 即使我真的不試圖在這裏建立一個應用程序 - 所以我這樣做是對在應用程序的註冊門戶。 dev.microsoft.com
  2. 我授予微軟圖形權限(請注意,我是管理員) Graph API Permissions

  3. 我試着使用PowerShell來測試所看到在下面的代碼數據的拉動:

$ URI = 「https://login.microsoftonline.com/7b...3h/oauth2/v2.0/token

$body = @{ tenant="7b...3h" 
client_id="12...67" 
scope="https://graph.microsoft.com/.default" 
client_secret="3g...x4" 
grant_type="client_credentials"} 

$token = Invoke-RestMethod -Uri $uri -Body $body -Method "Post" 

$header = @{ Authorization="Bearer " + $token.access_token} 
$groups_uri = "https://graph.microsoft.com/v1.0/groups" 
$response = Invoke-RestMethod -Uri $groups_uri -Headers $header 

我收到一個令牌,但是當我嘗試做GET請求,我收到一個401錯誤。

我的思想

我覺得需要範圍改變,但是當我改變範圍「Groups.Read.All」,我得到一個消息,它不是一個有效的範圍。我不確定下一步該去哪裏。我讀到的有關OAuth的一切都是關於委託用戶的權限,而不是我想要做的。我只是想定期用服務拉一些數據。

+0

請問'的https:// graph.microsoft.com/Group.Read.All'範圍的工作?此外,請嘗試爲令牌請求指定'resource = https:// graph.microsoft.com'。 – juunas

+0

我已經試過範圍已經但我得到一個錯誤,指出:對輸入參數 「範圍」提供的值是無效的。 – jaromey

+0

你是否建議我在請求的主體中添加資源作爲參數以獲取令牌?我剛剛嘗試過,它說:'資源'請求參數不支持 。 – jaromey

回答

2

Get access without a user文章似乎與您的情況一致 - 也許你在做什麼比較的信息文章中,以確定是否有脫節的地方?

假設您收到一個401錯誤(非法),我懷疑,也許您的應用程序並未明確由你要執行的動作(一個或多個)管理員批准同意。在上面鏈接的文章中,請參閱部分。3.獲取管理員同意以獲取有關如何獲得管理員同意的詳細信息。

+0

這絕對應該是。我前幾天通過Powershell忙於訪問這個API,並測試了不同的場景。在所有情況下,我必須給予管理員批准(構建所需的URL以在我的情況下在瀏覽器中執行它)。 – bluuf

相關問題