在多租户应用程序中如何检查应用程序在 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 中的用户进行身份验证?