Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rest 没有用户委派时如何使用OAuth?--微软图形API_Rest_Powershell_Azure_Oauth_Microsoft Graph Api - Fatal编程技术网

Rest 没有用户委派时如何使用OAuth?--微软图形API

Rest 没有用户委派时如何使用OAuth?--微软图形API,rest,powershell,azure,oauth,microsoft-graph-api,Rest,Powershell,Azure,Oauth,Microsoft Graph Api,我正在尝试使用Microsoft Graph API获取Azure AD中特定组中用户的一些信息。我需要将获取数据作为数据仓库ETL任务的一部分。当从其他云应用程序中提取数据时,我获得了一个API密钥,并将该密钥放在授权头中 OAuth对我来说是新的(除了作为一个用户体验过它之外),我感觉我理解了这个概念,但我确信有些东西我没有正确理解 问题: 当使用我收到的访问令牌时,我在get请求上遇到401错误 采取的步骤: 显然,我必须注册一个应用程序——即使我真的不想在这里构建应用程序——所以我在ap

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

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

问题:

当使用我收到的访问令牌时,我在get请求上遇到401错误

采取的步骤:

  • 显然,我必须注册一个应用程序——即使我真的不想在这里构建应用程序——所以我在apps.dev.microsoft.com的注册门户上注册了
  • 我授予了Microsoft Graph权限(请注意,我是管理员)

  • 我尝试使用Powershell测试数据的提取,如下面的代码所示:

  • $uri=“”

    我收到一个令牌,但当我尝试执行GET请求时,我收到一个401错误

    我的想法

    我觉得范围需要更改,但当我将范围更改为“Groups.Read.All”时,我会收到一条消息,表明它不是有效的范围。我真的不知道下一步该去哪里。我读到的关于OAuth的所有内容都是关于授权用户的权限,这不是我想要做的。我只是想定期从服务中提取一些数据。

    这篇文章似乎与您的场景一致——也许可以将这篇文章中的信息与您正在做的事情进行比较,以确定是否存在断开连接的情况


    鉴于您收到了401错误(未经授权),我怀疑您的应用程序可能没有获得管理员对您尝试执行的操作的明确许可。在我上面链接的文章中,请参见第3节。获得管理员同意了解有关如何获得管理员同意的详细信息。

    https://graph.microsoft.com/Group.Read.All
    工作范围?另外,请尝试指定
    资源=https://graph.microsoft.com
    用于令牌请求。我已经尝试了该作用域,但出现了一个错误:为输入参数“scope”提供的值无效。您是否建议我在请求正文中添加资源作为参数以获取令牌?我刚刚试过,它说:不支持'resource'请求参数。这应该是它。几天前,我正忙于通过Powershell访问此API,并测试了不同的场景。在所有情况下,我都必须给予管理员批准(在我的情况下,构建在浏览器中执行它所需的URL)。
    $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