java 单点_java实现单点登录的两种方式

本文介绍了Java环境下实现单点登录的两种方法。第一种方法适用于一级域名相同的网站,通过cookie和filter实现,当用户登录后,将用户信息存入cookie,访问其他子站点时读取cookie并登录。第二种方法适用于一级域名不同的网站,利用CAS框架进行服务部署,配置客户端和服务端以实现跨域单点登录。详细步骤包括CAS服务端配置和客户端项目的集成设置。

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)  编辑  收藏

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值