部署CAS几个注意点

在网上找了很多资料。终于让CAS跑起来了:修改CAS服务端名称、屏蔽SSL,单点登入、单点登出。
版本:CAS Server 3.4.7,  CAS Client 3.1.10/3.2.0

(1) 禁用SSL认证
/WEB-INF/spring-configuration/ticketGrantingTicketCookieGenerator.xml
p:cookieSecure="false"

(2) 修改了CAS服务端部署名称,如我改为了rhin-cas
根据网络资料描述,只需要改名就好。其实还需要修改几处,否则单点登出和访问CAS内部路径会有问题(注:以下文件均为服务端文件):
/WEB-INF/spring-configuration/ticketGrantingTicketCookieGenerator.xml
p:cookiePath="/rhin-cas"

/WEB-INF/cas.properties
*cas.securityContext.serviceProperties.service=http://localhost:8080/rhin-cas/services/j_acegi_cas_security_check
*cas.securityContext.casProcessingFilterEntryPoint.loginUrl=http://localhost:8080/rhin-cas/login
*cas.securityContext.ticketValidator.casServerUrlPrefix=http://localhost:8080/rhin-cas
*host.name=rhin-cas

(3) 单点登出,客户端配置。我尝试使用SAML作为认证和Ticket校验,但是调试时发现单点登出取标识的方式只能识别CAS的认证和校验。
认证:org.jasig.cas.client.authentication.AuthenticationFilter
校验:org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter
过滤器顺序:
1. CAS Single Sign Out Filter
2. CAS Validation Filter
3. CAS Authentication Filter
4. CAS HttpServletRequest Wrapper Filter
5. CAS Assertion Thread Local Filter
特别注意Validation在Authentication之前,因为我使用的是Cas20ProxyReceivingTicketValidationFilter。根据CAS文档描述:If you are using proxy validation, you should map the validation filter before the authentication filter.

解释为何默认配置不能使用SAML,大致说一下,不一定对。
调试SingleSignOutFilter可知hander.isTokenRequest其中对token参数校验是URL中包含ticket参数,这个只有CAS认证方式下才有,SAML是没有ticket参数的,是叫另外的名字。如果需要用SAML需要配置web.xml中SingleSignOutFilter的init-param:artifactParameterName
好像是叫SAML**什么的。这个具体你使用SAML认证方式时就看到了。
由于我没有具体研究SAML和CAS认证的差别,所以就没管了。

大概就是这么多,其他的配置方法网上很多。

你可能感兴趣的:(spring,xml,Web,Security,Acegi)