如何使用/ adminconsent端点为一组用户而不是整个组织授予权限?

时间:2018-07-18 13:35:15

标签: azure-active-directory microsoft-graph

背景

我正在尝试开发多租户SaaS应用程序。 我正在尝试授权的“管理员同意”模型。但是,我无法确定目标范围,即如何将自己限制为企业中的特定用户组而不是所有用户

我相信并非所有企业都可能希望我们从一开始就处理所有用户。

说明

我正在使用client_credentials授权进行身份验证。

该应用旨在读取用户的驱动器数据。

我要询问的一组权限是:

  • Files.Read.All
  • Users.Read.All
  • Sites.Read.All

当我要求全局管理员授予所需的权限时,即重定向到 https://login.microsoftonline.com/common/adminconsent?client_id=[my_client_id]&state=12345&redirect_uri=[my_redirect_uri]

一旦管理员同意该许可,该租户将针对该租户下的所有用户。对于企业O365管理员来说,这是非常不可接受的情况,因为他/她公开了整个用户/驱动器文件的详细信息。

有没有一种方法可以让管理员代表特定的一组用户/组?

注意:仅允许管理员同意。我有使用安全组或创建服务帐户的建议。如果适用于我的用例,请给出一些指示。

1 个答案:

答案 0 :(得分:3)

这是不可能的,它也无法按照您认为的方式工作。

为澄清起见,“管理员同意”过程并不代表“所有用户”同意,而是同意您的应用程序访问租户。使用客户端凭据时,上下文中没有用户。管理员同意您的应用程序时,他们将授予租户范围(即管理员级别)对您的范围中指定的区域的访问权限(在这种情况下,该权限可以读取任何用户,查看任何OneDrive和读取任何SharePoint网站)。

如果您想限制访问权限,则需要使用OAuth授权(例如授权码)来获取特定用户的凭据。这样可以确保您的应用程序只能访问用户有权访问的内容。