如何获得比用户权限更高的 Graph API token?

How do I get a Graph API token with higher permission than the user?

我目前正在使用 Teams Toolkit 开发 Microsoft Teams 选项卡应用程序。

该应用程序的用户应该能够邀请来宾用户加入某些团队并在 AD 中编辑一些用户信息。这需要比用户更高的权限级别。

我曾尝试使用委派权限,但这会根据用户的权限限制应用程序的权限。参见 https://docs.microsoft.com/en-us/graph/auth/auth-concepts

有没有一种方法可以使用 Teams Toolkit,或者作为最后的手段,使用其他一些包来获取 Graph API 令牌,从而允许应用程序执行需要比用户拥有的权限更高的操作?

作为参考,我在下面列出了应用程序需要的一些权限:

        "User.ReadBasic.All",
        "Sites.ReadWrite.All",
        "Domain.ReadWrite.All",
        "Directory.ReadWrite.All",
        "TeamMember.ReadWrite.All",
        "TeamSettings.ReadWrite.All",

谢谢!

如您所见,主要有两种权限类型。第一个是“委托”,这基本上意味着用户正在“委托”您的应用程序代表 his/her 做某事。这当然仅限于用户自己 can/can 不做的事情,因为它基本上只是为他们做的。要以不同的方式做某事,或者要在没有 特定 用户关联的情况下做某事,您需要使用应用程序权限。在这种情况下,您的访问基本上是无限制的,但这意味着租户管理员需要预先同意(即 once-off)您的应用程序具有此级别的访问权限。

因此,“应用程序”权限是您在场景中所需要的。

正如 Hilton 所说,您应该为您的场景使用“应用程序”权限。

“应用程序”权限旨在从后端 运行,因此您可以设置后端 Web 应用程序或 Azure 函数来执行此操作。

基本步骤如下:

  1. 转到您的 AAD 应用程序,并添加您想要的权限

  2. 同意权限

  3. 从 AAD 门户复制客户端 ID 和客户端密码

  4. 按照步骤获取访问令牌 https://docs.microsoft.com/en-us/graph/auth-v2-service#4-get-an-access-token

顺便推荐使用Teams Toolkit中的Azure Function功能,它可以帮助您在Teams Tab项目中轻松设置一个Azure Function,然后您可以在Azure Function中编写代码来调用graph api 有申请权限