我正在尝试使用 Microsoft Graph API 获取有关 Azure AD 中特定组中的用户的一些信息。我需要获取数据作为数据仓库 ETL 任务的一部分。当从其他云应用程序提取数据时,我获得了一个 API key 并将 key 放在 Authorization header 中。
OAuth 对我来说是新的(除了作为用户体验过它),我觉得我理解这个概念,但我确信有些事情我没有正确理解。
问题:
我在向 http://graph.microsoft.com/v1.0/groups 发出 GET 请求时收到 401 错误当使用我收到的访问 token 时。
采取的步骤:
- 显然我必须注册一个应用程序 - 尽管我真的不想在这里构建一个应用程序 - 所以我在 apps.dev.microsoft.com 的注册门户上进行了注册
我尝试使用 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
我收到一个 token ,但当我尝试执行 GET 请求时,收到 401 错误。
我的想法
我觉得需要更改范围,但是当我将范围更改为“Groups.Read.All”时,我收到一条消息,表明它不是有效的范围。我不太确定下一步该去哪里。我读到的有关 OAuth 的所有内容都是关于委派用户的权限,这不是我想要做的。我只想定期使用服务提取一些数据。
最佳答案
Get access without a user文章似乎与您的场景相符——也许可以将该文章中的信息与您正在做的事情进行比较,以确定是否存在某个地方脱节?
鉴于您收到 401 错误(未经授权),我怀疑您的应用程序可能尚未获得管理员对您尝试执行的操作的明确同意。在我上面链接的文章中,请参阅第 3 节。获取管理员同意了解有关如何获得管理员同意的详细信息。
关于rest - 在没有用户委托(delegate)的情况下如何使用OAuth? -- 微软图形API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44464831/