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

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缓存的用户信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值