CAS实现单点登录,登出(java和php客户端)

最近项目中需要做单点登录,客户端包含java和php,java有几个应用程序,php是discuz+supesite+ucenter,需要这几个客户端都要能单点登录和登出,在网上找了许多相关资料,今天终于配置成功,步骤如下: 1、cas服务端:下载地址:http://downloads.jasig.org/cas/cas的服务端和客户端有许多版本,最新版本和老版本 有很大的区别,目前服务端最新版本为:cas-server-3.4.4-release.zip 解压cas-server-3.4.4-release.zip将modules目录下的cas-server-webapp-3.4.4.war改名称为cas.war复制到tomcat的webapps下,启动tomcat,访问:http://localhost:8080/cas/login 就可以看到登录界面了: cas服务端默认采用的是 用户名=密码的验证,并且采用的是https验证,需要给tomact配置证书,本系统没有采用https验证,若采用https验证可参考: http://blog.csdn.net/haydenwang8287/archive/2010/07/26/5765941.aspx1.1、若不采用https验证,服务器端需要配置 1)、

cas/WEB-INF/deployer/ConfigContext.xml

//增加参数p:requireSecure=”false”,是否需要安全验证,即HTTPS,false为不采用,加上去之后如下:

2)、

cas/WEB-INF/spring-configuration/ticketGrantingTicketCookieGenerator.xml

参数p:cookieSecure=”true”,同理为HTTPS验证相关,TRUE为采用HTTPS验证,FALSE为不采用https验证。 参数p:cookieMaxAge=”-1”,简单说是COOKIE的最大生命周期,-1为无生命周期,即只在当前打开的IE窗口有效,IE关闭或重新打开其它窗口,仍会要求验证。可以根据需要修改为大于0的数字,比如3600等,意思是在3600秒内,打开任意IE窗口,都不需要验证。 1.2、服务器端退出访问:http://localhost:8080/cas/logout, 若希望退出后能返回则需要配置 服务端cas-servlet.xml配置

<bean id=”logoutController” class=”org.jasig.cas.web.LogoutController” … …/>

增加属性 p:followServiceRedirects=”true” 退出链接为:http://localhost:8080/cas/logout?service=http://localhost:8080/Casclient/index.jsp ** 1.3、更改服务器端验证方式,采用数据库验证:** 修改配置文件deployerConfigContext.xml,加dbcp连接池:(以oracle为例)



oracle.jdbc.driver.OracleDriver


jdbc:oracle:thin:@192.168.18.26:1521:orcl


test


test

需要的jar包有:(见附件:cas-server-support-jdbc-3.4.4.jar,commons-dbcp-1.2.1.jar,commons-pool-1.3.jar,ojdbc14_g.jar) 配置加密方式,cas内置的有MD5加密,也可以写自己的加密类,实现org.jasig.cas.authentication.handler.PasswordEncoder接口即可:



注释掉默认的验证方式,采用数据库查询验证:








-————–到这里cas服务端的配置就完成了。 2、java客户端配置,下载客户端:http://downloads.jasig.org/cas-clients/,目前最新版本为:cas-client-3.2.0 将modules下的jar复制到java客户端Casclient1的lib下,在web.xml中配置过滤器,配置如下(详情见附件)

org.jasig.cas.client.session.SingleSignOutHttpSessionListener CAS Single Sign Out Filter org.jasig.cas.client.session.SingleSignOutFilter CAS Single Sign Out Filter /\* CASFilter org.jasig.cas.client.authentication.AuthenticationFilter casServerLoginUrl http://192.168.18.8:8080/cas/login serverName http://192.168.18.8:8989 CASFilter /\* CAS Validation Filter org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter casServerUrlPrefix http://192.168.18.8:8080/cas serverName http://192.168.18.8:8989 CAS Validation Filter /\*