SSO单点登录原理

介绍:  

  单点登录SSO(Single Sign On)说得简单点就是在一个多系统共存的环境下,用户在一处登录后,就不用在其他系统中登录,也就是用户的一次登录能得到其他所有系统的信任。单点登录在大型网站里使用得非常频繁,例如像阿里巴巴、新浪等大型网站,在网站的背后是成百上千的子系统,用户一次操作或交易可能涉及到几十个子系统的协作,如果每个子系统都需要用户认证,不仅用户会疯掉,各子系统也会为这种重复认证授权的逻辑也会很麻烦。

   单点登录有点像我们在去旅游景点旅游的时候,买了一张全票,这样我们拿着这个票,到达各个景点只需要进行认证,就可以一玩到底了。实现单点登录说到底就是要解决如何产生和存储那个信任,再就是其他系统如何验证这个信任的有效性,因此要点也就以下几个:

     1)信任问题

     2)存储问题


分类:

   单点登录可以分为三种:同域SSO,同父域SSO,跨域SSO


  1)同域SSO

     

     这种方式是将信任写在客户端Cookie中,但是马上就会想到肯能存在的问题:

         ·Cookie值不安全

         ·不能实现跨域免登陆


  2)同父域SSO

    这个是两个站点分别为:

    test1.zss.com

    test2.zss.com

    这两个站点共享同一域zss.com。

    默认情况下,浏览器会发送cooker所属的域对应的主机。也就是说:test1.zss.com的cookie默认属于的是.test1.zss.com,而test2.zss.com不会得到test1.zss.com的cookie信息,因为二者不在同一个域,不能共享cookie信息。

    正是由于不能共享cookie信息,我们可以选择另一种思路,这两个站点拥有同一父域,我们可以当浏览器访问test1.zss.com时将cookie值放到顶级域.zss.com中,这样当test2.zss.com来访问的时候能够共享cookie值,也就实现了单点登录。

                                

  3)跨域SSO

   假设我们需要在下面站之间实现单点登录

    www.zss1.com

    www.zss2.com

    为了实现单点登录,当用户登录其中任一一个站点时,需要针对其他站点在浏览器设置cookie信息。如果用户登录zss1,登录成功后,浏览器将会存储一份zss1站点的cookie信息。同时为了能够登录zss2,这就必须在设置zss1的cookie的同时对zss2也进行cookie设置。下面是图解:

    


总结:

    单点登录有很多方式,但我们常用到的还是后面这两种方式来实现单点登录,而且对于跨域的单点登录方式还可以采用其他方式来实现,从网上查阅资料发现我们可以单独建一个SSO服务,专门做验证用。这种方式浏览器只需要存储SSO服务站点的cookie信息,将这个cookie信息用于其他站点也就实现了单点登录。这个还需要接下来继续研究,还不是很明白如何使用一个专门的SSO服务。



 
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值