无法从多个联合域登录到 Microsoft 365

问题

来自多个联合域 (顶级域或子域的用户) 无法登录到 Microsoft 365。 此外,他们会收到以下错误消息:

很抱歉,我们登录时遇到问题。AADSTS50107:请求的联合领域对象“http:// <ADFShostname>/adfs/services/trust”不存在。

原因

此问题由以下原因之一导致:

  • 颁发转换规则需要将颁发者从默认 Active Directory 联合身份验证服务 (AD FS) 实例主机名更改为颁发者集(如果缺少联合的域)。
  • 添加子域后,颁发转换规则不会更新。

当多个顶级域联合到租户的同一 AD FS 实例时,会出现此问题。

解决 方案

注意

自 2024 年 3 月 30 日起,Azure AD 和 MSOnline PowerShell 模块已弃用。 若要了解详细信息,请阅读 弃用更新。 在此日期之后,对这些模块的支持仅限于 Microsoft Graph PowerShell SDK 和安全修补程序的迁移帮助。 弃用的模块将继续运行到 2025 年 3 月 30 日。

建议迁移到 Microsoft Graph PowerShell,以便与以前为 Azure AD) Microsoft Entra ID (交互。 有关常见的迁移问题,请参阅 迁移常见问题解答注意: MSOnline 1.0.x 版可能会在 2024 年 6 月 30 日之后遇到中断。

  1. 转到Microsoft Entra RPT 声明规则,然后单击“下一步”。

  2. (sourceAnchor) ->User Sign In (指定不可变 ID 的值,例如 UPN 或邮件) 。 如果多个顶级域是联合的,则当系统提示你响应“与 AD FS 的Microsoft Entra ID信任是否支持多个域?”时,选择“

  3. 连接到 Microsoft 365 PowerShell,然后将域列表导出到 .csv 文件 (例如 output.csv) 。 为此,请运行以下 cmdlet:

    Import-Module MSOnline
    
    Connect-MsolService
    
    Get-MsolDomain | Select-Object Name, RootDomain, Authentication | ConvertTo-Csv -NoTypeInformation | % {$_.Replace('"','')} | Out-File output.csv
    
  4. 单击“ 生成声明”,然后从“ 声明规则” 部分复制 PowerShell cmdlet。

  5. 将 cmdlet 保存为 PowerShell 脚本 (例如 updatelclaimrules.ps1) ,然后运行以下命令在主 AD FS 服务器上运行脚本:

    .\Updateclaims.ps1
    
  6. 该脚本将现有颁发转换规则备份为当前工作目录中的 .txt 文件。

如果要使用脚本还原备份的颁发规则,请运行以下 cmdlet,并指定在步骤 5 中创建的备份文件。 在以下示例中,Backup 文件为 Backup 2018.12.26_09.21.03.txt。

Set-AdfsRelyingPartyTrust -TargetIdentifier "urn:federation:MicrosoftOnline" -IssuanceTransformRulesFile "Backup 2018.12.26_09.21.03.txt"