外部多重身份验证(MFA)允许用户在使用工作或学校帐户登录时选择一个外部提供程序来满足 MFA 要求。 Microsoft Entra 条件访问中的自定义控件以前提供了类似的功能,但随着外部 MFA(以前称为外部身份验证方法)的正式发布,自定义控件已弃用并计划停用。 本指南提供将现有自定义控制条件访问策略迁移到外部 MFA 的步骤。
Important
自定义控件已弃用。 从 2026 年 9 月开始,不允许添加新的自定义控件和编辑现有自定义控件。 完全退休计划于 2027 年初。 立即开始规划迁移。 有关详细信息,请参阅 外部 MFA GA 公告。
仅当组织当前使用自定义控件时,本指南才相关。 如果不使用自定义控件,则无需执行任何操作。
先决条件
在开始之前,请确保具备:
- Microsoft Entra ID P1 或 P2 许可证。
- 身份验证策略管理员 角色(或全局管理员)。
- 特权角色管理员 角色,以授予提供商应用程序的管理员同意。
- 来自外部多重身份验证(MFA)提供方的元数据:
- 应用程序 ID:应用注册 ID(通常是多租户)。
- Client ID:标识向提供程序发出的Microsoft Entra请求。
-
发现 URL:OIDC 元数据终结点(例如
https://provider.example.com/.well-known/openid-configuration)。
- 用于测试的Microsoft Entra ID中的测试用户组。
- 使用自定义控件的所有现有条件访问策略的清单。
为什么要迁移?
外部 MFA 解决了自定义控件的主要限制:
| 能力 | 自定义控件 | 外部 MFA |
|---|---|---|
| 满足 CA“要求 MFA”授予 | ❌ 否 | ✅ 是(原生 MFA 声明) |
| 登录日志准确性 | ❌ 未反映 MFA | ✅ 完整的 MFA 报告 |
| 特权身份管理 (PIM) | ❌ 不支持 | ✅ 受支持 |
| Intune 设备注册 | ❌ 不支持 | ✅ 受支持 |
迁移概述
高级迁移过程包括以下步骤:
- 审核现有的自定义控制策略。
- 配置外部 MFA 身份验证方法策略。
- 注册外部 MFA 的测试用户。
- 创建需要 MFA 的测试条件访问策略。
- 将测试用户从自定义控制策略移动到外部 MFA 策略。
- 测试对受保护应用的登录。
- 全面上线。
审核现有的自定义控制策略
在进行更改之前,请记录当前状态。 使用自定义控件标识条件访问策略:
- 至少以身份验证策略管理员的身份登录到Microsoft Entra 管理中心。
- 搜索 Microsoft Entra 条件访问。
- 浏览到 策略。
- 查看每个策略,并记下在 Grant 控件下使用自定义控件的任何策略。
- 对于每个策略,请记录:
- 策略名称和 ID
- 目标用户/组
- 目标云应用程序
- 所引用的自定义控件提供程序
- 任何条件(位置、设备平台等)
或者,运行以下Microsoft Graph PowerShell 命令,以使用自定义控件标识所有策略:
Connect-MgGraph -Environment China -ClientId 'YOUR_CLIENT_ID' -TenantId 'YOUR_TENANT_ID' -Scopes "Policy.Read.All"
Get-MgIdentityConditionalAccessPolicy -All | Where-Object {
$_.GrantControls -and (
@($_.GrantControls.CustomAuthenticationFactors) |
Where-Object { $_ -is [string] -and $_.Trim().Length -gt 0 }
).Count -gt 0
} | Select-Object Id, DisplayName, State, @{
N = "CustomAuthFactors"
E = { ($_.GrantControls.CustomAuthenticationFactors | Where-Object { $_ -is [string] -and $_.Trim().Length -gt 0 }) -join "," }
}
Tip
大型租户可能有数十个或数百个条件访问策略。 导出结果并跟踪每个策略的迁移状态,以避免低估迁移工作。
配置外部 MFA 身份验证方法策略
此步骤将外部 MFA 提供程序注册为Microsoft Entra ID中已识别的身份验证方法。 建议在Microsoft Entra 管理中心中配置外部 MFA 提供程序,以便更好地查看和管理,但也可以使用Microsoft 图形 API和 PowerShell。
- 至少以身份验证策略管理员的身份登录到Microsoft Entra 管理中心。
- 浏览到 Entra ID>身份验证方法>策略。
- 选择 “添加外部方法 ”(或 “添加方法>外部身份验证方法”)。
- 填写必填字段:
- 显示名称:便于用户识别的名称(例如“Contoso External MFA - Duo”)。 创建后无法更改此值。
- 客户端 ID:外部 MFA 供应商提供的客户端 ID。
- App ID:Microsoft Entra ID中提供程序应用的应用程序(注册)ID。
- 发现端点:您的提供商提供的 OIDC 发现 URL。
- 出现提示时,对外部提供程序的应用授予管理员同意。 如果不立即同意,则在授予许可之前,该方法将保持禁用状态。
- 在 “启用”和“目标”下:
- 将状态设置为 “已启用”。
- 最初,仅面向测试用户组(而不是 所有用户)。
- 可选择为紧急访问帐户配置排除目标对象。
- 选择“保存”。
注册外部 MFA 的测试用户
配置外部 MFA 策略并针对测试组后,请确保为外部身份验证方法注册用户。
验证用户注册状态
检查为特定用户注册了哪些身份验证方法:
Connect-MgGraph -Environment China -ClientId 'YOUR_CLIENT_ID' -TenantId 'YOUR_TENANT_ID' -Scopes "UserAuthenticationMethod.Read.All"
$userId = "<user-object-id-or-upn>"
Get-MgUserAuthenticationMethod -UserId $userId |
Format-Table Id, @{N='Type'; E={$_.'@odata.type'}}
为用户注册外部 MFA
如果需要为外部身份验证方法注册用户,管理员可以在Microsoft Entra 管理中心中注册它们:
- 转到 用户>所有用户。
- 选择要注册外部 MFA 的用户。
- 在“用户”菜单中,选择“ 身份验证方法”,然后选择“ + 添加身份验证方法”。
- 选择 外部身份验证方法。
- 选择一个或多个外部 MFA 方法,然后选择“ 保存”。
有关批量注册选项的详细信息,请参阅管理 Microsoft Entra ID 中的外部 MFA。
确认整个测试组的注册情况
生成注册报告:
Connect-MgGraph -Environment China -ClientId 'YOUR_CLIENT_ID' -TenantId 'YOUR_TENANT_ID' -Scopes "UserAuthenticationMethod.Read.All", "GroupMember.Read.All"
$groupId = "<test-group-object-id>"
$members = Get-MgGroupMember -GroupId $groupId -All
$report = foreach ($member in $members) {
$methods = Get-MgUserAuthenticationMethod -UserId $member.Id
$hasExternalMFA = $methods | Where-Object { $_.'@odata.type' -like '*external*' }
[PSCustomObject]@{
UserId = $member.Id
UPN = $member.AdditionalProperties.userPrincipalName
ExternalMFA = if ($hasExternalMFA) { "Yes" } else { "No" }
MethodCount = $methods.Count
}
}
$report | Format-Table -AutoSize
$report | Export-Csv -Path "ExternalMFA-Registration-Report.csv" -NoTypeInformation
注释
如果组织以前启用了外部 MFA 注册公共预览版,在此期间注册的用户应已显示为已注册。 在批量注册之前,先使用注册检查功能进行验证。
创建需要 MFA 的测试条件访问策略
创建一个新的条件访问策略,使用标准的 Require multifactor authentication 授予控制;外部 MFA 现已可满足此要求,而无需使用自定义控制。
注释
由于缓存和复制,新策略可能需要几个小时才能在身份验证时生效。
在Microsoft Entra 管理中心中创建策略
- 至少以身份验证策略管理员的身份登录到Microsoft Entra 管理中心。
- 搜索 Microsoft Entra 条件访问。
- 浏览到 策略。
- 选择“+ 新建策略”。
- 配置策略:
-
名称:
Test - Require MFA via External Auth Method -
作业:
- 用户:仅选择测试用户组。
- 排除:您的紧急访问账户。
-
目标资源:
- 云应用:选择与现有自定义控制策略所针对的相同应用(例如,Office 365 或特定业务线应用)。
-
条件 (可选)镜像现有的自定义控制策略:
- 客户端应用、设备平台、位置等。
-
授予:
- 选择“授予访问权限”。
- 检查 “需要多重身份验证”。
- 选中“选择”。
-
名称:
- 最初将策略设置为 “仅报告” 模式。
- 选择“创建”。
Important
不要将 要求身份验证强度 用于外部 MFA。 使用标准要求多重身份验证授权。 外部 MFA 尚与身份验证强度策略不兼容。
验证仅报告行为
- 让测试用户登录到其中一个目标应用。
- 浏览到 保护>登录日志。
- 查找测试用户的登录并检查 “条件访问 ”选项卡:
- 确认新策略显示为 仅报告:未应用 或 仅报告:成功。
- 验证 MFA 方法是否已列为外部身份验证方法。
启用策略
当您对仅报告模式下的结果感到满意后:
- 编辑政策。
- 将 仅报告 更改为 启用。
- 保存。
将测试用户从自定义控制策略移动到外部 MFA 策略
若要避免用户同时受到旧自定义控件策略和新的外部 MFA 策略的约束,请从旧的自定义控制策略中排除测试用户。
从自定义控制策略中排除测试用户
- 打开现有的自定义控制条件访问策略。
- 在用户>排除下,添加您的测试用户组。
- 保存策略。
使用 What If 验证策略分配
- 搜索 Microsoft Entra 条件访问。
- 浏览到 策略>What If。
- 选择测试用户。
- 选择目标应用。
- 选择 “What If”。
- 确认:
- 旧的自定义控件策略 不适用于 测试用户。
- 新的 MFA 策略 确实 适用。
测试对受保护应用的登录
若要确认对受保护应用的登录按预期工作,请让测试用户登录,然后验证他们是否受到外部提供程序的 MFA 质询,而不是旧的自定义控件,并且登录日志反映新的策略和身份验证方法是否正确。
进行测试登录
让每个测试用户(或具有代表性的示例)执行以下步骤:
- 登录到目标应用(例如,Office 365、Azure门户或业务线应用)。
- 验证:
- 用户受到外部 MFA 提供程序(而不是自定义控件)的挑战。
- 完成 MFA 后,用户将获取对应用的访问权限。
- 体验是无缝的,符合预期。
- 测试边缘用例:
- 从新设备/浏览器登录。
- 从不合规设备登录(如果存在设备合规性策略)。
- 从阻止的位置登录(如果存在基于位置的条件)。
- 尝试使用过期或撤销的 MFA 会话登录。
验证登录日志
- 浏览到 保护>登录日志。
- 按测试用户筛选。
- 对于每个登录,请确认:
- MFA 结果:成功
- 身份验证方法:外部身份验证方法名称
- 条件访问:新策略评估并授予访问权限
- 满足 MFA 要求:外部身份验证方法(而不是自定义控件)
验证下游集成
如果适用,请验证这些方案是否适用于外部 MFA:
- 自助式密码重置(SSPR):用户可以通过外部 MFA 重置密码。
- PIM 角色激活:用户可以使用外部 MFA 激活特权角色。
- Intune 设备注册:设备注册通过外部 MFA 完成。
全面推出
测试成功后,将迁移扩展到所有用户。
分阶段推出计划
| 阶段 | Scope | 行动 |
|---|---|---|
| 阶段 1 | 测试组 (5-10 个用户) | 上述步骤 1-6 |
| 第 2 阶段 | IT/早期采用者(50-100 个用户) | 扩大外部 MFA 适用对象和 CA 策略范围 |
| 阶段 3 | 按部门 | 逐渐将组从自定义控件移动到 MFA 策略 |
| 阶段 4 | 所有用户 | 完全迁移,删除自定义控制策略 |
扩大外部 MFA 定向范围
更新外部 MFA 身份验证方法策略以包括更广泛的组:
Connect-MgGraph -Environment China -ClientId 'YOUR_CLIENT_ID' -TenantId 'YOUR_TENANT_ID' -Scopes "Policy.ReadWrite.AuthenticationMethod"
$configId = "<external-mfa-configuration-id>"
$params = @{
"@odata.type" = "#microsoft.graph.externalAuthenticationMethodConfiguration"
includeTargets = @(
@{
"@odata.type" = "microsoft.graph.authenticationMethodTarget"
id = "all_users"
targetType = "group"
}
)
}
Update-MgPolicyAuthenticationMethodPolicyAuthenticationMethodConfiguration `
-AuthenticationMethodConfigurationId $configId `
-BodyParameter $params
更新 MFA 条件访问策略
展开新的条件访问策略以面向所有用户(替换测试组)。
删除自定义控件引用
迁移所有用户后:
- 禁用旧的自定义控制条件访问策略。
- 监控登录日志 1 到 2 周,以确认没有出现回归问题。
- 删除旧的自定义控件策略。
- 从租户中删除自定义控件定义。
Warning
在确认新的外部 MFA 策略稳定之前,请勿删除自定义控件配置。 将旧策略禁用(未删除)保留至少两周作为回滚选项。
故障排除
| Issue | 可能的原因 | 解决方案 |
|---|---|---|
| 未向用户显示外部 MFA 方法 | 方法未启用,或用户不在 includeTargets 中 | 在“身份验证方法”中验证外部 MFA 策略的定位范围 |
| 管理员同意错误 | 权限不足 | 使用全局管理员或特权角色管理员来授予同意 |
| 登录日志中未识别到 MFA | 策略配置错误 | 确保使用 Require MFA 授权(而非身份验证强度) |
| 未被要求进行 MFA 验证的用户 | CA 策略未生效 | 使用 What If 工具调试策略评估 |
| 外部提供方错误 | OIDC 配置不匹配 | 与供应商核实 Discovery URL、客户端 ID 和应用 ID |
| 看到这两个提示的用户 | 用户未被排除在旧策略之外 | 验证自定义控制策略中的排除组 |