SSO单点登录

SSO单点登录

参考:https://blog.csdn.net/u013905744/article/details/111225420

1. 什么是SSO

Single Sign On:SSO

web登录的本质是什么?

图片说明

如何增加状态/会话

图片说明

单个系统的登录

图片说明

扩展到多个系统,就是SSO

图片说明

2. 方案1:共享cookie,后台共享session

图片说明

spring session项目就是共享session,共享session放到redis中

图片说明

Session Cookie要种在Web应用的根域上,也就是说不同Web应用的根域必须相同,否则会有跨域问题。

3. 方案2:共享cookie,后台不共享session

图片说明
签名的方式来校验

图片说明

图片说明

SSO,要保存用户登录的会话关系。比如浏览器场景下,其是放到 session中。而在方案2场景下,其将会话状态存放在客户端(浏览器上)。

4. 方案3:使用独立的认证中心

CAS(central authentication service)

4.1 访问系统A(未登录)

图片说明

为什么 a.com 不直接访问认证中心,而要通过 302redirect 的方式呢?因为浏览器要获取一个认证中心的session

在认证中心创建一个session

setCookie 并且ticket

4.2 登录系统A(已登录)

图片说明

系统A要去认证中心验证,这个 ticket 是 sso.com 发出的。

其是通过一个全局的 cookie 和多个子系统的 cookie 来实现的

4.3 登录了系统A后,再来访问系统B

图片说明

返回给系统B的 ticket 与系统A的 ticket 不同,但代表的是同一个用户

4.4 访问系统B(已登录)

图片说明

此时就有三个cookie了

认证中心会把系统A和系统B注册,每次的ticket都是不同的

4.5 退出登录

图片说明

向认证中心发送一个注销请求,其需要查看这个用户注册过系统A和系统B,把这三个 session 全部注销掉。认证中心调用系统A的 logout 接口,将 session invalidate 掉,那么系统A中应该记录了 session 与用户相关的信息,可以标识出这是哪个用户的 session ,将相对应的 session invalidate 掉就可以了。

浏览器 文章被收录于专栏

浏览器

全部评论

相关推荐

01-16 21:34
武汉大学 Java
点赞 评论 收藏
分享
2025-12-18 19:36
已编辑
门头沟学院 Java
程序员牛肉:可以的,简历没毛病了。 虽然还是偏向同质化,不过学历不错。后续我觉得重心放到刷实习+摆脱同质化问题上
实习简历求拷打
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
2025-11-27 10:04
点赞 评论 收藏
分享
评论
1
3
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务