设置 Microsoft Graph 的范围参数

Mih*_*a J 3 microsoft-graph-api

我已经注册了一个应用程序 apps.dev.microsoft.com

并将其权限设置为: 来自 apps.dev.microsoft.com 面板的屏幕截图

我得到一个令牌来使用 Microsoft Graph API,如下所示:

https://developer.microsoft.com/en-us/graph/docs/concepts/auth_v2_service#4-get-an-access-token

我将范围设置为: scope=https://graph.microsoft.com/.default

我在Directory.ReadWrite.All未经许可的情况下取回令牌。

如何修改请求以使用apps.dev.microsoft.com门户下指定的权限取回令牌?我应该更改范围参数吗?

graph.microsoft.com/directory.readwrite.all按照网上的建议尝试过,但没有任何运气。

Mar*_*eur 6

要使用,schemaExtentions您需要Directory.AccessAsUser.All范围。但是,您在这里遇到的问题是您正在使用client_credentials仅支持应用程序权限(其中Directory.AccessAsUser.All不是一个)的授权(又名“仅应用程序身份验证” )。

为了使用任何委托权限,您需要对用户进行身份验证,而不仅仅是对应用程序进行身份验证。委派权限就是用户在一段时间内委派(也称为转移/分配)给您的应用程序的权限。

这里有几个选项。如果您遇到的唯一问题是schemaExtentions并且您不销售商业解决方案(ISV),那么您很可能不需要首先将其添加到您的应用程序中。相反,请尝试使用Graph Explorer来创建它们。

请注意,您需要先对 Graph Explorer 执行管理员同意,然后才能首先与您的租户合作。

另一种选择是在应用程序中同时支持client_credentialcode授权。如果您是销售商业解决方案的 ISV,这可能是最好的选择。执行此操作的最简洁方法是拥有一个由管理员执行的“设置”应用程序。管理员使用code授权对自己进行身份验证,然后您创建所有需要的扩展。这个过程的好处是它提供了一个干净且合乎逻辑的地方来启动管理员同意,以client_credential获得生产应用程序所需的授权。

需要注意的一件事是,您可以对Auth CodeImplicitClient Credential授权使用相同的 App ID 。根据您选择的授权,它将使用您定义的委托或应用程序权限。这使得上述场景非常简单。

遗憾的是,注册 UX 并没有很好地展示如何应用委托与应用程序权限,导致许多用户认为这两组总是被使用。实际上,根据使用的授权类型,只有一套适用。对此的一个例外是管理员同意,它同意所有请求的权限(即您不需要单独的委托和应用程序同意流)。