单点登录实现原理和单点登录服务器设计

Posted 热心市民刘先生♛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单点登录实现原理和单点登录服务器设计相关的知识,希望对你有一定的参考价值。

sso单点登录是什么

java实现SSO
什么是SSO
SSO(Single Sign On)单点登录是实现多个系统之间统一登录的验证系统,简单来说就是:有A,B,C三个系统,在A处登录过后,再访问B系统,B系统就已经处于了登录状态,C系统也是一样。举个生活中栗子:你同时打开天猫和淘宝,都进入login界面,都要求你登录的,现在你在淘宝处登录后,直接在天猫处刷新,你会发现,你已经登录了,而且就是你在淘宝上登录的用户。说明他们实现了SSO,并且持有相同的信息。
当然这个特性意味着它的使用场景是:同一公司下的不同子系统,因为对于SSO来说,每一个子系统拥有的信息都一样,是用户的全部信息,如果是不同公司,那这肯定不合适。现在的天猫和淘宝就是这样的一套SSO。

客户端实现步骤

客户端api

1.sso/login?service=http://www.baidu.com 登录接口判断用户是否登录

  • 未登录跳转至登录界面
  • 已登录 返回 https://www.baidu.com/?ticket=ST-4267646-GW54oRgSfRCIdffuJNSt-cas service地址附带ticket

票据 注意票据是一次性的,根据当前访问login接口的service和session组合生成一次ticket 使用后失效

2./sso/validate?ticket=ST-3106711-eQcTqZUlfdU3R2fmL6Wk-cas&service=http://www.baidu.com 票据验证接口

  • 更具票证获取用户账号接口
  • 验证参数有ticket 和service 中的 url 这个url 需和login 中获取票证的url一致

3.如获取用户账号成功则登录当前系统,设置保存当前系统用户状态

服务端

1.login 接口功能

  • 判断是否登录
  • 是: 公共步骤
  • 否:进入登录界面
    • 进行登录将登录后userId 存入session 中

公共步骤:生成 url+sessionId+md5 生成ticket 将ticket存入session中重定向service 中的url 并且附带ticket参数

2.获取用户账号接口validate

  • 根据validate 接口获取对应ticket 和url 在session 中进行校验判断是否已有登录标识,如果有则返回userId信息

3.out接口,退出单点登录接口
-清除对应session缓存的用户信息

以上是关于单点登录实现原理和单点登录服务器设计的主要内容,如果未能解决你的问题,请参考以下文章

单点登录实现原理和单点登录服务器设计

单点登录理解

SSO(单点登录)实现机制讲解

CAS 实现单点登录SSO

电商系统中单点登录的原理和架构设计详解

CAS单点登录,怎么实现注册后自动登录。用java实现