一、环境说明
1) Tomcat7.0.6
2) Jdk7
3) CAS Service版本 cas-server-4.0 (这个版本和原来版本有很大区别)
4) CAS Client 版本 cas-client-core-3.3
二、 配置客户端
1. 项目中引入jar包: cas-client-core-3.3.3.jar
2. 修改Web.xml配置(项目的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://localhost:8080/cas
serverName
http://localhost:8080
CASFilter
/*
CAS Validation Filter
org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter
casServerUrlPrefix
http://localhost:8080/cas
serverName
http://localhost:8080
CAS Validation Filter
/*
CAS HttpServletRequest Wrapper Filter
org.jasig.cas.client.util.HttpServletRequestWrapperFilter
CAS HttpServletRequest Wrapper Filter
/*
CAS Assertion Thread Local Filter
org.jasig.cas.client.util.AssertionThreadLocalFilter
CAS Assertion Thread Local Filter
/*
3. 项目登录页面配置,加入如下代码
<%
AttributePrincipal principal = (AttributePrincipal) request.getUserPrincipal();
Map attributes = principal.getAttributes();
%>
4. js控制自动登录(这里根据自己项目的配置)
$(function(){
var name='<%=attributes.get("username")%>';
var pwd='<%=attributes.get("password")%>';
if(name!=null && pwd!=null)
{
$('body').html("正在跳转,请稍后...");
$.ajax({
type:"post",
dataType:"html",
url:"user!login?userid="+name+"&password="+pwd,
success:function(data){
if(data=="N")
{
alert("用户名或密码错误!");
}else if(data=="P"){
alert("您没有登录权限!");
}else{
window.location.href="index.jsp";
}
}
});
}
});
三 配置服务端(CAS Server)
1. 在tomcat的lib目录下或者是cas项目的lib目录下引入jar包:
cas-server-core-4.0.0.jar
cas-server-support-jdbc-4.0.0.jar
commons-dbcp.jar//看自己数据源定义,本demo采用的是dbcp
mysql-connector-java-5.1.7-bin.jar
等jar
2. CAS服务端默认是以https://...方式认证的,需要安装证书,还需要配置域名等很麻烦,所以更改其方式以http访问,修改如下:
1) WEB-INF/deployerConfigContext.xml
WEB-INF/spring-configuration/ticketGrantingTicketCookieGenerator.xml
WEB-INF\spring-configuration\warnCookieGenerator.xm
2) WEB-INF/deployerConfigContext.xml
< bean class = "org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler" p:httpClient-ref = "httpClient" />
增加参数 p:requireSecure="false" ,是否需要安全验证,即 HTTPS , false 为不采用 如下:
< bean class = "org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler" p:httpClient-ref = "httpClient" p:requireSecure= "false" />
3) WEB-INF/spring-configuration/ticketGrantingTicketCookieGenerator.xml
修改 p:cookieSecure="true" 为 p:cookieSecure=" false " , 即不需要安全 cookie
< bean id = "ticketGrantingTicketCookieGenerator" class = "org.jasig.cas.web.support.CookieRetrievingCookieGenerator"
p:cookieSecure = " false "
p:cookieMaxAge = "-1"
p:cookieName = "CASTGC"
p:cookiePath = "/cas" />
4) WEB-INF\spring-configuration\warnCookieGenerator.xml
修改 p:cookieSecure="true" 为 p:cookieSecure=" false " , 即不需要安全 cookie 结果如下:
< bean id = "warnCookieGenerator" class = "org.jasig.cas.web.support.CookieRetrievingCookieGenerator"
p:cookieSecure = " false "
p:cookieMaxAge = "-1"
p:cookieName = "CASPRIVACY"
p:cookiePath = "/cas" />
3. 配置cas\WEB-INF\ deployerConfigContext.xml文件,核心配置都在这里,主要包括配置数据源,验证方式及客户端调用用户详细信息(默认只能取得用户名)等。(这里配置的是多个数据库(2个),根据项目情况可自行配置)
1) 权限管理配置
2) 定义验证方式(jdbc)
3) 定义关联属性
4) 定义属性详细信息
5) 定义数据源
com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/samsungdb
admin
admin
com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/gdyerpdb
admin
admin
4. 安全退出配置
1) 配置项目的web.xml增加过滤器,前面已配置,这里就不在赘述。
2) 默认的是跳到指定测试页面,但实际中应该是跳到登陆页面,需要修改cas\WEB-INF\ cas-servlet.xml文件,需要把followServiceRedirects属性设为true
3) 页面业务退出配置:如果你业务系统的URL:window.location.href=”user!logout.action”
那么退出的路径就是:window.location.href=”http://localhost:8080/cas/logout?service=http://localhost:8080/项目名/user!logout.action”
四、参考网站
1. http://blog.csdn.net/small_love/article/details/6664831
2. http://www.coin163.com/java/docs/201305/d_2795029003.html
3. http://blog.csdn.net/zkshun12/article/details/16901555
4. http://jcbay.iteye.com/blog/860018
附注:完整配置
com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/samsungdb
admin
admin
com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/gdyerpdb
admin
admin