单点登录(sso)和cas系统的原理

概念

单点登录就是在一个多系统共存的环境下,用户在其中一个系统登录了,实现其他系统可以免登录,获得信任.

单点登录的实现

单系统登录

在聊多系统单点登录前,首先我们要明白单系统如何实现登录功能的。单系统登录主要是使用session存储用户信息,然后将session_id存放在cookiet中,每次发起请求时,http协议会携带cookie,服务器可以通过cookie获取seesion_id,从而获取到用户信息。实现登录。

多系统实现单点登录需要解决的问题

  1. session共享问题。

由于session是不可以跨域访问的,那处理session跨域请求就是一个问题。
解决方案:

  • 将session存在redis中。
  1. cookie跨域访问问题。

cookie不能跨域名访问,如在a.com的cookie,在b.com下是不能获取a.com的cookiet的。

  • 多个相同一级域名共享cookie,设置cookie的domain即可

如a.study.cn的cookie的domain设置成".study.cn",则其二级域名都即可获取a.study.cn的cookie

  • 将登录获取的凭证保存在sessionstroge

关于cas系统

CAS(Central Authentication Service)是建立一个作为多系统登录认证中心的系统,所有的系统的认证都会重定向到该系统进入处理认证。cas系统也是基于上面理念达到单点登录的目的的,这只是单点登录的一个经典案例。

cas系统的实现

例如存在系统A(a.com)和系统B(b.com)及cas系统(cas.com)

  1. 当用户进入a.com时,系统A检测到用户尚未登录,就会重定向去cas.com?server=a.com,cas系统发现用户未登录,就会引导到登录页,用户输入账号密码后,用户就会与cas系统建立全局会话,生成用户登录凭证token,并将token存在浏览器cookie中,然后携带token重定向返回a.com,此时用户获取token提交给A系统,A系统那token去cas验证,验证正确,即建立用户的局部会话,创建session。
  2. 当用户进入a.com后,直接进入b.com时,B系统检测到用户尚未登录,就会重定向去cas.com?server=b.com,此时cas系统已建立全局会话(因为重定向cas.com时,会携带上用户上次进入cas系统创建的cookie),则cas系统会携带上token重定向返回b.com,B系统将token发送给cas系统,验证正确,则用户与B系统建立局部会话
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

spydxk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值