使用 SQL Server 的旧式 AD FS 联合服务器场

此 Active Directory 联合身份验证服务 (AD FS) 的拓扑不同于使用 Windows 内部数据库 (WID) 的联合服务器场部署拓扑,因为它不会将数据复制到场中的每个联合服务器。 而场中的所有联合服务器都可以将数据读取和写入一个公共数据库,该数据库存储在企业网络中运行 Microsoft SQL Server 的服务器上。

重要

如果需要创建 AD FS 场并使用 SQL Server 来存储配置数据,可以使用 SQL Server 2008 及更新版本,包括 SQL Server 2012 和 SQL Server 2014。

部署注意事项

本部分介绍与此部署拓扑关联的预期受众、优势和限制的各种注意事项。

哪些用户应使用本拓扑?

  • 具有超过 100 个信任关系的大型组织,需要为其内部用户和外部用户提供对联合应用程序或服务的单一登录 (SSO) 访问权限

  • 已使用 SQL Server 并希望利用其现有工具和专业知识的组织

使用此拓扑有什么好处?

  • 支持更大数量的信任关系(超过 100 个)

  • 支持令牌重播检测(安全功能)和项目解析(安全断言标记语言 (SAML) 2.0 协议的一部分)

  • 支持 SQL Server 的全部优势,例如数据库镜像、故障转移群集、报告和管理工具

使用此拓扑有什么限制?

  • 默认情况下,此拓扑不提供数据库冗余。 尽管使用 WID 的联合服务器场拓扑会自动复制场中每个联合服务器上的 WID 数据库,但具有 SQL Server 拓扑的联合服务器场仅包含一个数据库副本

    注意

    SQL Server 支持许多不同的数据和应用程序冗余选项,包括故障转移群集、数据库镜像和几种不同类型的 SQL Server 复制。

Microsoft 信息技术 (IT) 部门使用高安全性(同步)模式的 SQL Server 数据库镜像和故障转移群集,为 SQL Server 实例提供高可用性支持。 SQL Server 事务(对等)和合并复制尚未经过 Microsoft 的 AD FS 产品团队的测试。 有关 SQL Server 的详细信息,请参阅高可用性解决方案概述选择适当的复制类型

支持的 SQL Server 版本

Windows Server 2012 R2 中的 AD FS 支持以下 SQL Server 版本:

  • SQL Server 2008 / R2

  • SQL Server 2012

  • SQL Server 2014

服务器放置和网络布局建议

在网络负载均衡 (NLB) 群集配置过程中,与使用 WID 的联合服务器场拓扑类似,场中的所有联合服务器都配置为使用一个群集域名系统 (DNS) 名称(表示联合身份验证服务名称)和一个群集 IP 地址。 这有助于 NLB 主机将客户端请求分配给各个联合服务器。 联合服务器代理可用于代理对联合服务器场的客户端请求。

下图显示了虚构的 Contoso Pharmaceuticals 公司如何使用 SQL Server 拓扑在企业网络中部署其联合服务器场。 它还显示了该公司如何配置外围网络,使其可以访问 DNS 服务器(这是一个附加的 NLB 主机,使用与企业网络 NLB 群集相同的群集 DNS 名称 (fs.contoso.com)),并具有两个 Web 应用程序代理(wap1 和 wap2)。

Illustration that shows how the fictional Contoso Pharmaceuticals company deployed its federation server farm with SQL Server topology in the corporate network.

有关如何配置网络环境以用于联合服务器或 Web 应用程序代理的详细信息,请参阅 AD FS 要求规划 Web 应用程序代理基础结构 (WAP) 中的“名称解析要求”部分。

SQL Server 场的高可用性选项

在 Windows Server 2012 R2 中,AD FS 提供了两个新选项用于通过 SQL Server 来支持 AD FS 场中的高可用性。

  • 支持 SQL Server AlwaysOn 可用性组

  • 支持使用 SQL Server 合并复制实现地理分布式高可用性

本部分将介绍每个选项及其可以解决的问题,以及在确定要部署的选项时要注意的一些重要事项。

注意

使用 Windows 内部数据库 (WID) 的 AD FS 场在主要联合服务器节点上提供基本数据冗余和读取/写入访问权限,在辅助节点上提供只读访问权限。  可以在位于本地的拓扑或地理分布式拓扑中使用此选项。

使用 WID 时请注意以下限制:

  • 如果你的信赖方信任数为 100 个或更少,则 WID 场的限制为 30 台联合服务器。
  • WID 场不支持令牌重播检测或项目解析(安全断言标记语言 (SAML) 协议的一部分)。

下表提供了有关使用 WID 场的摘要:

1-100 个 RP 信任 100 个以上的 RP 信任
1-30 AD FS 节点: WID 受支持 1-30 AD FS 节点: 不支持使用 WID - 需要 SQL
超过 30 个 AD FS 节点: 不支持使用 WID - 需要 SQL 超过 30 个 AD FS 节点: 不支持使用 WID - 需要 SQL

AlwaysOn 可用性组

概述

AlwaysOn 可用性组是在 SQL Server 2012 中引入的,它提供了一种创建高可用性 SQL Server 实例的新方法。  AlwaysOn 可用性组结合了群集和数据库镜像的元素,可以在 SQL 实例层和数据库层实现冗余与故障转移。  与前面的高可用性选项不同,AlwaysOn 可用性组不需要在数据库层部署公用存储(或存储区域网络)。

可用性组由一个主副本(一组读写主数据库)和一到四个可用性副本(一组相应的辅助数据库)组成。  可用性组支持单个读写副本(主副本)和一到四个只读可用性副本。  每个可用性副本都必须驻留在单个 Windows Server 故障转移群集 (WSFC) 群集的不同节点中。  有关 AlwaysOn 可用性组的详细信息,请参阅 AlwaysOn 可用性组概述 (SQL Server)

从 AD FS SQL Server 场的节点的角度来看,AlwaysOn 可用性组会替代单个 SQL Server 实例作为策略/项目数据库。  客户端(AD FS 安全令牌服务)使用可用性组侦听程序连接到 SQL。

下图显示了具有 AlwaysOn 可用性组的 AD FS SQL Server 场。

Diagram that shows an AD FS SQL Server Farm with AlwaysOn Availability group.

注意

AlwaysOn 可用性组要求 SQL Server 实例驻留在 Windows Server 故障转移群集 (WSFC) 节点上。

注意

只有一个可用性副本可以充当自动故障转移目标,其他三个副本依赖于手动故障转移。

重要部署注意事项

如果你打算将 AlwaysOn 可用性组与 SQL Server 合并复制结合使用,请注意下面的“将 AD FS 与 SQL Server 合并复制配合使用时的重要部署注意事项”中所述的问题。  具体而言,包含作为复制订阅服务器的数据库的 AlwaysOn 可用性组发生故障转移时,复制订阅将失败。 要恢复复制,复制管理员必须手动重新配置订阅服务器。  有关 SQL Server 中具体问题的描述,请参阅复制订阅服务器和 AlwaysOn 可用性组 (SQL Server);有关 AlwaysOn 可用性组和复制选项的总体支持声明,请参阅复制、更改跟踪、变更数据捕获和 AlwaysOn 可用性组 (SQL Server)

将 AD FS 配置为使用 AlwaysOn 可用性组

使用 AlwaysOn 可用性组配置 AD FS 场需要对 AD FS 部署过程稍作修改:

  1. 必须先创建要备份的数据库,然后才能配置 AlwaysOn 可用性组。  AD FS 在安装新 AD FS SQL Server 场的第一个联合身份验证服务节点并对其初始配置的过程中创建其数据库。  在 AD FS 配置过程中,必须指定 SQL 连接字符串,因此必须将第一个 AD FS 场节点配置为直接连接到 SQL 实例(这只是临时的)。   有关配置 AD FS 场(包括使用 SQL Server 连接字符串配置 AD FS 场节点)的具体指导,请参阅配置联合服务器

  2. 创建 AD FS 数据库后,将其分配到 AlwaysOn 可用性组,然后使用创建和配置可用性组 (SQL Server) 中所述的 SQL Server 工具和过程创建公用 TCPIP 侦听器。

  3. 最后,使用 PowerShell 编辑 AD FS 属性来更新 SQL 连接字符串,以使用 AlwaysOn 可用性组侦听程序的 DNS 地址。

    用于更新 AD FS 配置数据库 SQL 连接字符串的示例 PSH 命令:

    PS:\>$temp= Get-WmiObject -namespace root/ADFS -class SecurityTokenService
    PS:\>$temp.ConfigurationdatabaseConnectionstring="data source=<SQLCluster\SQLInstance>; initial catalog=adfsconfiguration;integrated security=true"
    PS:\>$temp.put()
    
    
  4. 用于更新 AD FS 项目解析服务数据库 SQL 连接字符串的示例 PSH 命令:

    PS:\> Set-AdfsProperties –artifactdbconnection "Data source=<SQLCluster\SQLInstance >;Initial Catalog=AdfsArtifactStore;Integrated Security=True"
    

SQL Server 合并复制

合并复制也是在 2012 SQL Server 中引入的,它可以实现具有以下特征的 AD FS 策略数据冗余:

  • 在所有节点(而不仅仅是主要节点)上的读写功能

  • 异步复制更少量的数据,以避免给系统造成延迟

下图显示了一个使用合并复制的异地冗余 AD FS SQL Server 场(1 个发布服务器,2 个订阅服务器):

server farm using SQL

将 AD FS 与 SQL Server 合并复制配合使用时的重要部署注意事项(上图中的注释编号)

有关如何将 AD FS 配置为使用 SQL Server 合并复制的更详细说明,请参阅使用 SQL Server 复制设置异地冗余

另请参阅

规划 AD FS 部署拓扑Windows Server 2012 R2 中的 AD FS 设计指南