Web服务联合协议
Web服务联合(WS-Federation)是一种身份协议,当两个域之间存在信任关系时,它允许一个信任域中的安全令牌服务(Security Token Service, STS)向另一个信任域中的STS提供身份验证信息。
ws - federation的优点
WS-Federation同时支持主动和被动客户端,而SAML IdP只支持被动客户端。
- 活动客户端是Microsoft原生客户端,如Outlook和Office客户端(Word、PowerPoint、Excel和OneNote)。
- 被动客户端是基于浏览器的客户端,如谷歌Chrome、Mozilla Firefox和Internet Explorer。
使用Citrix ADC作为WS-Federation的先决条件
在将Citrix ADC设备配置为ADFS代理之前,请查看以下内容:
- 活动目录。
- 域SSL证书。
- ADFS服务器上的Citrix ADC SSL证书和ADFS令牌签名证书必须相同。
重要的
SAML IdP现在能够处理WS-Federation协议。因此,要配置WS-Federation IdP,必须实际配置SAML IdP。您没有看到任何用户界面显式地提到WS-Federation。
当配置为ADFS代理和WS-Federation IdP时,Citrix ADC支持的特性
下表列出了配置为ADFS代理和WS-Federation IdP时Citrix ADC设备所支持的特性。
特性 | 将Citrix ADC设备配置为ADFS代理 | Citrix ADC作为WS-Federation IdP | Citrix ADC作为ADFSPIP |
---|---|---|---|
负载平衡 | 是的 | 是的 | 是的 |
SSL终止 | 是的 | 是的 | 是的 |
速度限制 | 是的 | 是的 | 是的 |
整合(减少DMZ服务器占用并节省公共IP) | 是的 | 是的 | 是的 |
Web应用防火墙(WAF) | 是的 | 是的 | 是的 |
身份验证将负载卸载到Citrix ADC设备 | 没有 | 是(主动和被动客户端) | 是的 |
单点登录(SSO) | 没有 | 是(主动和被动客户端) | 是的 |
多因素(nFactor)身份验证 | 没有 | 是(主动和被动客户端) | 是的 |
Azure多因素身份验证 | 没有 | 是(主动和被动客户端) | 是的 |
可以避免使用ADFS服务器群 | 没有 | 是的 | 是的 |
将Citrix ADC设备配置为WS-Federation IdP
在DMZ区域中将Citrix ADC配置为WS-Federation IdP (SAML IdP)。ADFS服务器与后端AD域控制器一起配置。
- 对Microsoft Office365的客户端请求被重定向到Citrix ADC设备。
- 用户输入用于多因素身份验证的凭据。
- Citrix ADC使用AD验证凭据,并在Citrix ADC设备上本地生成令牌。将凭据传递给Office365进行访问。
请注意
与F5 Networks负载均衡器相比,WS-Federation IdP支持是通过Citrix ADC设备本地完成的。
使用CLI将Citrix ADC设备配置为WS-Federation IdP (SAML IdP)
以下部分根据完成配置步骤的需求进行了分类。
配置LDAP认证并添加策略
重要的
对于域用户来说,要使用他们的公司电子邮件地址登录到Citrix ADC设备,您必须配置以下内容:
- 在Citrix ADC设备上配置LDAP身份验证服务器和策略。
将其绑定到您的身份验证、授权和审计虚拟IP地址(也支持使用现有的LDAP配置)。
add authentication ldapAction
-serverIP -serverPort 636 -ldapBase "cn=Users,dc=domain,dc=com" -ldapBindDn "cn=administrator,cn=Users,dc=domain,dc=com" -ldapBindDnPassword <管理员密码> -encrypted -encryptmethod ENCMTHD_3 - ldploginname sAMAccountName -groupAttrName memberOf -subAttributeName cn-secType SSL -ssoNameAttribute UserPrincipalName -followReferrals ON -Attribute1 mail -Attribute2 objectGUID add authentication Policy
-rule true -action . add authentication Policy -rule true -action
例子
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 - ldploginname sAMAccountName -groupAttrName memberOf -subAttributeName cn -secType SSL-ssoNameAttribute UserPrincipalName -followReferrals ON -Attribute1 mail -Attribute2 objectGUID
add认证策略CTXTEST_LDAP_Policy -rule true -action CTXTEST_LDAP_Action
将Citrix ADC配置为WS-Federation IdP或SAML IdP
创建用于令牌生成的WS-Federation IdP (SAML IdP)动作和策略。后续将其与认证、授权和审计虚拟服务器绑定。
添加身份验证samlIdPProfile < Domain_SAMLIDP_Profile > -samlIdPCertName < SSL_CERT > -assertionConsumerServiceURL“https://login.microsoftonline.com/login.srf”-samlIssuerName <发行人名称ADFS Office 365的服务器> -rejectUnsignedRequests了诺言urn:联盟:MicrosoftOnline -NameIDFormat持久-NameIDExpr“HTTP.REQ.USER.ATTRIBUTE(2)。B64ENCODE" -Attribute1 IDPEmail -Attribute1Expr "HTTP.REQ.USER.ATTRIBUTE(1)"
add authentication samlIdPPolicy
-rule "HTTP.REQ.HEADER(\"referer\").CONTAINS(\"microsoft\") || true" -action . add authentication samlidp_policy . add authentication samlidp_policy
例子
添加身份验证samlIdPProfile CTXTEST_SAMLIDP_Profile -samlIdPCertName ctxtest_newcert_2019 -assertionConsumerServiceURL“https://login.microsoftonline.com/login.srf”-samlIssuerName“http://ctxtest.com/adfs/services/trust/”-rejectUnsignedRequests了诺言urn:联盟:MicrosoftOnline -NameIDFormat持久-NameIDExpr“HTTP.REQ.USER.ATTRIBUTE(2)。B64ENCODE" -Attribute1 IDPEmail -Attribute1Expr "HTTP.REQ.USER.ATTRIBUTE(1)"
添加认证samlIdPPolicy CTXTEST_SAMLIDP_Policy -rule "HTTP.REQ.HEADER(\"referer\").CONTAINS(\"microsoft\") || true" -action CTXTEST_SAMLIDP_Profile . txt
配置认证、授权和审计虚拟服务器,对使用企业凭证登录Office365的员工进行认证
add authentication vserver
例子
添加认证vserver CTXTEST_AAA_VS SSL 192.168.1.0
绑定认证vserver CTXTEST_AAA_VS -portaltheme RfWebUI
绑定认证虚拟服务器和策略
绑定认证vserver
-policy -priority 100 -gotoPriorityExpression NEXT bind authentication vserver
-policy -priority 100 -gotoPriorityExpression NEXT
例子
绑定认证vserver CTXTEST_AAA_VS -policy CTXTEST_SAMLIDP_Policy -priority 100 - gotopriityexpression NEXT
绑定认证vserver CTXTEST_AAA_VS -policy CTXTEST_LDAP_Policy -priority 100 - gotopriityexpression NEXT
绑定ssl vserver CTXTEST_AAA_VS -certkeyName ctxtest_newcert_2019
配置内容切换
add cs action
-targetVserver . add cs action add cs policy
-rule "is_vpn_url || http.req.url.contains(\"/adfs/ls\") || http.req.url.contains(\"/adfs/services/trust\") || -action . txt
例子
添加cs动作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
将内容切换虚拟服务器绑定到策略
bind cs vserver CTXTEST_CSVS -policyName CTXTEST_CS_Policy -priority 100