背景
我正在尝试开发多租户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管理员来说,这是非常不可接受的情况,因为他/她公开了整个用户/驱动器文件的详细信息。
有没有一种方法可以让管理员代表特定的一组用户/组?
注意:仅允许管理员同意。我有使用安全组或创建服务帐户的建议。如果适用于我的用例,请给出一些指示。
答案 0 :(得分:3)
这是不可能的,它也无法按照您认为的方式工作。
为澄清起见,“管理员同意”过程并不代表“所有用户”同意,而是同意您的应用程序访问租户。使用客户端凭据时,上下文中没有用户。管理员同意您的应用程序时,他们将授予租户范围(即管理员级别)对您的范围中指定的区域的访问权限(在这种情况下,该权限可以读取任何用户,查看任何OneDrive和读取任何SharePoint网站)。
如果您想限制访问权限,则需要使用OAuth授权(例如授权码)来获取特定用户的凭据。这样可以确保您的应用程序只能访问用户有权访问的内容。