在多租户应用程序中如何检查应用程序在 Azure 门户中注册的租户数据?

Posted

技术标签:

【中文标题】在多租户应用程序中如何检查应用程序在 Azure 门户中注册的租户数据?【英文标题】:In a multitenant application How can I check tenant data where the application is registered in the azure portal? 【发布时间】:2019-08-17 16:48:13 【问题描述】:

我有 2 个来自不同组织(租户)的 SharePoint 网站:

租户 1:abc.sharepoint.com 租户 2:xyz.sharepoint.com

已在 Tenan 1 'abc.sharepoint.com' 的 Azure 门户上注册并授予应用程序的必要权限,以便租户 2 用户可以访问它:'xyz.sharepoint.com'

身份验证工作正常 当我通过租户 1 'abc.sharepoint.com' 的用户进行身份验证时,对共享点列表数据的访问工作正常

我想要的是通过租户 2 'xyz.sharepoint.com' 的用户进行身份验证,您可以查阅 sharepoint 的数据,示例:

当我提出请求时:

    https://graph.microsoft.com/v1.0/sites/root 或 https://graph.microsoft.com/v1.0/sites/xyz.sharepoint.com

    它返回的信息令人满意,因为它咨询了“xyz.sharepoint.com”的站点,因为用户来自该租户

...但是当我咨询指定租户'abc.sharepoint.com'时

    https://graph.microsoft.com/v1.0/sites/abc.sharepoint.com

    返回以下错误:

    "error": "code": "invalidRequest", "message": "Invalid hostname for this tenancy", "innerError": "request-id": "c0a8fa51-245b-4d1e-bf0b-5f32b6c0eb26", "date": "2019-08-17T16:27:57"

一个与另一个租户的用户进行身份验证。如何查看应用注册信息?

【问题讨论】:

【参考方案1】:

我们不能使用从一个租户获得的访问令牌来访问另一个租户。

如果你想这样做,你需要:

    将租户 2 'xyz.sharepoint.com' 的用户作为访客添加到租户中 1 'abc.sharepoint.com'。见Quickstart: Add guest users to your directory in the Azure portal。 使用租户 1 的管理员帐户对租户 2 在 Azure AD 中注册的应用程序进行管理员同意。只需要打开浏览器并向 发出请求
https://login.microsoftonline.com/common/oauth2/authorize?client_id=client id of the app registered in Azure AD of Tenant 2&response_type=code&redirect_uri=reply url of the app registered in Azure AD of Tenant 2&nonce=1234&resource=https://graph.microsoft.com&prompt=admin_consent
    用租户1的admin账号登录,点击“接受”。 获取访问令牌并使用它访问租户 1 'abc.sharepoint.com'。

【讨论】:

@Mittaus 你有机会看看我的答案吗? 谢谢@allen-wu 我已经完成了你指定的步骤。问题不在于身份验证。当我通过租户用户 2 'xyz.sharepoint.com' 进行身份验证时,问题是访问租户 1 'abc.sharepoint.com' 上的信息 完成我的步骤后,我可以使用租户2的用户访问租户1的信息。对于“身份验证”,我的理解是获取访问令牌。您现在面临的问题是什么?

以上是关于在多租户应用程序中如何检查应用程序在 Azure 门户中注册的租户数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何在多租户环境中自动选择配置的 SAML 身份提供程序以使用 Spring SAML 进行 SSO

如何在多租户应用程序的业务层中为可扩展的数据库结构设计实体?

如何在 Azure Active Directory 中制作 Native Client Application 单租户?

如何在 .NET Core Web 应用程序的单个实例中使用动态租户对 Azure Active Directory 中的用户进行身份验证?

Spring在多租户环境中为占位符配置application.properties

多租户应用程序中的 Azure DocumentDB 用户