通过 SQL Server 升级到 Windows Server 2016 中的 AD FS
重要
Microsoft 强烈建议迁移到 Microsoft Entra ID,而不是升级到最新版本的 AD FS。 有关详细信息,请参阅关于停用 AD FS 的资源
注意
仅开始具有明确的计划完成时间范围的升级。 建议不要让 AD FS 长时间处于混合模式状态,因为让 AD FS 保持在混合模式状态可能会导致服务器场出现问题。
将 Windows Server 2012 R2 AD FS 服务器场移动到 Windows Server 2016 AD FS 服务器场
本文介绍如何将 AD FS Windows Server 2012 R2 服务器场升级到 Windows Server 2016 中的 AD FS。 这些步骤适用于 AD FS 数据库使用 SQL Server 的情况。
将 AD FS 升级到 Windows Server 2016 FBL
Windows Server 2016 的 AD FS 中新增了服务器场行为级别 (FBL) 功能。 此功能适用于服务器场,确定了 AD FS 服务器场可使用的功能。 默认情况下,Windows Server 2012 R2 AD FS 服务器场中的 FBL 位于 Windows Server 2012 R2 FBL。
Windows Server 2016 AD FS 服务器可被添加到 Windows Server 2012 R2 服务器场中,其运行的 FBL 与 Windows Server 2012 R2 相同。 对于以这种方式运行的 Windows Server 2016 AD FS 服务器,你的服务器场可以说是“混合式”的。但是,在 FBL 提高到 Windows Server 2016 之前,新的 Windows Server 2016 功能将不可用。
以下是使用混合服务器场的一些重要功能:
管理员可以将新的 Windows Server 2016 联合服务器添加到现有 Windows Server 2012 R2 服务器场。 结果是,服务器场处于“混合模式”下,并运行 Windows Server 2012 R2 服务器场行为级别。 为了确保在整个服务器场的行为一致,无法在此模式下配置或使用 Windows Server 2016 的新增功能。
管理员可以从混合模式服务器场中删除所有 Windows Server 2012 R2 联合服务器。 在这种情况下,其中一台新的 Windows Serve 2016 联合服务器将被提升为主节点。 然后,管理员就可以将 FBL 从 Windows Server 2012 R2 提高至 Windows Server 2016。 这样,就可以配置并使用 AD FS Windows Server 2016 的任何新增功能了。
希望升级到 Windows Server 2016 的 AD FS Windows Server 2012 R2 组织无需部署全新的服务器场,也不用导出和导入配置数据。 相反,他们可以在现有服务器场处于联机状态时将 Windows Server 2016 节点添加到现有服务器场,并且仅在 FBL 提升时导致相对短暂的停机时间。
在混合服务器场模式下,AD FS 服务器场无法使用 Windows Server 2016 的 AD FS 中引入的任何新特性或功能。 希望试用新功能的组织可在提高 FBL 后进行试用。 如果贵组织希望在升级 FBL 之前测试新功能,则需要部署一个单独的服务器场。
本文的其余部分将介绍在 Windows Server 2012 R2 环境中添加 Windows Server 2016 联合服务器的步骤。 这些步骤是在下图所示的测试环境中进行的。
注意
必须先移除所有 Windows 2012 R2 节点,然后才能迁移到 Windows Server 2016 FBL 中的 AD FS。 无法将 Windows Server 2012 R2 OS 升级到 Windows Server 2016 并让其自动成为 2016 节点。 需要将其删除,并替换为新的 2016 节点。
如果在 AD FS 中配置了 AlwaysOnAvailability 组或合并复制,请在升级前删除任何 AD FS 数据库的所有复制,并将所有节点指向主 SQL 数据库。 在完成这些任务后,按说明执行服务器场升级。 在完成升级后,向新数据库添加 AlwaysOnAvailability 组或合并复制。
以下体系结构图显示了用于验证和记录以下步骤的设置。
将 Windows 2016 AD FS Server 加入 AD FS 服务器场
在服务器管理器中,在 Windows Server 2016 上安装 Active Directory 联合身份验证服务角色。
在 AD FS 配置向导中,将新的 Windows Server 2016 服务器加入现有的 AD FS 服务器场中。
在“欢迎”屏幕上,选择“将联合服务器添加到联合身份验证服务器场”,然后选择“下一步”。
在“连接到 Active Directory 域服务”屏幕上,指定一个有权限执行联盟服务配置的管理员帐户,然后选择“下一步”。
在“指定服务器场”屏幕上,输入 SQL 服务器和实例的名称,然后选择“下一步”。
在“指定 SSL 证书”屏幕上,指定证书,然后选择“下一步”。
在“指定服务帐户”屏幕上,指定服务帐户,然后选择“下一步”。
在“查看选项”屏幕上,查看选项并选择“下一步”。
在“先决条件检查”屏幕上,确保所有先决条件检查都已通过,然后选择“配置”。
在“结果”屏幕上,确保服务器配置成功,然后选择“关闭”。
删除 Windows Server 2012 R2 AD FS 服务器
以下步骤将删除 Windows Server 2012 R2 AD FS 服务器。
注意
在使用 SQL 作为数据库时,无需使用 Set-AdfsSyncProperties -Role
命令来设置主 AD FS 服务器。 在此配置中,所有节点都被视为主节点。
在“服务器管理器”中,转到 Windows Server 2012 R2 AD FS 服务器。 在“管理”下,选择“删除角色和功能”:
在“开始之前”屏幕上,选择“下一步”,然后在“服务器选择”屏幕上,选择“下一步”。
在“服务器角色”屏幕上,取消选中“Active Directory 联合身份验证服务”选项,然后选择“下一步”。
在“功能”屏幕上,选择“下一步”。
在“确认”屏幕上,选择“删除”。
在完成功能删除后,重新启动服务器。
提高服务器场行为级别 (FBL)
以下步骤将提高服务器的 FBL。
重要
在继续本部分中的过程之前,请查看以下先决条件:
确保在 Active Directory 环境中完成服务器林和域的准备过程,并确保 Active Directory 具有 Windows Server 2016 架构。 本文中所述的过程基于从 Windows 2016 域控制器开始的体系结构。 示例体系结构不需要本部分中的步骤,因为这些任务已包含在 AD 安装过程中。
从“设置”运行“Windows 更新”,确保 Windows Server 2016 保持最新。 继续更新过程,直到不再需要更新为止。
确保 AD FS 服务帐户在 SQL Server 和 ADFS 服务器场中的每个服务器上都有管理权限。
在 Windows Server 2016 Server 上,打开 PowerShell 并运行以下命令:
$cred = Get-Credential
在 SQL Server 上输入具有管理员权限的凭据。
在 PowerShell 中输入以下命令:
Invoke-AdfsFarmBehaviorLevelRaise -Credential $cred
在提示符下,选择 Y(是)以开始提升级别。 操作完成后,FBL 便已成功提升。
如果进入 AD FS 管理,就会看到新的节点。
可以使用 PowerShell cmdlet
Get-AdfsFarmInformation
来显示当前的 FBL:
升级现有 WAP 服务器的配置版本
在每个 Web 应用程序代理上,通过在提升的窗口中执行以下 PowerShell 命令来重新配置 WAP:
$trustcred = Get-Credential -Message "Enter Domain Administrator credentials" Install-WebApplicationProxy -CertificateThumbprint {SSLCert} -fsname fsname -FederationServiceTrustCredential $trustcred
运行以下命令从群集中删除旧服务器,并且只保留运行最新服务器版本(先前已重新配置)的 WAP 服务器:
Set-WebApplicationProxyConfiguration -ConnectedServersName WAPServerName1, WAPServerName2
运行以下命令检查 WAP 配置。
ConnectedServersName
值反映的是上一个命令中运行的服务器:Get-WebApplicationProxyConfiguration
要升级 WAP 服务器
ConfigurationVersion
,请运行以下 PowerShell 命令:Set-WebApplicationProxyConfiguration -UpgradeConfigurationVersion
再次运行
Get-WebApplicationProxyConfiguration
命令,验证ConfigurationVersion
是否已升级。