共用方式為

与 Microsoft Entra ID 联合的多域支持

本文提供有关在与 Microsoft 365 或 Microsoft Entra 域联合时使用多个顶级域和子域的指导。

多个顶级域支持

若要让多个顶级域与 Microsoft Entra ID 联合,需要一些让单个顶级域联合时不需要的额外配置。

当域与 Microsoft Entra ID 联合时,系统在 Azure 中的域上设置几个属性。 一个重要属性是 IssuerUri。 此属性是 Microsoft Entra ID 用于标识与令牌关联的域的 URI。 URI 不需要解析为任何内容,但它必须是有效的 URI。 默认情况下,Microsoft Entra ID 将该 URI 设置为本地 AD FS 配置中的联合身份验证服务标识符的值。

注意

联合身份验证服务标识符是可唯一标识联合身份验证服务的 URI。 联合身份验证服务是充当安全令牌服务的 AD FS 实例。

可以使用 PowerShell 命令 Get-EntraDomainFederationSettings -DomainName <your domain> 查看 IssuerUri。

添加多个顶级域时,会出现问题。 例如,假设已设置了 Microsoft Entra ID 和本地环境之间的联合。 对于本文档,将使用域 bmcontoso.com。 现在,已添加了第二个顶级域 bmfabrikam.com。

多个顶级域的屏幕截图。

尝试联合 bmfabrikam.com 域时,会发生错误。 之所以发生这种情况,是因为Microsoft Entra ID 不允许 IssuerUri 属性对多个域具有相同的值。

SupportMultipleDomain 参数

注意

SupportMultipleDomain 参数不再可用,不适用于以下模块:

  • Microsoft.Graph
  • Microsoft.Entra

重要

若要联合多个域,可能需要逐个进行更改,因为 -SupportMultipleDomain 参数不再可用。

如何更新 AD FS 与 Microsoft Entra ID 之间的信任

如果在 Microsoft Entra 管理中心 添加了新域并更改了令牌签名证书,则离更新 Entra ID 中的联合身份验证信息有一步之遥。

按照以下步骤更新 Entra ID 中的联合信息:

  1. 打开新的 PowerShell 会话并运行以下命令以安装 Microsoft Entra PowerShell 模块:

    注意

    -allowclobber 将覆盖有关安装冲突的警告消息,并覆盖与模块正在安装的命令同名的现有命令。 如果已安装 Microsoft.Graph 模块,请使用此值:

    • Install-Module -Name Microsoft.Entra -allowClobber
    • Import-Module -Name Microsoft.Entra.DirectoryManagement
    • Connect-Entra -Environment China -ClientId 'YOUR_CLIENT_ID' -TenantId 'YOUR_TENANT_ID' -Scopes 'Domain.Read.All'
    • Get-EntraFederationProperty -domainname domain.com

    Get-EntraFederationProperty cmdlet 的输出的屏幕截图。

复制输出中第二列中显示的 ID 后,请运行:

  • Update-MgDomainFederationConfiguration -DomainID domain.com -InternalDomainFederationId 0f6ftrte-xxxx-xxxx-xxxx-19xxxxxxxx23'

按照以下步骤使用 PowerShell 添加新的顶级域:

  1. 在已安装 Azure AD PowerShell 模块的计算机上运行以下 PowerShell:$cred=Get-Credential
  2. 为要与之联合的 Microsoft Entra 域输入混合标识管理员的用户名和密码。
  3. 在 PowerShell 中,输入 Connect-Entra -Environment China -ClientId 'YOUR_CLIENT_ID' -TenantId 'YOUR_TENANT_ID' -Scopes 'Domain.ReadWrite.All'
  4. 输入以下示例中的所有值以添加新域:
  New-MgDomainFederationConfiguration -DomainId "contoso.com" -ActiveSigninUri " https://sts.contoso.com/adfs/services/trust/2005/usernamemixed" -DisplayName "Contoso" -IssuerUri " http://contoso.com/adfs/services/trust" -MetadataExchangeUri " https://sts.contoso.com/adfs/services/trust/mex" -PassiveSigninUri " https://sts.contoso.com/adfs/ls/" -SignOutUri " https://sts.contoso.com/adfs/ls/" -SigningCertificate <*Base64 Encoded Format cert*> -FederatedIdpMfaBehavior "acceptIfMfaDoneByFederatedIdp" -PreferredAuthenticationProtocol "wsFed"

按照以下步骤使用 Microsoft Entra Connect 添加新的顶级域:

  1. 从桌面或开始菜单启动 Microsoft Entra Connect
  2. 选择 “添加附加的 Microsoft Entra 域”

“其他任务”页的屏幕截图,其中选择了“添加其他Microsoft Entra 域”。

  1. 输入 Microsoft Entra ID 和 Active Directory 凭据
  2. 选择要为联合配置的第二个域

添加额外 Microsoft Entra 域的屏幕截图。

  1. 选择“安装”。

验证新的顶级域

使用 PowerShell 命令 Get-MgDomainFederationConfiguration -DomainName <your domain> 查看更新的 IssuerUri。 下面的屏幕截图显示,在原始域http://bmcontoso.com/adfs/services/trust上更新了联合身份验证设置。

新域上的 IssuerUri 已设置为 https://bmcontoso.com/adfs/services/trust

对子域的支持

添加子域时,由于Microsoft Entra ID 处理域的方式,它会继承父级的设置。 因此,IssuerUri 需要匹配父域。

例如,如果你有 bmcontoso.com,然后添加 corp.bmcontoso.com,则来自 corp.bmcontoso.com 的用户的 IssuerUri 必须是 http://bmcontoso.com/adfs/services/trust。 但是,上面为 Microsoft Entra ID 实现的标准规则会生成颁发者的令牌 http://corp.bmcontoso.com/adfs/services/trust,该令牌与域所需的值不匹配,因此身份验证将会失败。

如何启用对子域的支持

若要变通此行为,请更新 Microsoft Online 的 AD FS 信赖方信任关系。 为此,必须配置自定义声明规则,使其在构造自定义 Issuer 值时能够从用户的 UPN 后缀中删除任何子域。

使用以下声明:

c:[Type == "http://schemas.xmlsoap.org/claims/UPN"] => issue(Type = "http://schemas.microsoft.com/ws/2008/06/identity/claims/issuerid", Value = regexreplace(c.Value, "^.*@([^.]+\.)*?(?<domain>([^.]+\.?){2})$", "http://${domain}/adfs/services/trust/"));

注意

正则表达式集中的最后一个数字是根域中存在多少个父域。 此处使用的是 bmcontoso.com,因此必须有两个父域。 如果保留三个父域(即 corp.bmcontoso.com),则该数字为 3。 最终可以指示一个范围,并且会以匹配方式来匹配最大域数。 “{2,3}”将匹配两到三个域(即 bmfabrikam.com 和 corp.bmcontoso.com)。

请执行以下步骤添加自定义声明,以支持子域。

  1. 打开“AD FS 管理”
  2. 右键单击Microsoft Online RP信任,然后选择"编辑声明规则"。
  3. 选择第三个声明规则并替换

“编辑声明”对话框的屏幕截图。

  1. 替换当前声明:
c:[Type == "http://schemas.xmlsoap.org/claims/UPN"] => issue(Type = "http://schemas.microsoft.com/ws/2008/06/identity/claims/issuerid", Value = regexreplace(c.Value, ".+@(?<domain>.+)","http://${domain}/adfs/services/trust/"));

替换为

c:[Type == "http://schemas.xmlsoap.org/claims/UPN"] => issue(Type = "http://schemas.microsoft.com/ws/2008/06/identity/claims/issuerid", Value = regexreplace(c.Value, "^.*@([^.]+\.)*?(?<domain>([^.]+\.?){2})$", "http://${domain}/adfs/services/trust/"));

“替换声明”对话框的屏幕截图。

  1. 选择“ 确定”,然后选择“ 应用”,最后再次选择“ 确定 ”。 关闭“AD FS 管理”。

后续步骤

安装Microsoft Entra Connect 后,可以 验证安装和分配许可证

详细了解在安装过程中启用的功能: 自动升级防止意外删除

浏览以下常见主题: 计划程序以及如何触发同步

了解如何 将本地标识与 Microsoft Entra ID 集成