在 Microsoft Entra ID 中加强联合登录安全性

组织可以将Microsoft Entra ID配置为信任外部标识提供者,例如Active Directory 联合身份验证服务(AD FS)或其他 SAML 标识提供者,以便用户进行身份验证。 根据Microsoft指南配置和管理联合身份验证时,联合身份验证仍然是一种安全推荐的部署模型。 在联合登录中,标识提供者对用户进行身份验证并颁发联合令牌。 Microsoft Entra ID验证传入令牌并将其映射到租户中的用户帐户。 在此过程中,Entra 执行一系列安全和策略检查,包括令牌签名验证、受信任的颁发者和联合身份验证信任验证、令牌生存期验证、帐户映射以及评估适用的条件访问和多重身份验证要求。 成功满足所有验证和策略要求后,将完成登录。

联合令牌验证策略增加了额外的深度防御控制。 该策略有助于确保受信任的联合域所表示的根域与映射Microsoft Entra用户帐户的根域保持一致。 此添加的域一致性验证有助于增强使用多个联合域的租户中的信任边界。

Important

federatedTokenValidationPolicy 资源及其相关 Microsoft Graph API 可通过 /beta 终结点以预览版形式使用。 预览 API 可能会更改。 不支持在生产应用程序中使用这些 API。

联合域的工作原理

联合域是已验证的Microsoft Entra域,其身份验证将委托给受信任的标识提供者。 联合配置由对象 internalDomainFederation 表示。 此对象通常是在联合身份验证设置过程中创建的,包括常见的 AD FS 或其他身份提供程序配置过程。 管理员可能不会直接创建它。

简化的联合登录流程

  1. 用户输入 UPN,例如 user@contoso.com
  2. Microsoft Entra ID 会将该域识别为联合域,并将身份验证重定向到已配置的标识提供者。
  3. 标识提供者对用户进行身份验证并返回已签名的联合令牌。
  4. Microsoft Entra ID验证令牌,包括其签名、颁发者、有效期和信任关系。
  5. Microsoft Entra ID将断言映射到Microsoft Entra用户帐户。
  6. Microsoft Entra ID应用适用的身份验证、条件访问和多重身份验证要求。
  7. 联合令牌验证策略可以在登录完成之前应用额外的域一致性验证。

联合登录中的现有验证

联合身份验证依赖于 Microsoft Entra ID 与已配置的标识提供程序之间建立的信任关系。 在联合身份登录成功之前,Microsoft Entra ID 会验证该令牌是否由受信任的联合身份验证配置颁发,以及该令牌是否能够映射到租户中的某个用户。

根据租户配置和登录上下文,Microsoft Entra ID还可以强制实施其他控制,例如条件访问、多重身份验证、登录风险策略、设备要求和应用程序授权。 联合令牌验证策略不会替换这些现有保护。 它增加了另一层验证,有助于确认所使用的联合信任与所访问的 Microsoft Entra 帐户所属的域一致。

联合令牌验证策略如何增强联合安全性

federatedTokenValidationPolicy 资源控制对联合身份验证令牌的额外验证。 它与internalDomainFederation对象配合使用,该对象将本地联合域映射到其对应的 Microsoft Entra 域。

强制实施验证后,Microsoft Entra ID将联合帐户或受信任的领域根域与映射Microsoft Entra帐户的根域进行比较。

如果根域匹配,则登录可以继续,但受所有其他身份验证和策略检查的约束。 如果根域不匹配,Microsoft Entra ID将拒绝身份验证请求。

Scenario 具有严格域匹配的预期结果
联合领域根域与用户 UPN 根域匹配。 登录可以继续,但须接受所有其他身份验证和策略检查。
联合领域根域不同于用户 UPN 根域。 联合令牌验证策略阻止登录。
用户 UPN 使用同一根域的子域。 策略评估根域。 子域不被视为单独的根域。
自定义配置显式允许跨域行为。 可以允许跨域登录,但租户不会收到此额外的域一致性保护。

此保护在具有多个联合域的租户中尤其有用,因为它有助于缩小遭到入侵或配置错误的联合身份提供程序的影响范围。 它还强化了同一租户中独立管理的联合域之间的信任边界。

什么是跨域登录?

当来自某个受信任联合身份验证领域的联合令牌被接受,但其映射到的 Microsoft Entra 用户的 UPN 属于另一个根域时,就会发生跨域登录。

例如,通过面向 domainB.com 的信任关系颁发的令牌会映射到某个 UPN 属于 domainA.com 的用户。

某些组织会有意依赖跨域行为,以用于遗留、合并、收购、共存或迁移场景。 联合令牌验证策略可帮助管理员更显式地识别和控制此行为。

注释

该比较基于根域名进行。 UPN,例如 user@child.contoso.com 具有根域 contoso.com。 子域及其父根域不会自动被视为此策略检查的不相关域。

策略提供的其他保护

联合令牌验证策略有助于防止在这些域本应独立管理的情况下,将一个受信任的联合身份验证领域用于把用户验证为分配到另一个根域的用户身份。

相关的攻击方案需要几个先决条件,包括:

  • 具有多个联合域或联合领域的租户。
  • 已遭入侵、恶意或控制不当的受信任身份提供方。
  • 了解目标用户的不可变 ID 或源定位点。
  • 能够发出或配置任意源定位点值的标识提供者或标识存储。

在混合标识环境中,用户通过使用不可变 ID 链接到其Microsoft Entra帐户,该 ID 充当本地目录和云中的持久标识符。 此标识符通常存储在onPremisesImmutableIdMicrosoft Entra ID用户对象的属性中,并且通常源自该ms-DS-ConsistencyGuid属性。

如果满足所有前提条件,控制某个受信任联合领域的攻击者可能会尝试签发一个可映射到另一领域中某个用户的令牌,方法是声明该用户的 源定位符。 当受信任的联合域的根域与映射Microsoft Entra用户的根域不匹配时,联合令牌验证策略有助于阻止此类跨域访问。

跨域冒充示例

假设 Microsoft Entra 租户包含:

  • 联合域 idpA.com
  • 联合域 idpB.com
  • idpA.com 的受信任领域对象。
  • idpB.com 的受信任领域对象。
  • 外部受信任身份提供商 A。
  • 外部受信任身份提供商 B。

显示一个与 idpA.com 和 idpB.com 具有联合信任关系的 Microsoft Entra 租户的示意图。身份提供程序 B 包含 user3,其源锚点与身份提供程序 A 中的 user1 相同。

合法配置包括:

Location User 源锚点
Microsoft Entra 租户 user1@idpA.com user1A
Microsoft Entra 租户 user2@idpB.com user2B
身份提供商 A user1@idpA.com user1A
身份提供商 B user2@idpB.com user2B

如果标识提供者 B 遭到入侵或允许任意源定位点值,攻击者可能会创建其他用户:

Location User 源锚点
身份提供商 B user3@idpB.com user1A

如果仅源锚点映射成功且未强制执行域一致性验证,则标识提供者 B 为 user3@idpB.com 颁发的令牌可能会映射到 user1@idpA.com 的云账户。

将联合令牌验证策略设置为验证根域有助于防止此跨域访问,因为令牌的联合域根域和映射用户的 UPN 根域不匹配。

子域登录行为

当这些域共享同一个根域(例如 user@test.contoso.com)时,来自子域(例如 contoso.com)的登录不被视为跨域登录。 启用联合令牌验证策略后,仍会允许这些登录。

当用户登录时,Microsoft Entra ID从 UPN 中提取根域,并针对联合标识提供者使用的根域对其进行验证。 根域匹配时允许登录。 否则,将阻止登录。

此方法提供适当的域验证,因为子域通常与根域共享相同的联合配置和颁发者。 如果需要不同的联合配置,请先 将子域提升到根域。 然后,策略会独立验证它。

Microsoft 如何加强安全性

Microsoft使用更严格的默认值,当联合领域根域和映射用户 UPN 根域不匹配时,会阻止跨域登录。 此更改适用于具有关联 internalDomainFederation 对象的联合域。

阻止的身份验证请求应返回错误 AADSTS5000820联合令牌验证策略阻止登录。有关详细信息,请与管理员联系。

自定义配置可允许在特定场景下进行跨域登录。 但是,允许跨域登录还原以前的行为,并删除此额外的域一致性验证层。

Important

一个租户可以信任不止一个联合域。 严格的域匹配有助于确保:来自一个受信任域的令牌,不能仅仅因为其他令牌验证和账户映射检查已通过,就被用于以分配给另一个根域名的账户身份登录。

准备强制实施

查看联合域和联合配置

标识租户中的所有联合域,并确认哪些域具有关联的 internalDomainFederation 配置。

识别有意的跨域登录依赖项

审查有意进行的跨域登录场景,包括:

  • 合并和收购。
  • 共存环境。
  • 共享标识提供者。
  • 迁移项目。
  • 用户通过与 UPN 域不同的联合领域进行身份验证的配置。

验证代表性登录方案

测试来自父域和子域的代表用户,以帮助识别常见的配置问题。 根域比较可能会导致子域的行为与单独的根域不同。

成功测试不保证租户中的每个登录路径都已执行,也不保证启用强制实施后,所有用户都不受影响。

监视 AADSTS5000820

启用强制实施后,监控 Microsoft Entra 登录日志中的 AADSTS5000820 错误。 调查受影响的用户,以确定以前未发现的跨域登录依赖项或配置问题。

仔细评估策略例外

仅当有记录的业务要求时,才配置限制较少的验证设置。 禁用验证或收窄验证范围可以恢复有意进行跨域的场景中的先前行为,但这也会移除一层额外的保护,而这层保护有助于强化域信任边界。

允许跨域登录的组织应评估补偿控制措施,例如多重身份验证、条件访问、受信任的标识提供者治理、特权访问控制和应用程序授权策略。

策略管理

Microsoft Graph预览版提供针对获取federatedTokenValidationPolicy更新操作。

对于“获取”和“列表”操作,记录的最小特权权限为 Policy.Read.All。 权限级别更高的是 Policy.ReadWrite.FedTokenValidation。 支持的委托访问的内置角色包括:

  • 安全管理员。
  • 混合标识管理员。
  • 外部身份提供商管理员

资源 validatingDomains 使用以下术语:

  • 联合帐户或域:与传入的联合令牌关联的域,即正在使用的标识提供者信任。
  • 映射的 Microsoft Entra 帐户或域:Microsoft Entra 令牌服务将该用户解析到的 Microsoft Entra 用户的 UPN 域。
  • 验证: 验证两个根域匹配。 如果不匹配,则会阻止登录。

rootDomains 属性定义验证应用到的域的类型。

all

验证租户中的所有已验证域。 此选项提供最广泛的域一致性验证。 此选项适用于想要阻止跨域登录方案或需要最强验证状态的组织。

  • alice@domainA.com 使用身份提供程序 A 为 domainA.com 签发的令牌登录。 根域匹配,因此允许登录。
  • alice@domainB.com 使用身份提供程序 A 为 domainA.com 签发的令牌登录。 令牌与 domainA.com 相关联,但映射的帐户属于 domainB.com。 登录被阻止。

allFederated

仅验证其映射到 Microsoft Entra 账户的域为已联合的用户。 联合域受到保护,而托管域则从验证中排除。 此选项适用于具有多个联合域且希望在不受影响托管帐户时保护联合信任的组织。

假设 domainA.com 和 domainB.com 是联合的,并且管理 domainC.com:

  • alice@domainB.com 具有标识提供者 A 的令牌。映射的帐户域是联合的,因此验证适用。 由于根域不匹配,因此会阻止登录。
  • alice@domainA.com 具有标识提供者 A 的令牌。映射的帐户域是联合的,因此验证适用。 由于根域匹配,因此允许登录。
  • alice@domainC.com 具有标识提供者 A 的令牌。映射的帐户域是托管的,因此不会应用验证,并且允许登录。

allManaged

仅验证其映射的 Microsoft Entra 帐户域为托管的用户。 托管域受到保护,而联合域将从验证中排除。 当组织希望保护托管标识,使其免受来自不相关联合域的令牌影响,但又存在尚未准备好中止的历史遗留联合到联合跨域场景时,此选项是合适的。

  • alice@domainC.com 具有标识提供者 A 的令牌。映射的帐户域是托管的,因此验证适用。 由于域不匹配,因此会阻止登录。
  • alice@domainD.com 具有标识提供者 A 的令牌。映射的帐户域是托管的,因此验证适用。 由于域不匹配,因此会阻止登录。
  • alice@domainB.com 具有标识提供者 A 的令牌。映射的帐户域是联合的,因此验证不适用,并且允许登录。

enumerated

如果用户的映射帐户域包含在指定的域列表中,并且传入令牌的根域不匹配,则阻止登录。 此选项支持分阶段推出。 例如,组织可以验证已准备好强制执行的选定域,同时暂时排除需要其他测试或迁移的域。

以下示例验证三个域名:

{
  "validatingDomains": {
    "@odata.type": "#microsoft.graph.enumeratedDomains",
    "rootDomains": "enumerated",
    "domainNames": [
      "domainA.com",
      "domainB.com",
      "domainC.com"
    ]
  }
}

假设租户还包含 domainD.comdomainE.com

  • alice@domainA.com 具有标识提供者 B 的令牌。映射的帐户域位于枚举列表中,因此验证适用。 由于域不匹配,因此会阻止登录。
  • alice@domainD.com 具有标识提供者 B 的令牌。映射的帐户域不在枚举列表中,因此不会应用验证,并且允许登录。

allManagedAndEnumeratedFederated

验证所有托管域,并仅验证策略中显式列出的联合域。 未列出的联合域将从验证中排除。 此选项为所有托管域提供即时保护,并为联合域逐步推出。

假设 domainA.comdomainB.comdomainC.com 是联合的,domainD.comdomainE.com 是托管的。 以下示例枚举两个联合域:

{
  "validatingDomains": {
    "@odata.type": "#microsoft.graph.enumeratedDomains",
    "rootDomains": "allManagedAndEnumeratedFederated",
    "domainNames": [
      "domainA.com",
      "domainB.com"
    ]
  }
}

验证适用于:

  • domainD.comdomainE.com,因为它们是受管控的。
  • domainA.comdomainB.com,因为它们属于已枚举的联合域。

none

禁用跨域验证。 不会发生根域匹配。 此设置可用于保留预期的跨域登录行为,例如某些遗留、并购、共存或迁移场景。 但是,它会删除联合令牌验证策略提供的其他域一致性保护。

例如, alice@domainB.com 使用标识提供者 A 的令牌登录 domainA.com。 令牌与 domainA.com 相关联,但映射到的用户账户属于 domainB.com。 由于验证已禁用,因此允许登录。

Warning

使用此选项,Microsoft Entra ID不会应用额外的验证,用于检查登录域是否与映射帐户的预期根域匹配。 如果受信任的联合标识提供者遭到入侵、恶意或配置不当,影响可能会超出其预期域范围。 仅当有记录的业务要求和适当的补偿控件到位时,才使用此设置。

常见问题解答

这是否改变了标识提供者对用户进行身份验证的方式?

No. 标识提供者继续执行其配置的身份验证。 当Microsoft Entra ID验证并映射返回的联合令牌时,将应用额外的保护。

策略是否仅在租户有多个联合域时适用?

federatedTokenValidationPolicy 可以存在,不受域数量影响。 当令牌的受信任领域根域不同于映射用户的 UPN 根域时,其跨域阻止行为变得相关。

子域是否被视为单独的域?

No. 联合令牌验证策略比较根域。 用于此比较的子域,例如 child.contoso.com 解析为 contoso.com 根域。

登录被阻止时会发生什么情况?

预期的错误是 AADSTS5000820,这表明联合令牌验证策略阻止了登录。

管理员是否可以允许跨域登录?

Yes. 管理员可以通过将 validatingDomains 资源配置为限制较少的设置(包括 none 在内),来允许跨域登录。

此配置可用于有意的跨域方案,但会删除其他域一致性验证层。 组织应仅在需要时使用限制较少的设置,并应应用适当的补偿控制。

后续步骤