一家公司正在使用带有 ADFS 身份验证的 Office 365;AD Connect用于目录同步,ADFS是Windows server 2012 R2版本。
该公司有多个 Active Directory 域:
parent1.com
child1.parent1.com
child2.parent1.com
child3.parent1.com
parent2.com
...
...
根域在 Office 365 中配置为联合域(公共域名和 AD 域名相同);这很好用,用户可以使用他们的 UPN(例如[email protected]
)和他们的 AD 密码登录到 Office 365。
我需要添加对子域的支持;因此,我child1.parent1.com
通过运行以下命令添加到 Office 365(在使用管理员帐户连接到 Office 365 之后Connect-MsolService
):
New-MsolFederatedDomain -DomainName child1.parent1.com -SupportMultipleDomain
(注意如果我不使用该SupportMultipleDomain
参数,PowerShell 会给出一个错误,说明它是必需的)。
然后我继续在私有和公共 DNS 中添加所有必需的 DNS 记录;DNS 记录的 Office 365 验证报告一切正常。
然后将子域添加到 AD Connect,并执行同步;来自子域的用户因此出现在 Office 365 中,用户名如[email protected]
. 我为他们分配了适当的许可证并尝试登录 Office 365 门户。
但是,子域的用户无法登录;他们收到“无效请求”错误,并附有以下附加详细信息:
Correlation ID: b1e47d45-b21c-42e9-9758-265804db7171
Timestamp: 2016-08-10 20:27:48Z
AADSTS50107: Requested federation realm
object 'http://child1.parent1.com/adfs/services/trust/' does not exist.
ADFS 方面显然有问题,但我不是这方面的专家,也不是我设置它的人;如何解决此问题,以便子域中的用户可以成功登录 Office 365?
该问题几乎没有记录(Technet 博客文章和Azure AD 的一些文档),但它确实存在,这是由于 ADFS 在某些特定情况下行为不正确(多个顶级联合域和在混合); 该解决方案涉及编辑 ADFS 声明规则中的正则表达式,该规则用于构建与用户的 UPN 关联的 IssuerUri。引用第二篇文章:
为了解决这个问题,应该编辑 ADFS 中的第三条声明规则,从
至
但是,请注意,这可能会破坏与其他方案的兼容性,例如父域未联合的实际第三级联合域。