ADC

Web 服务联合身份验证协议

Web Services 联合身份验证 (WS-Federation) 是一种身份协议,当两个域之间存在信任关系时,它允许一个信任域中的安全令牌服务 (STS) 向另一个信任域中的 STS 提供身份验证信息。

WS-Federation 的优势

WS-Federation 支持主动和被动客户端,而 SAML IdP 仅支持被动客户端。

  • 主动客户端是 Microsoft 本机客户端,例如 Outlook 和 Office 客户端(Word、PowerPoint、Excel 和 OneNote)。
  • 被动客户端是基于浏览器的客户端,例如 Google Chrome、Mozilla Firefox 和 Internet Explorer。

将 NetScaler 用作 WS-Federation 的必备条件

在将 NetScaler 设备配置为 ADFS 代理之前,请查看以下内容:

  • Active Directory。
  • 域 SSL 证书。
  • ADFS 服务器上的 NetScaler SSL 证书和 ADFS 令牌签名证书必须相同。

重要

SAML IdP 现在能够处理 WS-Federation 协议。因此,要配置 WS-Federation IdP,必须实际配置 SAML IdP。您看不到任何明确提及 WS-Federation 的用户界面。

配置为 ADFS 代理和 WS-Federation IdP 时 NetScaler 支持的功能

下表列出了配置为 ADFS 代理和 WS-Federation IdP 时 NetScaler 设备支持的功能。

功能 将 NetScaler 设备配置为 ADFS 代理 NetScaler 用作 WS-Federation IdP NetScaler 用作 ADFSPIP
负载平衡
SSL 终止
速率限制
合并(减少 DMZ 服务器占用空间并节省公共 IP)
Web Application Firewall (WAF)
身份验证卸载到 NetScaler 设备 是(主动和被动客户端)
单点登录 (SSO) 是(主动和被动客户端)
多重 (nFactor) 身份验证 是(主动和被动客户端)
Azure 多重身份验证 是(主动和被动客户端)
可以避开 ADFS 服务器群

将 NetScaler 设备配置为 WS-Federation IdP

在 DMZ 区域中将 NetScaler 配置为 WS-Federation IdP (SAML IdP)。ADFS 服务器与后端中的 AD 域控制器一起配置。

WS-Federation IdP

  1. 向 Microsoft Office365 发出的客户端请求将被重定向到 NetScaler 设备。
  2. 用户输入用于多重身份验证的凭据。
  3. NetScaler 使用 AD 验证凭据,并在 NetScaler 设备上本地生成令牌。凭据将传递给 Office365 进行访问。

注意:

与 F5 Networks 负载平衡器相比,WS-Federation IdP 支持是通过 NetScaler 设备本机完成的。

使用 CLI 将 NetScaler 设备配置为 WS-Federation IdP (SAML IdP)

下面各部分内容是根据完成配置步骤的要求进行分类的。

配置 LDAP 身份验证并添加策略

重要

对于域用户,要使用其公司电子邮件地址登录 NetScaler 设备,必须配置以下内容:

  • 在 NetScaler 设备上配置 LDAP 身份验证服务器和策略。
  • 将其绑定到您的身份验证、授权和审核虚拟 IP 地址(还支持使用现有 LDAP 配置)。
add authentication ldapAction <Domain_LDAP_Action> -serverIP <Active Directory IP> -serverPort 636 -ldapBase "cn=Users,dc=domain,dc=com" -ldapBindDn "cn=administrator,cn=Users,dc=domain,dc=com" -ldapBindDnPassword <administrator password> -encrypted -encryptmethod ENCMTHD_3 -ldapLoginName sAMAccountName -groupAttrName memberOf -subAttributeName cn -secType SSL -ssoNameAttribute UserPrincipalName -followReferrals ON -Attribute1 mail -Attribute2 objectGUID

add authentication Policy <Domain_LDAP_Policy> -rule true -action <Domain_LDAP_Action>
<!--NeedCopy-->

示例

add authentication ldapAction CTXTEST_LDAP_Action -serverIP 3.3.3.3 -serverPort 636 -ldapBase "cn=Users,dc=ctxtest,dc=com" -ldapBindDn "cn=administrator,cn=Users,dc=ctxtest,dc=com" -ldapBindDnPassword xxxxxxxxxxx -encrypted -encryptmethod ENCMTHD_3 -ldapLoginName sAMAccountName -groupAttrName memberOf -subAttributeName cn -secType SSL -ssoNameAttribute UserPrincipalName -followReferrals ON -Attribute1 mail -Attribute2 objectGUID

add authentication Policy CTXTEST_LDAP_Policy -rule true -action CTXTEST_LDAP_Action
<!--NeedCopy-->

将 NetScaler 配置为 WS-Federation IdP 或 SAML IdP

创建用于令牌生成的 WS-Federation IdP (SAML IdP) 操作和策略。稍后将其绑定到身份验证、授权和审核虚拟服务器。

add authentication samlIdPProfile <Domain_SAMLIDP_Profile> -samlIdPCertName <SSL_CERT> -assertionConsumerServiceURL "https://login.microsoftonline.com/login.srf" -samlIssuerName <Issuer Name for Office 365 in ADFS Server> -rejectUnsignedRequests OFF -audience urn:federation:MicrosoftOnline -NameIDFormat persistent -NameIDExpr "HTTP.REQ.USER.ATTRIBUTE(2).B64ENCODE" -Attribute1 IDPEmail -Attribute1Expr "HTTP.REQ.USER.ATTRIBUTE(1)"

add authentication samlIdPPolicy <Domain_SAMLIDP_Policy> -rule "HTTP.REQ.HEADER("referer").CONTAINS("microsoft") || true" -action <Domain_SAMLIDP_Profile>
<!--NeedCopy-->

示例

add authentication samlIdPProfile CTXTEST_SAMLIDP_Profile -samlIdPCertName ctxtest_newcert_2019 -assertionConsumerServiceURL "https://login.microsoftonline.com/login.srf" -samlIssuerName "http://ctxtest.com/adfs/services/trust/" -rejectUnsignedRequests OFF -audience urn:federation:MicrosoftOnline -NameIDFormat persistent -NameIDExpr "HTTP.REQ.USER.ATTRIBUTE(2).B64ENCODE" -Attribute1 IDPEmail -Attribute1Expr "HTTP.REQ.USER.ATTRIBUTE(1)"

add authentication samlIdPPolicy CTXTEST_SAMLIDP_Policy -rule "HTTP.REQ.HEADER("referer").CONTAINS("microsoft") || true" -action CTXTEST_SAMLIDP_Profile
<!--NeedCopy-->

配置身份验证、授权和审核虚拟服务器以对使用公司凭据登录 Office365 的员工进行身份验证

add authentication vserver <Domain_AAA_VS> SSL <IP_address>`
<!--NeedCopy-->

示例

add authentication vserver CTXTEST_AAA_VS SSL 192.168.1.0

bind authentication vserver CTXTEST_AAA_VS -portaltheme RfWebUI
<!--NeedCopy-->

绑定身份验证虚拟服务器和策略

bind authentication vserver <Domain_AAA_VS> -policy <Domain_SAMLIDP_Policy> -priority 100 -gotoPriorityExpression NEXT

bind authentication vserver <Domain_AAA_VS> -policy <Domain_LDAP_Policy> -priority 100 -gotoPriorityExpression NEXT
<!--NeedCopy-->

示例

bind authentication vserver CTXTEST_AAA_VS -policy CTXTEST_SAMLIDP_Policy -priority 100 -gotoPriorityExpression NEXT

bind authentication vserver CTXTEST_AAA_VS -policy CTXTEST_LDAP_Policy -priority 100 -gotoPriorityExpression NEXT

bind ssl vserver CTXTEST_AAA_VS -certkeyName ctxtest_newcert_2019
<!--NeedCopy-->

配置内容切换

add cs action <Domain_CS_Action> -targetVserver <Domain_AAA_VS>

add cs policy <Domain_CS_Policy> -rule "is_vpn_url || http.req.url.contains("/adfs/ls") || http.req.url.contains("/adfs/services/trust") || -action <Domain_CS_Action>
<!--NeedCopy-->

示例

add cs action CTXTEST_CS_Action -targetVserver CTXTEST_AAA_VS

add cs policy CTXTEST_CS_Policy -rule "is_vpn_url || http.req.url.contains("/adfs/ls") || http.req.url.contains("/adfs/services/trust") || -action CTXTEST_CS_Action
<!--NeedCopy-->

将内容切换虚拟服务器绑定到策略

bind cs vserver CTXTEST_CSVS -policyName CTXTEST_CS_Policy -priority 100
<!--NeedCopy-->