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 域控制器一起配置。
- 向 Microsoft Office365 发出的客户端请求将被重定向到 NetScaler 设备。
- 用户输入用于多重身份验证的凭据。
- 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-->