我的组织将用户放在 Active Directory 中,该目录已同步到 Azure Entra 租户(租户 A)。所有这些都由另一家公司管理。我们在单独的 Azure 租户(租户 B)中有一些 Web 应用,我们可以完全控制这些应用。
我是一名开发人员,我的任务是为租户 B 中的 Web 应用程序设置无缝“单点登录”,以便用户通过租户 A 进行身份验证,并从 Entra 检索有关用户的不同属性(电子邮件、SAMAccountName 等)。我们可以请求更改租户 A,但我们希望将其保持在最低限度,这样我们就不必每次想要为新的 Web 应用程序设置 SSO 时都请求更改。
我知道这是可行的,因为我们有一个业务合作伙伴已经设置了这一点。它需要在租户 A 中创建一个“企业应用程序”,指向“sso.businesspartner.com/myorganization”的 URL。然后他们可以发送带有类似“app.businesspartner.com/signin?org_code=myorganization”的链接的邮件,当我们的用户单击它时,他们已经通过了身份验证。我们试图联系这个业务合作伙伴,了解他们是如何设置的,但除了提供用于在租户 A 中创建企业应用程序的 SAML 元数据文档外,他们无法告诉我们。
在此设置中,我需要在租户 A 和租户 B 中进行什么设置来创建一个“sso.myorganization.com”Web 应用程序,当用户访问“app1.myorganization.com”、“app2.myorganization.com”等时,该应用程序可用于进行身份验证?
答案1
所有需要此 SSO 功能的应用程序都是位于同一子域上的内部 Web 应用程序,例如some-app.internal.myorganization.com
、a-different-app.internal.myorganization.com
等。
这意味着我们可以请求在租户 A 中创建一个应用注册,其重定向 URI 指向https://*.internal.myorganization.com/signin-oidc
这是不是可以通过 Azure 门户中的 UI 来完成,但是可以通过编辑应用程序注册的清单文件来获取。还请注意,有一个限制,即通配符 URI 只能在用于从工作或学校帐户登录帐户的应用程序注册中使用。
在清单文件中,我们还设置了"groupMembershipClaims": "All"
。这使我们能够获取该帐户所属的所有组的组 ID。
这种设置并不理想,因为我们必须在数据库中保留用户和 AD 组的副本,并将其与登录的用户进行匹配 - 但在此设置中,我们的用户在一个租户中,而 Web 应用程序在另一个租户中,这是我们能做的最好的事情。