Windows Server 的 AD FS 要求
下面是部署 AD FS 时必须满足的各项要求:
证书要求
证书在联合服务器、Web 应用程序代理、声明感知应用程序和 Web 客户端之间起到保护通信的最重要作用。 对证书的要求根据你是要设置联合服务器计算机还是代理计算机而异,如本部分中所述。
联合服务器证书
证书类型 | 要求、支持和注意事项 |
---|---|
安全套接字层 (SSL) 证书:这是一个用于保护联合服务器和客户端之间的通信的标准 SSL 证书。 | - 此证书必须是公共可信的* X509 v3 证书。 - 访问任何 AD FS 终结点的所有客户端都必须信任此证书。 强烈建议使用公共(第三方)证书颁发机构 (CA) 颁发的证书。 可以在测试实验室环境中的联合服务器上正常使用自签名 SSL 证书。 不过,对于生产环境,建议从某个公共 CA 获取证书。 - 针对 SSL 证书支持受 Windows Server 2012 R2 支持的任何密钥大小。 - 不支持使用 CNG 密钥的证书。 - 与工作区加入/设备注册服务一起使用时,AD FS 服务的 SSL 证书使用者可选名称必须包含 enterpriseregistration 值,后接组织的用户主体名称 (UPN) 后缀,例如 enterpriseregistration.contoso.com。 - 支持通配符证书。 创建 AD FS 场时,系统会提示你提供 AD FS 服务的服务名称(例如 adfs.contoso.com)。 - 强烈建议为 Web 应用程序代理使用相同的 SSL 证书。 但是,当通过 Web 应用程序代理支持 Windows 集成身份验证终结点以及启用扩展保护身份验证(默认设置)时,证书必须相同。 - 此证书的使用者名称用于表示部署的 AD FS 的每个实例的联合身份验证服务名称。 出于此原因,你可能要考虑为任何新的 CA 颁发的证书选择最能代表你的公司或伙伴组织名称的使用者名称。 证书的标识必须与联合身份验证服务名称(例如 fs.contoso.com)匹配。标识是 dNSName 类型的使用者可选名称扩展,如果没有使用者可选名称条目,则标识是指定为公用名的使用者名称。 证书中可以存在多个使用者可选名称条目,前提是它们中必须有一个与联合身份验证服务名称匹配。 - 重要说明:强烈建议在 AD FS 场的所有节点中以及 AD FS 场的所有 Web 应用程序代理中使用相同的 SSL 证书。 |
服务通信证书:此证书用于保护联合服务器之间的通信安全以确保 WCF 消息的安全性。 | - 默认情况下,将 SSL 证书用作服务通信证书。 但是,你还可以选择将另一个证书配置为服务通信证书。 - 重要说明:如果使用 SSL 证书作为服务通信证书,当 SSL 证书过期时,请确保将续订的 SSL 证书配置为服务通信证书。 这种配置不会自动发生。 - 使用 WCF 消息安全性的 AD FS 客户端必须信任此证书。 - 建议使用由公共(第三方)证书颁发机构 (CA) 颁发的服务器身份验证证书。 - 服务通信证书不能是使用 CNG 密钥的证书。 - 可以使用 AD FS 管理控制台管理此证书。 |
令牌签名证书:这是一种用于安全地对联合服务器颁发的所有令牌进行签名的标准 X509 证书。 | - 默认情况下,AD FS 使用 2048 位密钥创建自签名证书。 - 也支持 CA 颁发的证书,可以使用“AD FS 管理”管理单元更改此类证书 - 必须通过 CSP 加密提供程序存储和访问 CA 颁发的证书。 - 令牌签名证书不能是使用 CNG 密钥的证书。 - AD FS 无需使用外部注册的证书进行令牌签名。 AD FS 会在这些自签名证书过期之前自动续订它们,为此,它首先将新证书配置为辅助证书以便合作伙伴能够使用它们,然后通过一个称为“自动证书滚动更新”的过程将其切换为主证书。我们建议使用默认设置,即自动生成的用于令牌签名的证书。 如果你的组织策略要求为令牌签名配置不同的证书,你可以在安装时使用 PowerShell 指定证书(使用 Install-AdfsFarm cmdlet 的 –SigningCertificateThumbprint 参数)。 安装后,可以使用 AD FS 管理控制台或 PowerShell cmdlet Set-AdfsCertificate 和 Get-AdfsCertificate 来查看和管理令牌签名证书。 将外部注册的证书用于令牌签名时,AD FS 不会执行自动证书续订或滚动更新。 此过程必须由管理员执行。 要在一个证书即将过期时滚动更新证书,可以在 AD FS 中配置一个辅助令牌签名证书。 默认情况下,所有令牌签名证书在联合元数据中发布,但 AD FS 仅使用主令牌签名证书来为令牌实际签名。 |
令牌解密/加密证书:这是一个用于解密/加密任何传入令牌的标准 X509 证书。 该证书也在联合元数据中发布。 | - 默认情况下,AD FS 使用 2048 位密钥创建自签名证书。 - 也支持 CA 颁发的证书,可以使用“AD FS 管理”管理单元更改此类证书 - 必须通过 CSP 加密提供程序存储和访问 CA 颁发的证书。 - 令牌解密/加密证书不能是使用 CNG 密钥的证书。 - 默认情况下,AD FS 使用其自己的在内部生成的自签名证书进行令牌解密。 AD FS 无需使用外部注册的证书即可实现此目的。 此外,AD FS 会在自签名证书过期之前自动续订这些证书。 建议使用默认的自动生成的证书进行令牌解密。 如果你的组织策略要求为令牌解密配置不同的证书,你可以在安装时使用 PowerShell 指定证书(使用 Install-AdfsFarm cmdlet 的 –DecryptionCertificateThumbprint 参数)。 安装后,可以使用 AD FS 管理控制台或 PowerShell cmdlet Set-AdfsCertificate 和 Get-AdfsCertificate 来查看和管理令牌解密证书。 将外部注册的证书用于令牌解密时,AD FS 不会执行自动证书续订。 此过程必须由管理员执行。 - AD FS 服务帐户必须有权访问本地计算机个人存储中的令牌签名证书私钥。 该访问权限是在设置阶段授予的。 如果随后更改令牌签名证书,你还可以使用 AD FS 管理管理单元来授予此访问权限。 |
注意
用于令牌签名和令牌解密/加密的证书对联合身份验证服务的稳定性至关重要。 管理自己的令牌签名和令牌解密加密证书的客户应确认是否备份了这些证书且这些证书是否可在恢复事件期间单独使用。
注意
在 AD FS 中,可以将用于数字签名的安全哈希算法 (SHA) 级别更改为 SHA-1 或 SHA-256(更加安全)。 AD FS 不支持与诸如 MD5 的其他哈希方法(与 Makecert.exe 命令行工具一起使用的默认哈希算法)一起使用证书。 作为最佳安全做法,我们建议你为所有签名使用 SHA-256(这是默认设置)。 我们建议你仅在必须与不支持使用 SHA-256 通信的产品(如非 Microsoft 产品或旧版 AD FS)互操作的情况下使用 SHA-1。
注意
从 CA 收到证书后,请确保将所有的证书导入到本地计算机的个人证书存储中。 你可以使用证书 MMC 管理单元将证书导入到个人存储中。
硬件要求
以下最低和建议的硬件要求适用于 Windows Server 2012 R2 中的 AD FS 联合服务器:
硬件要求 | 最低要求 | 建议的要求 |
---|---|---|
CPU 速度 | 1.4 GHz 64 位处理器 | 四核 2 GHz |
RAM | 512 MB | 4 GB |
磁盘空间 | 32 GB | 100 GB |
软件要求
以下 AD FS 要求适用于 Windows Server® 2012 R2 操作系统中内置的服务器功能:
要进行 Extranet 访问,必须部署属于 Windows Server® 2012 R2 远程访问服务器角色的 Web 应用程序代理角色服务。 Windows Server® 2012 R2 中的 AD FS 不支持早期版本的联合服务器代理。
不能在同一台计算机上安装联合服务器和 Web 应用程序代理角色服务。
AD DS 要求
域控制器要求
所有用户域以及 AD FS 服务器所加入到的域中的域控制器必须运行 Windows Server 2008 或更高版本。
注意
对包含 Windows Server 2003 域控制器的环境的所有支持将在 Windows Server 2003 外延支持结束日期之后结束。 强烈建议客户尽快升级其域控制器。 有关 Microsoft 支持生命周期的其他信息,请访问此页面。 对于特定于 Windows Server 2003 域控制器环境的问题,我们只会针对安全问题发布修复方法,前提是可以在 Windows Server 2003 外延支持结束之前发布。
注意
AD FS 需要完全可写的域控制器(而不是只读域控制器)才能正常运行。 如果规划的拓扑包含只读域控制器,则该只读域控制器可用于身份验证,但 LDAP 声明处理需要连接到可写域控制器。
域功能级要求
所有用户帐户域和 AD FS 服务器加入的域必须在 Windows Server 2003 或更高版本的域功能级别上运行。
大多数 AD FS 功能不要求 AD DS 功能级别的修改就可以成功运行。 但是,如果证书明确映射到 AD DS 中的用户帐户,则 Windows Server 2008 域功能级别或更高版本是要成功运行客户端证书身份验证所必需的。
架构要求
AD FS 不要求对 AD DS 进行架构更改或功能级的修改。
若要使用工作区加入功能,必须将 AD FS 服务器加入到的林的架构设置为 Windows Server 2012 R2。
服务帐户要求
任何标准服务帐户都可以用作 AD FS 的服务帐户。 也支持组托管服务帐户托管服务帐户。 这需要至少一个运行 Windows Server 2012 或更高版本的域控制器(建议部署两个或更多个)。
若要在加入域的客户端与 AD FS 之间正常使用 Kerberos 身份验证,必须将“HOST/<adfs_service_name>”注册为服务帐户中的 SPN。 默认情况下,如果 AD FS 拥有足够的权限来执行此操作,则在创建新的 AD FS 场时,它会配置此项注册。
在其中包含的用户向 AD FS 服务进行身份验证的每个用户域中,必须信任 AD FS 服务帐户。
域要求
所有 AD FS 服务器都必须加入 AD DS 域。
场中的所有 AD FS 服务器必须部署在单个域中。
AD FS 服务器加入到的域必须信任其中包含的用户向 AD FS 服务进行身份验证的每个用户帐户域。
多林要求
AD FS 服务器加入到的域必须信任其中包含的用户向 AD FS 服务进行身份验证的每个用户帐户域或林。
在其中包含的用户向 AD FS 服务进行身份验证的每个用户域中,必须信任 AD FS 服务帐户。
配置数据库要求
下面是根据配置存储类型应用的要求和限制:
WID
如果你的信赖方信任数为 100 个或更少,则 WID 场的限制为 30 台联合服务器。
WID 配置数据库不支持 SAML 2.0 中的项目解析配置文件。 WID 配置数据库不支持令牌重播检测。 此功能仅在 AD FS 充当联合身份验证提供程序并使用来自外部声明提供程序的安全令牌的情况下使用。
只要服务器数量不超过 30,就支持在不同的数据中心部署 AD FS 服务器以实现故障转移或地理负载均衡。
下表提供了有关使用 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 |
SQL Server
对于 Windows Server 2012 R2 中的 AD FS,可以使用 SQL Server 2008 及更高版本
浏览器要求
通过浏览器或浏览器控件执行 AD FS 身份验证时,浏览器必须符合遵守以下要求:
必须启用 JavaScript
必须启用 Cookie
必须支持服务器名称指示 (SNI)
对于用户证书和设备证书身份验证(工作区加入功能),浏览器必须支持 SSL 客户端证书身份验证
多个主要浏览器和平台已经历内容呈现和功能方面的验证,下面列出了这些验证的详细信息。 对于此表中未包含的浏览器和设备,如果它们符合上面列出的要求,则它们仍受支持:
浏览器 | 平台 |
---|---|
IE 10.0 | Windows 7、Windows 8.1、Windows Server 2008 R2、Windows Server 2012、Windows Server 2012 R2 |
IE 11.0 | Windows 7、Windows 8.1、Windows Server 2008 R2、Windows Server 2012、Windows Server 2012 R2 |
Windows Web 身份验证代理 | Windows 8.1 |
Firefox [v21] | Windows 7、Windows 8.1 |
Safari [v7] | iOS 6、Mac OS-X 10.7 |
Chrome [v27] | Windows 7、Windows 8.1、Windows Server 2012、Windows Server 2012 R2、Mac OS-X 10.7 |
重要
已知问题 - Firefox:使用设备证书识别设备的工作区加入功能在 Windows 平台上无法正常运行。 Firefox 目前不支持使用预配到 Windows 客户端中用户证书存储的证书来执行 SSL 客户端证书身份验证。
Cookie
AD FS 将创建必须存储在客户端计算机上的基于会话的 Cookie 和永久 Cookie,以提供登录、注销、单一登录 (SSO) 和其他功能。 因此,必须将客户端浏览器配置为接受 Cookie。 用于身份验证的 Cookie 始终是为原始服务器编写的安全超文本传输协议 (HTTPS) 会话 Cookie。 如果未将客户端浏览器配置为允许使用这些 Cookie,则 AD FS 无法正常运行。 永久 Cookie 用于保留用户选择的声明提供方。 你可以通过在 AD FS 登录页的配置文件中使用配置设置来禁用它们。 出于安全原因,对 TLS/SSL 的支持是必需的。
Extranet 要求
若要提供对 AD FS 服务的 Extranet 访问,必须将 Web 应用程序代理 角色服务部署为面向 Extranet 的角色,该角色以安全方式将身份验证请求中转到 AD FS 服务。 这可以在 AD FS 服务终结点与源自 Internet 的请求之间提供隔离,并可以在所有安全密钥(例如令牌签名证书)与此类请求之间提供隔离。 此外,Extranet 帐户软锁定等功能需要使用 Web 应用程序代理。 有关 Web 应用程序代理的详细信息,请参阅 Web 应用程序代理。 `
网络要求
必须正确配置以下网络服务才能在组织中成功部署 AD FS:
配置公司防火墙
位于 Web 应用程序代理和联合服务器场之间的防火墙以及客户端和 Web 应用程序代理之间的防火墙都必须启用 TCP 端口 443 入站。
此外,如果需要客户端用户证书身份验证(使用 X509 用户证书进行 clientTLS 身份验证),Windows Server 2012 R2 中的 AD FS 要求在客户端和 Web 应用程序代理之间的防火墙上启用 TCP 端口 49443 入站通信。 无需在 Web 应用程序代理和联合服务器之间的防火墙上执行此操作。
注意
此外,请确保端口 49443 未由 AD FS 和 Web 应用程序代理服务器上的任何其他服务使用。
Configuring DNS(配置 DNS)
要进行 Intranet 访问,在内部公司网络 (Intranet) 中访问 AD FS 服务的所有客户端必须能够将 AD FS 服务名称(SSL 证书提供的名称)解析为多个或单个 AD FS 服务器的负载均衡器。
对于 Extranet 访问,所有从公司网络 (extranet/internet) 外部访问 AD FS 服务的客户端必须能够将 AD FS 服务名称(SSL 证书提供的名称)解析为多个或单个 Web 应用程序代理服务器的负载均衡器。
要正常进行 Extranet 访问,外围网络中的每个 Web 应用程序代理服务器必须能够将 AD FS 服务名称(SSL 证书提供的名称)解析为 AD FS 服务器的负载均衡器或 AD FS 服务器。 可使用外围网络中的备用 DNS 服务器或使用 HOSTS 文件更改本地服务器分辨率来实现这一操作。
要在网络内部和网络外部对通过 Web 应用程序代理公开的一部分终结点正常使用 Windows 集成身份验证,必须使用 A 记录(而不是 CNAME)指向负载均衡器。
有关为联合身份验证服务和设备注册服务配置公司 DNS 的信息,请参阅为联合身份验证服务和 DRS 配置公司 DNS。
有关为 Web 应用程序代理配置公司 DNS 的信息,请参阅步骤 1:配置 Web 应用程序代理基础结构中的“配置 DNS”部分。
有关如何使用 NLB 配置群集 IP 地址或群集 FQDN 的信息,请参阅 http://go.microsoft.com/fwlink/?LinkId=75282 上的“指定群集参数”。
属性存储要求
AD FS 需要至少一个属性存储用于进行用户身份验证以及为这些用户提取安全声明。 有关 AD FS 支持的属性存储的列表,请参阅属性存储的角色。
注意
默认情况下,AD FS 会自动创建“Active Directory”属性存储。 属性存储要求取决于你的组织充当的是帐户伙伴(承载联合用户)还是资源伙伴(承载联合应用程序)。
LDAP 属性存储
使用其他基于轻型目录访问协议 (LDAP) 的属性存储时,你必须连接到支持 Windows 集成身份验证的 LDAP 服务器。 必须采用如 RFC 2255 中所述的 LDAP URL 格式编写 LDAP 连接字符串。
AD FS 服务的服务帐户还必须有权在 LDAP 属性存储中检索用户信息。
SQL Server 属性存储
要使 Windows Server 2012 R2 中的 AD FS 能够成功运行,承载 SQL Server 属性存储的计算机必须运行 Microsoft SQL Server 2008 或更高版本。 使用基于 SQL 的属性存储时,还必须配置连接字符串。
自定义属性存储
你可以开发自定义属性存储来启用高级方案。
内置于 AD FS 的策略语言可以引用自定义属性存储,以便可以增强以下任何方案:
创建本地身份验证的用户的声明
补充外部身份验证的用户的声明
授权用户获取令牌
授权服务,以获取用户行为的令牌
在 AD FS 向信赖方颁发的安全令牌中颁发附加数据。
必须在 .NET 4.0 或更高版本上构建所有自定义属性存储。
使用自定义属性存储时,可能还需要配置连接字符串。 在这种情况下,可以输入你选择的自定义代码,以便启用与自定义属性存储的连接。 在此情况下,连接字符串是一组解释为自定义属性存储的开发人员实现的名称/值对。有关开发和使用自定义属性存储的详细信息,请参阅属性存储概述。
应用程序要求
AD FS 支持使用以下协议的声明感知应用程序:
WS-Federation
WS-Trust
使用 IDPLite、SPLite 和 eGov1.5 配置文件的 SAML 2.0 协议。
OAuth 2.0 授权授予配置文件
AD FS 还支持对 Web 应用程序代理支持的任何非声明感知应用程序进行身份验证和授权。
身份验证要求
AD DS 身份验证(主身份验证)
支持使用 AD DS 的以下标准身份验证机制进行 Intranet 访问:
使用 Kerberos 和 NTLM 协商进行 Windows 集成身份验证
使用用户名/密码进行表单身份验证
使用映射到 AD DS 中用户帐户的证书进行证书身份验证
支持使用以下身份验证机制进行 Extranet 访问:
使用用户名/密码进行表单身份验证
使用映射到 AD DS 中用户帐户的证书进行证书身份验证
使用接受 Windows 集成身份验证的 WS-Trust 终结点的协商(仅限 NTLM)进行 Windows 集成身份验证。
对于证书身份验证:
扩展到可以用 PIN 保护的智能卡。
AD FS 不会提供 GUI 来让用户输入 PIN,需要在使用客户端 TLS 时显示的客户端操作系统中输入此 PIN。
智能卡的读取器和加密服务提供程序 (CSP) 必须在浏览器所在的计算机上工作。
智能卡证书必须链接到所有 AD FS 服务器和 Web 应用程序代理服务器上的受信任根。
必须通过以下方法之一将该证书映射到 AD DS 中的用户帐户:
证书使用者名称对应于 AD DS 中的用户帐户的 LDAP 可分辨名称。
证书使用者 Altname 扩展具有 AD DS 中用户帐户的用户主体名称 (UPN)。
要在 Intranet 中使用 Kerberos 进行无缝 Windows 集成身份验证,
服务名称必须是受信任站点或本地 Intranet 站点的一部分。
此外,必须在运行 AD FS 场的服务帐户中设置 HOST/<adfs_service_name> SPN。
多重身份验证
AD FS 使用一个提供商模型来支持其他身份验证(除了 AD DS 支持的主身份验证之外),供应商/客户可以通过该模型构建自己的、可供管理员在登录期间注册和使用的多重身份验证适配器。
必须在 .NET 4.5 上构建每个 MFA 适配器。
有关 MFA 的详细信息,请参阅使用适用于敏感应用程序的附加多重身份验证管理风险。
设备身份验证
AD FS 支持在最终用户将其设备加入工作区过程中,使用设备注册服务预配的证书进行设备身份验证。
工作区加入要求
最终用户可以使用 AD FS 将设备加入组织工作区。 此操作由 AD FS 中的设备注册服务提供支持。 因此,最终用户在 AD FS 支持的应用程序中可以获得额外的 SSO 优势。 此外,管理员可以通过仅限已加入组织工作区的设备访问应用程序来管理风险。 下面是启用此方案时所要满足的要求。
AD FS 支持将 Windows 8.1 和 iOS 5+ 设备加入工作区
若要使用工作区加入功能,AD FS 服务器加入到的林的架构必须为 Windows Server 2012 R2。
AD FS 服务的 SSL 证书的使用者可选名称必须包含 enterpriseregistration 值,后接组织的用户主体名称 (UPN) 后缀,例如 enterpriseregistration.corp.contoso.com。
加密要求
下表提供了有关 AD FS 令牌签名、令牌加密/解密功能的其他加密支持信息:
算法 | 密钥长度 | 协议/应用程序/注释 |
---|---|---|
TripleDES – 默认为 192(支持 192 – 256)- http://www.w3.org/2001/04/xmlenc#tripledes-cbc | >= 192 | 支持用于解密安全令牌的算法。 不支持使用此算法加密安全令牌。 |
AES128 - http://www.w3.org/2001/04/xmlenc#aes128-cbc | 128 | 支持用于解密安全令牌的算法。 不支持使用此算法加密安全令牌。 |
AES192 - http://www.w3.org/2001/04/xmlenc#aes192-cbc | 192 | 支持用于解密安全令牌的算法。 不支持使用此算法加密安全令牌。 |
AES256 - http://www.w3.org/2001/04/xmlenc#aes256-cbc | 256 | Default。 支持用于加密安全令牌的算法。 |
TripleDESKeyWrap - http://www.w3.org/2001/04/xmlenc#kw-tripledes | .NET 4.0+ 支持的所有密钥大小 | 支持用于加密对称密钥(此密钥用于加密安全令牌)的算法。 |
AES128KeyWrap - http://www.w3.org/2001/04/xmlenc#kw-aes128 | 128 | 支持用于加密对称密钥(此密钥用于加密安全令牌)的算法。 |
AES192KeyWrap - http://www.w3.org/2001/04/xmlenc#kw-aes192 | 192 | 支持用于加密对称密钥(此密钥用于加密安全令牌)的算法。 |
AES256KeyWrap - http://www.w3.org/2001/04/xmlenc#kw-aes256 | 256 | 支持用于加密对称密钥(此密钥用于加密安全令牌)的算法。 |
RsaV15KeyWrap - http://www.w3.org/2001/04/xmlenc#rsa-1_5 | 1024 | 支持用于加密对称密钥(此密钥用于加密安全令牌)的算法。 |
RsaOaepKeyWrap - http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p | 1024 | 默认。 支持用于加密对称密钥(此密钥用于加密安全令牌)的算法。 |
SHA1-http://www.w3.org/PICS/DSig/SHA1_1_0.html | 空值 | 由 AD FS 服务器在生成项目 SourceId 时使用:在这种情况下,STS 使用 SHA1(根据 SAML 2.0 标准中的建议)为项目 sourceiD 创建一个 160 位短值。 它还由 AD FS Web 代理(WS2003 时间范围中的旧组件)用来识别“上次更新”时间值的更改,以便知道何时从 STS 更新了信息。 |
SHA1withRSA- | 空值 | 由 AD FS 服务器在验证 SAML AuthenticationRequest 的签名、为项目解析请求或响应签名、创建令牌签名证书时使用。 在这种情况下,SHA256 是默认设置,仅当合作伙伴(信赖方)无法支持 SHA256 且必须使用 SHA1 时才使用 SHA1。 |
权限要求
执行 AD FS 安装和初始配置的管理员必须在本地域(即联合服务器加入到的域)中拥有域管理员权限。