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

原文地址:https://www.cnblogs.com/ytlds/p/7768602.html