SSO(单点登录)
理解(一处登录,处处穿梭):
例如:在同一个浏览器中,登录新浪微博后,打开微博新闻将不再需要登录
分类:
同域SSO:
a.x.com、b.x.com、c.x.com 都位于x.com下
跨域SSO:
如微博(http://weibo.com)、新浪(http://www.sina.com.cn)
实现步骤和原理:
个人理解:当用户在浏览器登录之后,服务器会给该浏览器写入一个cookie票据,然后穿梭到其他应用,检测是否有cookie,检测到则可以不用登录
同域SSO:
步骤:
准备工作:
1、同域:同一域名下的不同项目
2、tomcat配置(如果是在不同项目中,有多个tomcat,则不需要配置,这里主要是为了设置tomcat启动的项目。下面一样):得到项目至WebRoot路径,替换tomcat中server.xml最后的一个<Context docBase="路径">
编写统一登录接口:
在LoginAction中编写doLogin()方法,如果用户名密码正确,需要编写Cookie
还需要在表单中传送回一个隐藏的字段,用来存储登录之后跳转的路径,当返回“SUCCESS”时,重定向到该链接
登录校验接口
编写DEMO1和DEMO2的主页
主页中首先获得request对象,如果用户提供了有效的cookie,返回SUCCESS,否则返回LOGIN
配置文件中配置DEMO1和DEMO2返回值之后重定向的路径
同父域SSO:
步骤:
准备工作:
1、因为是不同的项目,不像同域SSO那样(校验接口在一个项目),所以需要规定统一的校验接口。这样就表示有三个项目(DEMO1、DEMO2、Check)
2、要注意设置cookie的路径(Cookie.setPath("/") 设置到最顶层),设置域的位置(Cookie.setDomain(“.x.com”) 为了DEMO1、DEMO2能互通信息,所以设置在它们的父域下)
3、tomcat配置文件(同上,修改项目名称)
跨域SSO:
步骤:
准备工作:
1、两个域需要实现SSO,同样为3个不同的项目。但是Cookie需要写到DEMO1或DEMO2的域下,所以两个项目都需要为本域设置Cookie
2、在DEMO1和DEMO2中分别在登录成功之后,将对方Cookie写到自己的域(这一块不是很明白),然后将Cookie循环写到页面隐藏域
总结:
1、核心是COOKIE,需要注意设置的域、位置、和安全性
。。。待续
————————————————————————————————————————————————————————
版权所有,出自http://www.cnblogs.com/ytlds