什么是单点登录?
单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。
单点登录的实现方式
以cookie作为凭证媒介
最简单的单点登录实现方式,是使用cookie作为媒介,存放用户凭证。
用户登录父应用之后,应用返回一个加密的cookie,当用户访问子应用的时候,携带上这个cookie,授权应用解密cookie并进行校验,校验通过则登录当前用户。
用户登录时将cookie存在浏览器中
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
private
void
initCookie(String pin) {
try
{
CookieValidate cookieValidate =
new
CookieValidate();
cookieValidate.setPin(pin);
cookieValidate.setCeshi(SecurityUtil.md5(
new
StringBuffer(
cookieEncrypt.get(
"desPrefix"
)).append(pin)
.append(DateUtil.formatDate(
new
Date())).toString()));
cookieValidate
.setTest(SecurityUtil.encrypt(
new
StringBuffer(pin).append(
","
)
.append(DateUtil.formatDate(
new
Date()))
.toString(), cookieEncrypt.get(
"desKey"
)));
cookieValidate.setIp(SecurityUtil.md5(IpHelper.getIpAddr(request)));
cookieValidate.setBrower(SecurityUtil.md5(request
.getHeader(
"user-agent"
)));
String cookieString = EscapeUtil.escape(JsonUtil
.toJson(cookieValidate));
cookieUtil.createdCookie(cookieEncrypt.get(
"loginCookieName"
),
cookieString, -
1
);
}
catch
(Exception e) {
LOG.error(
"###### initCookie error ######"
, e);
}
}
|
登录拦截器中判断是否该cookie解析出来的用户是否正确
如果不正确跳转登录页面
这种方式问题:
1、cookie不安全
2、不能跨域实现免登陆
本文转自 xinsir999 51CTO博客,原文链接:http://blog.51cto.com/xinsir/1869433,如需转载请自行联系原作者
