簡體   English   中英

沒有用戶委派時如何使用OAuth? — Microsoft Graph API

[英]How to use OAuth when there is no user delegation? — Microsoft Graph API

我正在嘗試使用Microsoft Graph API來獲取有關Azure AD中特定組中的用戶的一些信息。 我需要將數據作為數據倉庫的ETL任務的一部分來獲取。 當從其他雲應用程序中提取數據時,我已經獲得了一個API密鑰並將該密鑰放置在Authorization標頭中。

OAuth對我來說是陌生的(除了作為用戶經歷過),我覺得我很了解這個概念,但是我敢肯定有些事情我沒有正確掌握。

問題:

使用接收到的訪問令牌時,在對http://graph.microsoft.com/v1.0/groups的 GET請求中出現401錯誤。

采取的步驟:

  1. 顯然我必須注冊一個應用程序-即使我確實不是要在此處構建應用程序-所以我在apps.dev.microsoft.com的注冊門戶上進行了注冊
  2. 我授予了Microsoft Graph權限(請注意,我是管理員) 圖形API權限

  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的所有內容都是關於委派用戶權限的,這不是我要嘗試做的事情。 我只想定期通過服務提取一些數據。

沒有用戶的情況下獲取訪問權限的文章似乎符合您的情況-也許將文章中的信息與您正在做的事情進行比較,以確定某個地方是否存在斷開連接?

鑒於您收到401錯誤(未經授權),我懷疑管理員未明確同意您要執行的操作對您的應用程序的同意。 在上面我鏈接到的文章中,請參閱第3。獲取有關如何獲得管理員同意的詳細信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM