SSO单点登录(Single Sign On)

1.基于Cookie共享的单点登录

1.1.简介

​ ​ 单点登录(Single Sign On) 简称为SSO, 定义为在多个应用系统中, 用户只需要登陆一次就可以访问所有相互信任的应用系统,而不需要再次登录。是目前比较流行的企业业务整合的解决方案之一。

​​ ​ 例如,用户成功登录baidu.com后,访问百度贴吧tieba.baidu.com、百度地图map.baidu.com就不需要再次登录,只需要登录一次,用户的登录状态信息就可以在相互信任的系统间共享,实现单点登录。

1.2.实现方式

1.2.1.前提条件

1.2.1.1共享一个认证系统

​​ ​ 所有应用系统件共享一个登录认证服务器,这是实现单点登录的前提之一,登录认证服务器的主要作用是,将用户的登录信息与用户信息库进行比对, 认证通过后,登录认证服务器会签发一个全局唯一的认证凭证(ticket),返回给用户。此外,认证服务器还应该对ticket有效性的进行校验。

1.2.1.2解决跨域问题

​​ ​ 要实现单点登录, 必须解决跨域问题,保存用户登录状态的cookie是不能跨域获取的。例如用户登录了map.baidu.com后,认证服务器将用户的登录凭证写入浏览器端cookie,然后当用户访问tieba.baidu.com时,由于cookie不能跨域获取,所以访问tieba.bai.com时,并不会带上用户登录状态的凭证ticket,这就会导致单点登录失败。

​​ ​ 为此我们可以设置cookie的domain属性,cookie的domain属性表示的是可以访问该cookie的域名。在主域名相同的系统中,我们只要将保存用户登录状态的凭证ticket对应的cookie的domain属性,设置为主域名,那么用户登录成功后访问主域名下的二级域名就会带着主域名下的所有cookie,就能够解决cookie跨域获取的问题。

​ ​ 如果主域名不相同,也可通过这种方式解决,例如登陆了a.com将ticket的domain属性设置为.b.com,那么当访问b.com时,就会带着ticket的cookie,实现cookie跨域共享。

1.2.1.2.1.Cookie属性

在这里插入图片描述

1.2.2.实现流程

在这里插入图片描述

1.用户填写登录信息,登录应用系统A。

2.应用系统A将用户登录信息发送给认证服务器进行登录认证。

3.若认证成功,则返回登录凭证Ticket给用户,并将其写入浏览器端Cookie同时设置domain属性。

4.用户带着保存Ticket的Cookie访问应用系统B,系统B获取Cookie并解析出Ticket发送给认证服务器验证Ticket的有效性, 验证成功,则将Ticket写入Cookie。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值