【SSO单点系列】(7):CAS4.0 二级域名
CAS4.0 二级域名一、描述当cas 成功登录后如果访问同一域名下的资源是被当作同一应用下资源不需要再次请求登录,但是如果二级域名不同会被当作不同应用在访问需要请求CAS在请求时会把TGC 传给CA
CAS4.0 二级域名
一、描述
当cas 成功登录后如果访问同一域名下的资源是被当作同一应用下资源不需要再次请求登录,但是如果二级域名不同会被当作不同应用在访问需要请求CAS
在请求时会把TGC 传给CAS CAS 验证TGC 有效返回资源页面本身是没有问题的但是在返回时地址会被重写就不再是新生成的二级域名了
所以项目中无法区分二级域名了
二、思路
在登录成功后就自己写入session 不用原来的域名
三、实现
AuthenticationFilter.java
方法doFilter 新增 final HttpServletRequest request = (HttpServletRequest) servletRequest;
final HttpServletResponse response = (HttpServletResponse) servletResponse;
Cookie c1 = null;
Cookie[] co=request.getCookies();
if (co!=null ){
for (Cookie c:co){
if (c.getName().equals("JSESSIONID" )){
c1= c;
break;
}
}
}
//验证
String serverName = request.getHeader("X-Real-HOST" ) ;
if (StringUtils.isEmpty (serverName)){
serverName=request.getServerName();
}
Domain domain = new Domain();
domain.initDomain(serverName, request) ;
if (c1==null ){
c1 = new javax.servlet.http.Cookie("JSESSIONID" , request.getSession().getId());
c1.setDomain("." request.getAttribute("domain" )) ;
c1.setPath("/") ;
response.addCookie(c1);
}