1.如果两个网站域名的一级域名相同,可以使用cookie和filter实现单点登录,因为网站有可能(具体看cookie的设置)可以共享cookie。例如:www.bbs.aa.cnwww.news.aa.cn。
第一个网站在登录后,把用户信息写到cookie中,当访问第二个网站时,第二个网站先经过自己的filter,检查session,如果没有,查询cookie,取出用户信息,放在session中登录。
public void doFilter(ServletRequest req, ServletResponse resp,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
if(request.getSession().getAttribute("user")== null){
Cookie[] cs = request.getCookies();
if (cs != null && cs.length > 0) {
for (Cookie c : cs) {
String cName = c.getName();
if (cName.equals("sso")) {
String userName = c.getValue();
request.getSession().setAttribute("user", userName);
}
}
}
}
chain.doFilter(request, resp);
}
2.如果两个网站域名的一级域名不同,不可以使用cookie和filter实现单点登录,因为网站不可以共享cookie。例如:www.bbs.cnwww.news.cn。
使用cas框架服务实现单点登录。1.部署cas服务端。2.在服务器端的ticketGrantingTicketCookieGenerator.xml中修改文件。
p:cookieSecure="false"//使用http协议
p:cookieMaxAge="-1"//cookie有效时间
p:cookieName="yjwname"//cookie名称
p:cookiePath="/" />//项目名称
3.部署www.bbs.cnwww.news.cn服务,在每个客户端项目中加入casjar包,在web.xml中配置<?xml version="1.0" encoding="UTF-8"?>
mywebapp
Simple sample, how to use CAS Java Client 3.x.
In this sample exists a public area (/)
and a private area (/protected/*).
CAS Authentication Filter
org.jasig.cas.client.authentication.AuthenticationFilter
casServerLoginUrl
http://www.service.com:8081/login
serverName
http://www.bbs.com:8081
renew
false
gateway
false
CAS Validation Filter
org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter
casServerUrlPrefix
http://www.service.com:8081
serverName
http://www.bbs.com:8081
CAS HttpServletRequest Wrapper Filter
org.jasig.cas.client.util.HttpServletRequestWrapperFilter
CAS Assertion Thread Local Filter
org.jasig.cas.client.util.AssertionThreadLocalFilter
CAS Authentication Filter
/protected/*
CAS Validation Filter
/*
CAS HttpServletRequest Wrapper Filter
/*
CAS Assertion Thread Local Filter
/*
CAS Validation Filter
/proxyCallback
4.启动服务,这样就可以实现单点登录
posted on 2016-06-05 11:17 杨军威 阅读(4932) 评论(0) 编辑 收藏
本文介绍了Java环境下实现单点登录的两种方法。第一种方法适用于一级域名相同的网站,通过cookie和filter实现,当用户登录后,将用户信息存入cookie,访问其他子站点时读取cookie并登录。第二种方法适用于一级域名不同的网站,利用CAS框架进行服务部署,配置客户端和服务端以实现跨域单点登录。详细步骤包括CAS服务端配置和客户端项目的集成设置。
2255

被折叠的 条评论
为什么被折叠?



