通过联合身份验证迁移到 Microsoft Entra 多重身份验证

将多重身份验证 (MFA) 解决方案迁移到 Microsoft Entra ID 是迈向云之旅的第一步。 将来还可以考虑迁移到 Microsoft Entra ID 进行用户身份验证。 有关详细信息,请参阅通过云身份验证迁移到 Microsoft Entra 多重身份验证的过程。

若要迁移到使用联合身份验证 Microsoft Entra 多重身份验证,AD FS 上安装了 Microsoft Entra 多重身份验证身份验证提供程序。 Microsoft Entra ID 信赖方信任和其他信赖方信任配置为对迁移的用户使用 Microsoft Entra 多重身份验证。

下图展示了迁移过程。

迁移过程的流程图。本文档中的过程区域和标题具有相同的顺序

创建迁移组

若要创建新的条件访问策略,需要将这些策略分配给组。 为此,你可以使用 Microsoft Entra 安全组或 Microsoft 365 组。 也可以创建或同步新组。

还需要一个 Microsoft Entra 安全组,以迭代方式将用户迁移到 Microsoft Entra 多重身份验证。 在声明规则中使用这些组。

不要重复使用安全组。 如果使用安全组来保护具有条件访问策略的一组高价值应用,请仅将该组用于此用途。

准备 AD FS

将 AD FS 服务器场升级到 2019,将 FBL 升级到 4

在 AD FS 2019 中,可以为信赖方(例如应用程序)指定附加身份验证方法。 使用组成员身份来确定身份验证提供程序。 通过指定附加身份验证方法,可以过渡到 Microsoft Entra 多重身份验证,同时在过渡期间保持其他身份验证不变。 有关详细信息,请参阅使用 WID 数据库升级到 Windows Server 2016 中的 AD FS。 该文章介绍了如何将场升级到 AD FS 2019,以及如何将 FBL 升级到 4。

配置声明规则以调用 Microsoft Entra 多重身份验证

指定 Microsoft Entra 多重身份验证作为附加身份验证方法后,可以分配要使用它的用户组。 为此,可以配置声明规则(也称为信赖方信任)。 使用组可以控制全局调用的或者由应用程序调用的身份验证提供程序。 例如,可以针对注册了组合安全信息的用户调用 Microsoft Entra 多重身份验证,而针对其他用户调用 MFA 服务器。

注意

声明规则需要本地安全组。 更改声明规则之前,请对其进行备份。

备份规则

在配置新的声明规则之前,请备份规则。 你需要在清理过程中还原这些规则。

根据你的配置,可能还需要复制规则,并追加要为迁移创建的新规则。

若要查看全局规则,请运行:

Get-AdfsAdditionalAuthenticationRule

若要查看信赖方信任,请运行以下命令并将 RPTrustName 替换为信赖方信任声明规则的名称:

(Get-AdfsRelyingPartyTrust -Name "RPTrustName").AdditionalAuthenticationRules 

访问控制策略

注意

无法将访问控制策略配置为根据组成员身份调用特定的身份验证提供程序。

若要从访问控制策略过渡到附加身份验证规则,请针对每个使用 MFA 服务器身份验证提供程序的信赖方信任运行以下命令:

Set-AdfsRelyingPartyTrust -TargetName AppA -AccessControlPolicyName $Null

此命令会将逻辑从当前的访问控制策略移入附加身份验证规则。

设置组并查找 SID

需要设置一个特定的组,用于放置要对其调用 Microsoft Entra 多重身份验证的用户。 需要该组的安全标识符 (SID)。

若要查找组 SID,请结合组名使用以下命令

Get-ADGroup "GroupName"

显示 Get-ADGroup 脚本结果的屏幕截图图像。

设置声明规则以调用 Microsoft Entra 多重身份验证

以下 PowerShell cmdlet 针对组中的、不在企业网络上的用户调用 Microsoft Entra 多重身份验证。 将“YourGroupSid”替换为运行上述 cmdlet 后找到的 SID。

请务必查看如何在 AD FS 2019 中选择附加身份验证提供程序

重要

备份声明规则

设置全局声明规则

运行以下 Azure Powershell cmdlet:

(Get-AdfsRelyingPartyTrust -Name "RPTrustName").AdditionalAuthenticationRules

该命令将返回信赖方信任的当前附加身份验证规则。 将以下规则追加到当前声明规则:

c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid", Value == 
"YourGroupSID"] => issue(Type = "http://schemas.microsoft.com/claims/authnmethodsproviders", 
Value = "AzureMfaAuthentication");
not exists([Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid", 
Value=="YourGroupSid"]) => issue(Type = 
"http://schemas.microsoft.com/claims/authnmethodsproviders", Value = 
"AzureMfaServerAuthentication");'

以下示例假设当前声明规则已配置为,当用户从你的网络外部进行连接时,提示他们执行 MFA。 此示例包括需要追加的附加规则。

Set-AdfsAdditionalAuthenticationRule -AdditionalAuthenticationRules 'c:[type == 
"http://schemas.microsoft.com/ws/2012/01/insidecorporatenetwork", value == "false"] => issue(type = 
"http://schemas.microsoft.com/ws/2008/06/identity/claims/authenticationmethod", value = 
"http://schemas.microsoft.com/claims/multipleauthn" );
 c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid", Value == 
"YourGroupSID"] => issue(Type = "http://schemas.microsoft.com/claims/authnmethodsproviders", 
Value = "AzureMfaAuthentication");
not exists([Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid", 
Value=="YourGroupSid"]) => issue(Type = 
"http://schemas.microsoft.com/claims/authnmethodsproviders", Value = 
"AzureMfaServerAuthentication");'

设置每个应用程序的声明规则

此示例将修改特定信赖方信任(应用程序)上的声明规则,并提供必须追加的信息。

Set-AdfsRelyingPartyTrust -TargetName AppA -AdditionalAuthenticationRules 'c:[type == 
"http://schemas.microsoft.com/ws/2012/01/insidecorporatenetwork", value == "false"] => issue(type = 
"http://schemas.microsoft.com/ws/2008/06/identity/claims/authenticationmethod", value = 
"http://schemas.microsoft.com/claims/multipleauthn" );
c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid", Value == 
"YourGroupSID"] => issue(Type = "http://schemas.microsoft.com/claims/authnmethodsproviders", 
Value = "AzureMfaAuthentication");
not exists([Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid", 
Value=="YourGroupSid"]) => issue(Type = 
"http://schemas.microsoft.com/claims/authnmethodsproviders", Value = 
"AzureMfaServerAuthentication");'

在 AD FS 中将 Microsoft Entra 多重身份验证配置为身份验证提供程序

若要为 AD FS 配置 Microsoft Entra 多重身份验证,必须配置每个 AD FS 服务器。 如果场中有多个 AD FS 服务器,则可以使用 Azure AD PowerShell 远程配置这些服务器。

有关此过程的分步说明,请参阅使用 AD FS 将 Microsoft Entra 多重身份验证提供程序一文中的配置 AD FS 服务器

配置服务器后,可以添加 Microsoft Entra 多重身份验证作为附加身份验证方法。

显示“编辑身份验证方法”屏幕的截图,其中选中了“ Microsoft Entra 多重身份验证”和“Azure 多重身份验证服务器”

准备 Microsoft Entra ID 并实现迁移

本部分介绍迁移用户 MFA 设置之前的最后步骤。

将 federatedIdpMfaBehavior 设置为 enforceMfaByFederatedIdp

对于联合域,可以通过 Microsoft Entra 条件访问或本地联合身份验证提供程序强制执行 MFA。 每个联合域都有一个名为 federatedIdpMfaBehavior 的 Microsoft Graph PowerShell 安全设置。 可以将 federatedIdpMfaBehavior 设置为 enforceMfaByFederatedIdp,这样 Microsoft Entra ID 就会接受联合标识提供者执行的 MFA。 如果联合标识提供者未执行 MFA,Microsoft Entra ID 会将请求重定向到联合标识提供者以执行 MFA。 有关详细信息,请参阅 federatedIdpMfaBehavior

注意

federatedIdpMfaBehavior 设置是 New-MgDomainFederationConfiguration cmdlet 的 SupportsMfa 属性的新版本。

对于设置 SupportsMfa 属性的域,这些规则决定 federatedIdpMfaBehavior 和 SupportsMfa 如何协同工作:

  • 不支持在 federatedIdpMfaBehavior 和 SupportsMfa 之间进行切换。
  • 设置 federatedIdpMfaBehavior 属性后,Microsoft Entra ID 将忽略 SupportsMfa 设置。
  • 如果未设置 federatedIdpMfaBehavior 属性,Microsoft Entra ID 将继续遵循 SupportsMfa 设置。
  • 如果未设置 federatedIdpMfaBehavior 或 SupportsMfa,Microsoft Entra ID 将默认为 acceptIfMfaDoneByFederatedIdp 行为。

可以通过 Get-MgDomainFederationConfiguration 检查 federatedIdpMfaBehavior 的状态。

Get-MgDomainFederationConfiguration –DomainID yourdomain.com

也可以通过 Get-MgDomainFederationConfiguration 检查 SupportsMfa 标志的状态:

Get-MgDomainFederationConfiguration –DomainName yourdomain.com

以下示例演示如何使用 Graph PowerShell 将 federatedIdpMfaBehavior 设置为 enforceMfaByFederatedIdp

请求

PATCH https://graph.microsoft.com/beta/domains/contoso.com/federationConfiguration/6601d14b-d113-8f64-fda2-9b5ddda18ecc
Content-Type: application/json
{
  "federatedIdpMfaBehavior": "enforceMfaByFederatedIdp"
}

响应

注意:为了便于阅读,此处显示的响应对象可能会缩短。

HTTP/1.1 200 OK
Content-Type: application/json
{
  "@odata.type": "#microsoft.graph.internalDomainFederation",
  "id": "6601d14b-d113-8f64-fda2-9b5ddda18ecc",
   "issuerUri": "http://contoso.com/adfs/services/trust",
   "metadataExchangeUri": "https://sts.contoso.com/adfs/services/trust/mex",
   "signingCertificate": "A1bC2dE3fH4iJ5kL6mN7oP8qR9sT0u",
   "passiveSignInUri": "https://sts.contoso.com/adfs/ls",
   "preferredAuthenticationProtocol": "wsFed",
   "activeSignInUri": "https://sts.contoso.com/adfs/services/trust/2005/usernamemixed",
   "signOutUri": "https://sts.contoso.com/adfs/ls",
   "promptLoginBehavior": "nativeSupport",
   "isSignedAuthenticationRequestRequired": true,
   "nextSigningCertificate": "A1bC2dE3fH4iJ5kL6mN7oP8qR9sT0u",
   "signingCertificateUpdateStatus": {
        "certificateUpdateResult": "Success",
        "lastRunDateTime": "2021-08-25T07:44:46.2616778Z"
    },
   "federatedIdpMfaBehavior": "enforceMfaByFederatedIdp"
}

根据需要配置条件访问策略

如果使用条件访问来确定何时提示用户进行 MFA,则不需要更改策略。

如果联合域的 SupportsMfa 设置为 false,请分析 Microsoft Entra ID 信赖方信任的声明规则,并创建支持相同安全目标的条件访问策略。

创建条件访问策略以实施与 AD FS 相同的控制后,可以在 Microsoft Entra ID 信赖方上备份并删除声明规则自定义项。

有关更多信息,请参见以下资源:

Microsoft Entra 多重身份验证的注册用户

本部分介绍用户如何注册组合安全(MFA 和自助式密码重置)以及如何迁移其 MFA 设置。 Microsoft Authenticator 可以在无密码模式下使用。 它还可以在任一注册方法中用作 MFA 的第二个因素。

建议让用户注册组合安全性信息,以便在单一位置注册 MFA 和 SSPR 的身份验证方法和设备。

Microsoft 提供了通信模板,你可以将这些模板提供给用户,以指导他们完成组合注册过程。 这些模板包括电子邮件、海报、桌面立牌和各种其他资产的模板。 用户可在 https://aka.ms/mysecurityinfo 上注册其信息,在此过程中他们会转到组合安全性注册屏幕。

我们建议使用条件访问保护安全性注册过程,这需要从受信任的设备或位置进行注册。 有关跟踪注册状态的信息,请参阅 Microsoft Entra ID 的身份验证方法活动

注意

对于必须从不受信任的位置或设备注册其组合安全性信息的用户,可为其颁发临时访问密码,或者暂时将其从策略中排除。

从 MFA 服务器迁移 MFA 设置

可以使用 MFA 服务器迁移实用工具将用户的已注册 MFA 设置从 MFA 服务器同步到 Microsoft Entra ID。 可以同步电话号码、硬件令牌和设备注册,例如 Microsoft Authenticator 设置。

将用户添加到相应的组

  • 如果创建了新的条件访问策略,请将相应的用户添加到这些组。

  • 如果为声明规则创建了本地安全组,请将相应的用户添加到这些组。

建议不要重复使用安全组。 如果使用安全组来保护具有条件访问策略的一组高价值应用,请仅将该组用于此用途。

监视

可以使用身份验证方法使用情况和见解报告来监视 Microsoft Entra 多重身份验证注册。 可以在 Microsoft Entra ID 中找到此报表。 依次选择“监视”、“使用情况和见解”

在“使用情况和见解”中,选择“身份验证方法”

可以在“注册”选项卡上找到详细的 Microsoft Entra 多重身份验证注册信息。可以选择“可以进行 Azure 多重身份验证的用户”超链接向下钻取,以查看已注册用户的列表。

显示注册到 MFA 的用户的“身份验证方法 | 活动”屏幕的图像

清理步骤

完成到 Microsoft Entra 多重身份验证的迁移并准备好解除 MFA 服务器授权后,请执行以下三项操作:

  1. 将 AD FS 上的声明规则还原到迁移前的配置,并删除 MFA 服务器身份验证提供程序。

  2. 删除用作 AD FS 中的身份验证提供程序的 MFA 服务器。 这将确保所有用户使用 Microsoft Entra 多重身份验证,因为它是唯一启用的其他身份验证方法。

  3. 解除 MFA 服务器授权。

还原 AD FS 上的声明规则并删除 MFA 服务器身份验证提供程序

按照“配置声明规则以调用 Microsoft Entra 多重身份验证”中所述的步骤还原到已备份的声明规则,并删除所有 AzureMFAServerAuthentication 声明规则。

例如,删除规则中的以下内容:

c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid", Value ==
"**YourGroupSID**"] => issue(Type = "http://schemas.microsoft.com/claims/authnmethodsproviders",
Value = "AzureMfaAuthentication");
not exists([Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid",
Value=="YourGroupSid"]) => issue(Type =
"http://schemas.microsoft.com/claims/authnmethodsproviders", Value =
"AzureMfaServerAuthentication");'

禁用用作 AD FS 中的身份验证提供程序的 MFA 服务器

此更改可确保仅将 Microsoft Entra 多重身份验证用作身份验证提供程序。

  1. 打开 AD FS 管理控制台。

  2. 在“服务”下,右键单击“身份验证方法”并选择“编辑多重身份验证方法”。

  3. 取消选中“Azure 多重身份验证服务器”旁边的框。

解除 MFA 服务器授权

按照企业服务器解除授权过程删除环境中的 MFA 服务器。

解除 MFA 服务器授权时,可能的注意事项包括:

  • 在删除服务器之前查看 MFA 服务器日志,确保没有任何用户或应用程序正在使用该服务器。

  • 通过多重身份验证服务器上的控制面板卸载该服务器

  • 对于留下的日志和数据目录,可以选择先备份后清理。

  • 卸载多重身份验证 Web 服务器 SDK(如果适用),包括 inetpub\wwwroot\MultiFactorAuthWebServiceSdk 和/或 MultiFactorAuth 目录中留下的任何文件

  • 对于 8.0 之前的 MFA 服务器版本,可能还需要删除多重身份验证手机应用 Web 服务

后续步骤