Microsoft Graph 的多租户支持 API

Multi tenant support for Microsoft Graph API

因为我在玩 Microsoft Graph API (https://graph.microsoft.io/) 我想了解 Graph API.

的多租户支持

据我所知,我们需要先创建我们的应用程序 (http://dev.office.com/app-registration) 并将其注册到 O365 Azure AD,然后才能使用它来访问图形 API。

这与早期模型一致,在早期模型中,应用程序是直接在底层 AD 中创建的。我相信上面的应用程序创建步骤也是如此。

虽然这允许该应用程序访问我们注册该应用程序的租户的图表 API,但该应用程序无法访问其他租户数据。 我们如何做到这一点?

AD 应用程序之前有一个 grant access 流程,其中该应用程序用于向其他租户中的用户显示一个对话框以授权该应用程序。 这个流程还有效吗?

这方面的任何指导都会有所帮助。

要为多个租户启用该应用程序,我们需要登录 Azure 门户并启用它,如下图所示:

作为替代方案,如果您使用 App Registration Portal linked to directly from the Microsoft Graph site, you will not need to do anything extra to make your app work with multiple tenants. It will require switching your authentication strategy over to the v2.0 Authentication Endpoints(也称为聚合身份验证)。这对您也有一些好处,例如动态范围以及能够支持企业和消费者身份验证以及具有相同身份验证流程的图形 API。

根据您选择的平台,有多个 samples under the Microsoft Graph GitHub 帐户可以在您需要时为您提供帮助。许多样本已经切换到这个新的身份验证流程,其他样本也正在努力切换。

额外

如果您对 v2.0 身份验证端点的 {tenant} 段的选项有疑问,可以阅读它们 here

  • common => 允许拥有个人 Microsoft 帐户和来自 Azure Active Directory 的 work/school 帐户的用户登录应用程序。
  • organizations => 只允许拥有来自 Azure Active Directory 的 work/school 个帐户的用户登录应用程序。
  • consumers => 仅允许拥有个人 Microsoft 帐户 (MSA) 的用户登录应用程序。
  • {租户指南 | name} => 仅允许具有来自特定 Azure Active Directory 租户的 work/school 个帐户的用户登录应用程序。可以使用 Azure AD 租户的友好域名或租户的 guid 标识符。

最重要的是,在处理多租户应用程序时,请使用 common 作为您的租户 ID。看看下面是如何完成的:

https://login.microsoftonline.com/common/oauth2/authorize?response_type=code&client_id=<YOUR_AAD_CLIENT_ID_HERE>&redirect_uri=<YOUR_REDIRECT_URI_HERE>'

没有明确提及,因为他们的文档更糟糕。像微软这样规模的公司没有任何借口。