我正在开发一个SaaS应用程序,该应用程序需要外部组织的AD用户将约会同步到Office 365日历事件 .
管理员用户场景:
-
Admin将所有AD用户导入应用程序 .
-
该应用程序将管理员重定向到Microsoft登录和请求权限 .
-
Admin允许该应用访问用户的日历 .
普通用户场景:
-
用户登录应用程序 .
-
用户创建约会并同步到Office 365日历(无需请求权限) .
我在Microsoft Graph API中使用以下 endpoints :
Authority = "https://login.microsoftonline.com/common/oauth2/authorize"
Resource = "https://graph.microsoft.com/"
如果我想让普通用户访问他们的Microsoft数据,我是否需要将租户“常用”更改为他们的租户ID?
我的另一个问题是管理员同意如何根据我的方案工作?
1 回答
首先,我建议不要将所有用户导入您的应用 . 最好只在他们登录时以“及时”的方式配置您实际需要的用户 . 如果您的应用程序具有列出租户中其他用户(例如“人员选择器”)有用的场景,那么您可以按需使用Microsoft Graph API .
接下来,回答您的一个问题:不,您不应将
Authority
endpoints 切换到特定于租户的 endpoints . 继续使用common
endpoints ,确保您可以验证来自任何租户的任何用户 .通过在身份验证请求期间使用
prompt=admin_consent
查询参数,可以明确请求管理员同意 . 一种方法是让您的应用程序执行常规登录,然后,一旦用户登录,使用Microsoft Graph API检查用户是否是租户管理员 . 如果是,您可以重定向它们以重新进行身份验证,但这次使用prompt=admin_consent
选项 . 或者,您可以为您的应用程序提供一个"sign-up"流程,该流程从一开始就使用prompt=admin_consent
(相应的说明只有租户管理员可以这样做,因为非管理员将从Azure AD收到他们可能不理解的错误) .