使用 Windows 内部数据库升级现有 AD FS 场

重要

Microsoft 强烈建议迁移到 Microsoft Entra ID,而不是升级到最新版本的 AD FS。 有关详细信息,请参阅关于停用 AD FS 的资源

在本文中,你将了解如何使用 Windows 内部数据库 (WID) 升级 Active Directory 联合身份验证服务 (AD FS) 的场行为级别。 从 Windows Server 2016 开始,AD FS 中引入了场行为级别 (FBL)。 FBl 是一个场范围设置,用于确定 AD FS 场可以使用的功能。

管理员可以在“混合模式”下将新的联合服务器添加到现有的 Windows Server 场。混合模式在与原始服务器场相同的场行为级别运行,以确保行为一致。 无法配置或使用高版本 Windows Server AD FS 的功能。

先决条件

必须满足以下先决条件才能升级场行为级别:

  • 确定要升级到的 Windows Server 版本

  • 在新计算机上部署目标 Windows Server 版本,应用所有 Windows 更新,并安装 Active Directory 联合身份验证服务服务器角色。 有关详细信息,请参阅向现有的联合服务器场中添加联合服务器

  • 如果你还在使用 Windows Server Web 应用程序代理,请在新计算机上部署目标 Windows Server 版本,应用所有 Windows 更新,安装远程访问服务器角色和 Web 应用程序代理角色服务。 有关更多信息,请参见使用 Web 应用程序代理

  • 如果要在 Windows Server 2016 或更高版本中升级到 AD FS,则服务器场升级要求 AD 架构至少为 85 级。 如果要在 Windows Server AD FS 2019 或更高版本中升级到 AD FS,则 AD 架构必须至少为 88。 有关升级域的详细信息,请参阅将域控制器升级到较新版本的 Windows Server

  • 制定明确的计划完成时间框架。 不建议长时间运行混合模式状态。 使 AD FS 处于混合模式状态可能会导致服务器场出现问题。

  • 备份 AD FS 配置和联合服务器。

场行为级别

默认情况下,新 AD FS 场中的 FBL 与安装的第一个场节点的 Windows Server 版本的值匹配。

可以将更高版本的 AD FS 服务器加入具有较低 FBL 的场。 场在与现有节点相同的 FBL 上运行。 当多个 Windows Server 版本在同一服务器场中以最低版本的 FBL 值运行时,服务器场是“混合的”。但是,在提高 FBL 之前,无法利用更高版本的功能。 如果你的组织希望在提升 FBL 之前测试新功能,你需要部署单独的场。

下表按 Windows Server 版本列出了可能的 FBL 值和配置数据库名称。

Windows Server 版本 FBL 值 AD FS 配置数据库名称
2012 R2 1 AdfsConfiguration
2016 3 AdfsConfigurationV3
2019 和 2022 4 AdfsConfigurationV4

注意

升级 FBL 将创建新的 AD FS 配置数据库。

现在,你已了解 FBL 的用途并已完成先决条件,接下来可以查看当前的 FBL。

要查找你当前的 FBL:

  1. 登录到你的联合服务器并打开提升的 PowerShell 会话。

  2. 运行以下 PowerShell 命令以返回当前 FBL 和场节点信息。

    Get-AdfsFarmInformation
    
  3. 请查看 CurrentFarmBehaviorFarmNodes

迁移联合身份验证服务器

收集当前联合场信息后,即可开始升级过程。 要开始升级:

  1. 将新的联合服务器添加到现有的场中。 有关详细信息,请参阅向现有的联合服务器场中添加联合服务器

  2. 登录新的联合服务器,然后打开提升的 PowerShell 会话。 如果你有多个服务器,请仅在一个服务器上运行此命令。

  3. 运行以下命令,将联合服务器同步属性设置为使用主计算机角色。 有关详细信息,请参阅 Set-AdfsSyncProperties

    Set-AdfsSyncProperties -Role PrimaryComputer
    
  4. 登录到场中的任何其他联合服务器,打开提升的 PowerShell 会话。

  5. 运行以下命令,将角色设置为辅助计算机。

    Set-AdfsSyncProperties -Role SecondaryComputer -PrimaryComputerName "<primary-server-FQDN>"
    
  6. 将任何负载平衡器、DNS 或网络配置更新为使用新的联合服务器,以验证服务器是否正常运行。 有关详细信息,请参阅验证 Windows Server 2012 R2 联合服务器是否正常运行

  7. 从以前的服务器中卸载 Active Directory 联合身份验证服务服务器角色,然后运行以下命令以移除过时的条目。

    Set-AdfsFarmInformation -RemoveNode "<old-server-FQDN>"
    

现在,你已将新的联合服务器用于场,并删除了以前的联合服务器,接下来可以升级 FBL。 有关停用的详细信息,请参阅解除 AD FS 服务器授权的步骤

提升场行为等级

收集当前联合场信息后,即可开始升级过程。 要开始升级:

  1. 登录主联合服务器,然后打开提升的 PowerShell 会话。

  2. 运行以下命令以测试是否可以提高服务器场的行为级别。

    Test-AdfsFarmBehaviorLevelRaise
    
  3. 查看输出后,若要升级服务器场行为级别,请运行以下命令。 系统将提示你是否要继续。

    Invoke-AdfsFarmBehaviorLevelRaise
    
  4. 查看命令输出以确认操作是否成功。 若要验证新的场行为级别,请运行以下 PowerShell 命令以返回当前的 FBL 和场节点信息。

    Get-AdfsFarmInformation
    

你现在已经升级了你的 FBL 以匹配你的目标 Windows Server 版本。 如果你还在使用 Windows Server Web 应用程序代理角色服务,请继续下一节。

升级 Web 应用程序代理

现在,你已经更新了你的 FBL,你需要将 Web 应用程序代理 (WAP) 升级到最新级别。

  1. 登录到新部署的 Web 应用程序代理服务器并打开提升的 PowerShell 会话。

  2. 导入联合证书使用的证书,记下证书指纹。

  3. 若要配置 WAP,请运行以下 PowerShell 命令,将占位符 <value> 替换为你自己的值。 对任何其他 Web 应用程序代理服务器重复此步骤。

    $trustcred = Get-Credential -Message "<Enter Domain Administrator credentials>"
    Install-WebApplicationProxy -CertificateThumbprint "<SSLCertThumbprint>" -FederationServiceName "<FScomputername>" -FederationServiceTrustCredential $trustcred
    
  4. 若要查看当前连接的 Web 应用程序代理服务器,请运行以下命令,记下 ConnectedServerNameConfigurationVersion 值。

    Get-WebApplicationProxyConfiguration
    

    注意

    如果 ConfigurationVersion 为 Windows Server 2016,请跳过下一步。 对于 Windows Server 2016 及更高版本上的 Web 应用程序代理,这个值是正确的。

  5. 运行以下 PowerShell cmdlet 以移除旧的 Web 应用程序代理服务器,仅保留在前面的步骤中配置的新服务器:

    Set-WebApplicationProxyConfiguration -ConnectedServersName "WAPServerName1", "WAPServerName2"
    
  6. 要升级 WAP 服务器的配置版本,请运行以下 PowerShell 命令:

    Set-WebApplicationProxyConfiguration -UpgradeConfigurationVersion
    

现在,你已经完成了 Web 应用程序代理的升级。

证书信任模型与 Windows Hello 企业版

如果在 Windows Server 2019 或更高版本上使用 AD FS,并且在证书信任模型中使用 Windows Hello 企业版,则可能会遇到以下事件日志错误消息。

Received invalid Oauth request. The client 'NAME' is forbidden to access the resource with scope 'ugs'.

修复此错误的方法:

  1. 打开“AD FS 管理”控制台。 转到“服务”>“作用域说明”。

  2. 右键单击“作用域说明”,选择“添加作用域说明”。

  3. 在“名称”下,输入 ugs,然后选择“应用”>“确定”。

  4. 以管理员身份启动 PowerShell 并运行以下命令。

    $id = (Get-AdfsApplicationPermission -ServerRoleIdentifiers 'http://schemas.microsoft.com/ws/2009/12/identityserver/selfscope' | ?{ $_.ClientRoleIdentifier -eq '38aa3b87-a06d-4817-b275-7a316988d93b' }).ObjectIdentifier
    Set-AdfsApplicationPermission -TargetIdentifier $id -AddScope 'ugs'
    
  5. 重启 AD FS 服务。

  6. 重启客户端。 系统应该会提示用户配置 Windows Hello 企业版。

后续步骤

现在,你已经升级了 AD FS 部署,下面是一些可能对你有用的文章。