首页 文章

如果没有用户委派,如何使用OAuth? - Microsoft Graph API

提问于
浏览
1

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

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

Problem:

当我使用我收到的访问令牌时,我收到了对http://graph.microsoft.com/v1.0/groups的GET请求的401错误 .

Steps Taken:

  • 显然我必须注册一个应用程序 - 即使我真的不想在这里构建一个应用程序 - 所以我在apps.dev.microsoft.com的注册门户网站上这样做了

  • 我授予Microsoft图书权限(请注意,我是管理员)
    Graph API Permissions

  • 我尝试使用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错误 .

My Thoughts

我觉得范围需要更改,但当我将范围更改为'Groups.Read.All'时,我收到一条消息,表明它不是有效的范围 . 我不确定下一步该往哪里去 . 我读到的关于OAuth的一切都是关于委派用户的权限,这不是我想要做的 . 我只想定期用服务提取一些数据 .

1 回答

  • 2

    Get access without a user文章似乎与您的场景一致 - 也许将该文章中的信息与您在某处断开连接的信息进行比较?

    鉴于你're receiving a 401 error (unauthorized), I' d怀疑你的应用程序可能没有尝试执行 . 在我上面链接的文章中,有关如何获得管理员同意的详细信息,请参阅 3. Get administrator consent 部分 .

相关问题