AD FS 要求

以下是部署 Active Directory 联合身份验证服务(AD FS)的要求:

证书要求

TLS/SSL 证书

每个 AD FS 和 Web 应用程序代理服务器都有一个 TLS/SSL 证书,用于为联合身份验证服务发出的 HTTPS 请求提供服务。 Web 应用程序代理可以具有额外的证书来服务对已发布应用程序的请求。

有关 TLS/SSL 证书的建议

对所有 AD FS 联合服务器和 Web 应用程序代理使用相同的 TLS/SSL 证书。

TLS/SSL 证书的要求

联合服务器上的 TLS/SSL 证书必须满足以下要求:

  • 证书为公众所信任(适用于生产部署)
  • 证书包含服务器身份验证增强型密钥用法(EKU)值。
  • 证书在使用者或使用者可选名称 (SAN) 中包含联合身份验证服务名称,例如 fs.contoso.com
  • 对于在端口 443 上进行用户证书身份验证的情况,证书包含 certauth.\<federation service name\>,例如在 SAN 中的 certauth.fs.contoso.com
  • 对于使用 Windows 10 之前版本客户端进行设备注册或对本地资源进行新式身份验证,SAN 必须为组织中使用的每个用户主体名称 (UPN) 后缀包含 enterpriseregistration.\<upn suffix\>

Web 应用程序代理上的 TLS/SSL 证书必须满足以下要求:

  • 如果代理用于代理使用 Windows 集成身份验证的 AD FS 请求,则代理 TLS/SSL 证书必须与联合服务器 TLS/SSL 证书相同(使用同一密钥)。
  • 如果启用了 AD FS 属性 ExtendedProtectionTokenCheck(AD FS 中的默认设置),则代理 TLS/SSL 证书必须与联合服务器 TLS/SSL 证书相同(使用相同的密钥)。
  • 否则,代理 TLS/SSL 证书的要求与联合服务器 TLS/SSL 证书的要求相同。

服务通信证书

大多数 AD FS 方案不需要此证书,包括Microsoft Entra ID 和 Office 365。 默认情况下,AD FS 将初始配置时提供的 TLS/SSL 证书配置为服务通信证书。

服务通信证书建议

  • 使用与您用于 TLS/SSL 的相同证书。

令牌签名证书

此证书用于为信赖方签署颁发的令牌,因此信赖方应用程序必须识别该证书及其关联的密钥为已知和受信任。 令牌签名证书发生更改时,例如证书过期或配置了新的证书,所有信赖该证书的方都必须更新。

令牌签名证书建议

使用 AD FS 默认的、内部生成的自签名令牌签名证书。

令牌签名证书要求

  • 如果你的组织要求使用企业公钥基础结构(PKI)中的证书进行令牌签名,则可以使用 Install-AdfsFarm cmdlet 的 SigningCertificateThumbprint 参数来满足此要求。
  • 无论是使用默认内部生成的证书还是外部注册的证书,更改令牌签名证书时,必须确保所有信赖方都使用新的证书信息进行更新。 否则,这些信赖方将无法登录。

令牌加密/解密证书

此证书由加密颁发给 AD FS 令牌的声明提供程序使用。

关于令牌加密/解密证书的建议

使用 AD FS 默认的、内部生成的自签名令牌解密证书。

加密/解密令牌所需的证书要求

  • 如果你的组织要求将企业 PKI 中的证书用于令牌签名,则可以使用 Install-AdfsFarm cmdlet 的 DecryptingCertificateThumbprint 参数来满足此要求。
  • 无论是使用默认内部生成的证书还是外部注册的证书,更改令牌解密证书时,都必须确保所有声明提供程序都使用新的证书信息进行更新。 否则,使用未更新的任何声明提供程序登录会失败。

谨慎

用于令牌签名和令牌解密/加密的证书对于联合身份验证服务的稳定性至关重要。 管理自己的令牌签名和令牌解密/加密证书的客户应确保这些证书已备份,并在恢复事件期间独立提供。

用户证书

  • 在 AD FS 中使用 x509 用户证书身份验证时,所有用户证书必须链接到 AD FS 和 Web 应用程序代理服务器信任的根证书颁发机构。

硬件要求

AD FS 和 Web 应用程序代理硬件要求(物理要求或虚拟要求)都根据 CPU 而定,因此,你应调整场的大小以提供处理容量。

AD FS 的内存和磁盘要求相当静态。 下表显示了这些要求:

硬件要求 最低要求 建议的要求
内存 2 GB 4 GB
磁盘空间 32 GB 100 GB

SQL Server 硬件要求

如果对 AD FS 配置数据库使用 Azure SQL,请根据最基本的 SQL Server 建议调整 SQL Server 的大小。 AD FS 数据库大小较小,AD FS 不会对数据库实例执行大量处理负载。 但是,AD FS 在身份验证期间多次连接到数据库,因此网络连接应可靠。 遗憾的是,AD FS 配置数据库不支持 SQL Azure。

代理要求

  • 若要进行 Extranet 访问,必须部署 Web 应用程序代理角色服务 - 远程访问服务器角色的一部分。

  • 第三方代理必须支持作为 AD FS 代理支持的 MS-ADFSPIP 协议 。 有关第三方供应商的列表,请参阅 有关 AD FS 的常见问题解答(常见问题解答)。

  • AD FS 2016 需要 Windows Server 2016 上的 Web 应用程序代理服务器。 不能为在 2016 场行为级别运行的 AD FS 2016 场配置下级代理。

  • 无法在同一计算机上安装联合服务器和 Web 应用程序代理角色服务。

AD DS 要求

域控制器要求

  • AD FS 需要运行 Windows Server 2008 或更高版本的域控制器。

  • Windows Hello 企业版至少需要一个 Windows Server 2016 域控制器。

注释

对具有 Windows Server 2003 域控制器的环境的所有支持都已结束。 有关详细信息,请参阅 Microsoft生命周期信息

域功能级要求

  • 所有用户帐户域和 AD FS 服务器加入的域必须在 Windows Server 2003 或更高版本的域功能级别上运行。

  • 如果证书显式映射到 AD DS 中的用户帐户,则需要 Windows Server 2008 域功能级别或更高版本进行客户端证书身份验证。

架构要求

  • AD FS 2016 的新安装需要 Active Directory 2016 架构(最低版本 85)。

  • 将 AD FS 场行为级别(FBL)提升到 2016 级别需要 Active Directory 2016 架构(最低版本 85)。

服务帐户要求

  • 任何标准域帐户都可以用作 AD FS 的服务帐户。 也支持组托管服务帐户托管服务帐户。 配置 AD FS 时,运行时所需的权限会自动添加回去。

  • AD 服务帐户所需的“用户权限分配”为作为服务登录

  • NT Service\adfssrvNT Service\drs 所需的“用户权限分配”为生成安全审核作为服务登录

  • 组托管服务帐户至少需要一个运行 Windows Server 2012 或更高版本的域控制器。 组托管服务帐户 gMSA 必须位于默认 CN=Managed Service Accounts 容器下。

  • 对于 Kerberos 身份验证,必须在 AD FS 服务帐户上注册服务主体名称“HOST/<adfs\_service\_name>”。 默认情况下,AD FS 在创建新的 AD FS 场时配置此要求。 如果此过程失败(例如存在冲突或权限不足),则会看到警告,应手动添加它。

域要求

  • 所有 AD FS 服务器都必须加入 AD DS 域。

  • 场中的所有 AD FS 服务器都必须部署在同一域中。

  • AD FS 场第一个节点安装取决于 PDC 是否可用。

多林要求

  • AD FS 服务器加入的域必须信任包含向 AD FS 服务进行身份验证的用户的每个域或林。

  • AD FS 服务帐户所属的林必须信任所有用户登录林。

  • AD FS 服务帐户必须有权读取每个域中的用户属性,这些域包含对 AD FS 服务进行身份验证的用户。

配置数据库要求

本部分介绍分别使用 Windows 内部数据库 (WID) 或 SQL Server 数据库作为数据库的 AD FS 场的要求和限制:

WID

  • WID 场不支持 SAML 2.0 的项目解析配置文件。

  • WID 场不支持令牌重播检测。 此功能仅在 AD FS 充当联合身份验证提供程序并使用来自外部声明提供程序的安全令牌的情况下使用。

下表汇总了 WID 与 SQL Server 场中支持的 AD FS 服务器数。

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 必需

SQL Server

  • 对于 Windows Server 2016 中的 AD FS,支持 SQL Server 2008 及更高版本。

  • SQL Server 场支持 SAML 项目解析和令牌重放检测。

浏览器要求

通过浏览器或浏览器控件执行 AD FS 身份验证时,浏览器必须符合以下要求:

  • 必须启用 JavaScript。

  • 对于单一登录,必须将客户端浏览器配置为允许 Cookie。

  • 必须支持服务器名称指示(SNI)。

  • 对于用户证书和设备证书身份验证,浏览器必须支持 TLS/SSL 客户端证书身份验证。

  • 若要使用 Windows 集成身份验证无缝登录,必须在本地 Intranet 区域或受信任的站点区域中配置联合身份验证服务名称(例如 https:\/\/fs.contoso.com)。

网络要求

防火墙要求

位于 Web 应用程序代理和联合服务器场之间的防火墙以及客户端和 Web 应用程序代理之间的防火墙都必须启用 TCP 端口 443 入站。

此外,如果需要客户端用户证书身份验证(使用 X509 用户证书进行客户端TLS 身份验证),并且未在证书身份验证终结点上启用端口 443。 AD FS 2016 要求在客户端与 Web 应用程序代理之间的防火墙上启用 TCP 端口 49443 入站。 此要求不适用于 Web 应用程序代理与联合服务器之间的防火墙。

有关混合端口要求的详细信息,请参阅 混合标识所需的端口和协议

有关详细信息,请参阅 保护 Active Directory 联合身份验证服务的最佳做法

DNS 要求

  • 对于 Intranet 访问,在内部公司网络 (Intranet) 中访问 AD FS 服务的所有客户端必须能够将 AD FS 服务名称解析为多个或单个 AD FS 服务器的负载均衡器。

  • 对于 Extranet 访问,所有从公司网络 (extranet/internet) 外部访问 AD FS 服务的客户端必须能够将 AD FS 服务名称解析为多个或单个 Web 应用程序代理服务器的负载均衡器。

  • 非军事区域(DMZ)中的每个 Web 应用程序代理服务器都必须能够将 AD FS 服务名称解析为 AD FS 服务器或 AD FS 服务器的负载均衡器。 可以使用外围网络中的备用域名系统(DNS)服务器或使用 HOSTS 文件更改本地服务器解析来创建此配置。

  • 对于 Windows 集成身份验证,必须使用 DNS A 记录(而不是 CNAME)作为联合身份验证服务名称。

  • 对于端口 443 上的用户证书身份验证,需要在 DNS 中配置“certauth.<联合服务名称>”,以解析为联合服务器或 Web 应用代理。

  • 对于使用 Windows 10 之前版本客户端进行设备注册或对本地资源进行新式身份验证,必须为组织中使用的每个 UPN 后缀配置 enterpriseregistration.\<upn suffix\> 才能解析为联合服务器或 Web 应用程序代理。

负载均衡器要求

  • 负载均衡器不得终止 TLS/SSL。 AD FS 支持使用证书身份验证的多个用例,这会在终止 TLS/SSL 时中断。 任何用例都不支持在负载均衡器上终止 TLS/SSL。
  • 使用支持 SNI 的负载均衡器。 如果没有,在 AD FS 或 Web 应用程序代理服务器上使用 0.0.0.0 回退绑定应提供解决方法。
  • 使用 HTTP(而不是 HTTPS)运行状况探测终结点对路由流量执行负载均衡器运行状况检查。 此要求可避免与 SNI 相关的任何问题。 对这些探测终结点的响应是 HTTP 200 OK,并且在本地提供,而不依赖于后端服务。 可以使用路径“/adfs/probe”通过 HTTP 访问 HTTP 探测
    • http://<Web Application Proxy name>/adfs/probe
    • http://<AD FS server name>/adfs/probe
    • http://<Web Application Proxy IP address>/adfs/probe
    • http://<AD FS IP address>/adfs/probe
  • 不建议使用 DNS 轮循机制进行负载均衡。 使用这种类型的负载均衡无法通过健康探测自动地从负载均衡器中删除节点。
  • 不建议在负载均衡器中使用基于 IP 的会话相关性或停滞会话对到 AD FS 的流量进行身份验证。 使用旧式身份验证协议将邮件客户端连接到 Office 365 邮件服务(Exchange Online)时,可能会导致某些节点过载。

权限要求

执行 AD FS 安装和初始配置的管理员必须在 AD FS 服务器上具有本地管理员权限。 如果本地管理员无权在 Active Directory 中创建对象,则他们必须先让域管理员创建所需的 AD 对象,然后使用 AdminConfiguration 参数配置 AD FS 场。