rest - 在没有用户委托(delegate)的情况下如何使用OAuth? -- 微软图形API

标签 rest powershell azure oauth microsoft-graph-api

我正在尝试使用 Microsoft Graph API 获取有关 Azure AD 中特定组中的用户的一些信息。我需要获取数据作为数据仓库 ETL 任务的一部分。当从其他云应用程序提取数据时,我获得了一个 API key 并将 key 放在 Authorization header 中。

OAuth 对我来说是新的(除了作为用户体验过它),我觉得我理解这个概念,但我确信有些事情我没有正确理解。

问题:

我在向 http://graph.microsoft.com/v1.0/groups 发出 GET 请求时收到 401 错误当使用我收到的访问 token 时。

采取的步骤:

  1. 显然我必须注册一个应用程序 - 尽管我真的不想在这里构建一个应用程序 - 所以我在 apps.dev.microsoft.com 的注册门户上进行了注册
  2. 我授予了 Microsoft Graph 权限(请注意,我是管理员) 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

我收到一个 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/

相关文章:

rest - 用户在 springboot 中调用注册 rest API 时如何获取 oAuth2 访问 token ?

java - 尝试使用 Spring Boot REST 从 POST 读取 JSON 字符串

spring - 如何使用休息模板维护休息调用的实用程序类?

windows - 在 Windows 中,“Set-AzDataFactoryV2Dataset”未被识别为 cmdlet 的名称

azure - MS ChatBot - ClientConnector 未经授权的异常

azure - 等待Service Bus OnMessage处理的消息完成

java - 为什么 HTTP 方法 PUT 应该是幂等的而不是实现 RestFul 服务中的 POST?

c# - 无法使用 PowerShell 通过管道传输控制台应用程序的无限输出

powershell - 替换某些内容的 PowerShell commandlet 的正确名称是什么

azure - 如何使用 Microsoft OAuth 获取另一个资源的访问 token