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

重要

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

本文介绍如何使用 Windows 内部数据库(WID)升级 Active Directory 联合身份验证服务(AD FS)的场行为级别。 从 Windows Server 2016 开始,场行为级别(FBL)已引入 AD FS。 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 架构必须至少为 88。 有关升级域的详细信息,请参阅 将域控制器升级到较新版本的 Windows Server

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

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

农场行为级别

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

可以将更高版本的 AD FS 服务器加入具有较低 FBL 的场。 场在与现有节点相同的 FBL 上运行。 如果在同一服务器场中运行多个 Windows Server 版本,并且其 FBL 值为最低版本的值,则该服务器场为“混合”状态。但是,在提高 FBL 级别之前,无法利用较高版本 Windows Server 的功能。 如果您的组织希望在提升 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. 删除旧的 Web 应用程序代理服务器,通过运行以下 PowerShell cmdlet,仅保留前面步骤中配置的新服务器:

    Set-WebApplicationProxyConfiguration -ConnectedServersName "WAPServerName1", "WAPServerName2"
    
  6. 若要升级 WAP 服务器的 ConfigurationVersion,请运行以下 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 部署,下面是一些可能有用的文章。