单点登录企业级这块怎么实现的
前段时间, 公司组织内部分享 ,有同事讲了关于单点登录的相关知识,散会后,去他部门找他讨论了一下相关知识点,关于单点登录 ,所以做个总结
单体系统的session共享
● 登录:将用户信息保存在Session对象中
○ 如果在Session对象中能查到,说明已经登录
○ 如果在Session对象中查不到,说明没登录(或者已经退出了登录)
● 注销(退出登录):从Session中删除用户的信息
后来,我们为了合理利用资源和降低耦合性,于是把单系统拆分成多个子系统。
多系统即可能有多个Tomcat,而Session是依赖当前系统的Tomcat,所以系统A的Session和系统B的Session是不共享的。
解决系统之间Session不共享问题有一下几种方案:
● Tomcat集群Session全局复制(集群内每个tomcat的session完全同步)
session 广播机制实现
在用户登录了一个模块后,这个模块的服务器会将用户的登录信息保存在本机的session中,然后通过session的广播机制,将这台服务器session中的内容复制到其他模块所在服务器的session中,这样其他的模块也就得到了用户的登录信息,用户在访问其他模块时就不需要重复登录了。
但这种模式会多次复制session中的内容,造成用户数据的冗余存储,因此并不推荐使用这种方式实现单点登录。
● 把Session数据放在Redis中(使用Redis模拟Session)自己实现
用户在项目的任意一个模块登录后,该模块会将用户的登录信息放到 redis 和 cookie 中。
① 系统会先将用户的登录信息存入 redis中,其在 redis 的 key 值是生成的唯一值 (可以包含 IP、用户 id、UUID等值),value 值存放用户的登录信息。
② 然后系统会将这名用户在 redis 中的 key 值存入该用户的 cookie 中,用户每次访问任意模块时都会带着这个 cookie。
③ 用户在访问其他模块发送请求时,都会带着客户端的 cookie 进行请求,而客户端的 cookie 已经存入了该用户在 redis 中的 key 值,这样其他模块在处理用户的请求时,可以先获取用户 cookie中的 key 值,然后拿着这个 key 值到 redis 中进行查询,如果在 redis 中能查询到该用户相应的登录信息,就说明该用户已登录,就不需要用户进行重复登录了。
- 使用token实现
客户端发送请求到网关进行验证,网关会转到auth认证授权中心,认证中心会完成用户信息的认证,完成认证会会基于UUID生成一个token,然后与用户信息绑定在一起存储到数据库.后续用户在访问资源时,基于token从数据库查询用户状态,这种方式因为要基于数据库存储和查询用户状态,所以性能表现一般.(一般可用于中小型企业,查询量较少的时候)
token 是按照一定规则生成的字符串,字符串中可以包含用户信息。开发人员可以自行定制这个生成规则,也可以使用提供好的生成规则(如使用 JWT 自动生成包含用户信息的字符串)。
① 用户在项目的某个模块进行登录后,系统会按照一定的规则生成字符串,把用户登录之后的信息包含到这个生成的字符串中,然后系统可以将这个字符串返回,主要有两种返回方式:
(1)可以把字符串通过 cookie 返回
(2)可以把字符串通过地址栏返回
② 这样用户在访问其他的模块时,每次访问的地址栏都会带着生成的字符串(或者 cookie 中带着生成的字符串),被访问模块就可以获取地址栏中的生成字符串(或者获取 cookie 中的生成字符串),然后根据字符串获取用户信息,如果可以获取到用户的登录信息,说明该用户已登录,用户就不需要重复登录了。
-
CAS 单点登录
● SSO 单点登录访问流程主要有以下步骤:
a. 访问服务:SSO 客户端发送请求访问应用系统提供的服务资源。
b. 定向认证:SSO 客户端会重定向用户请求到 SSO 服务器。
c. 用户认证:用户身份认证。
d. 发放票据:SSO 服务器会产生一个随机的 Service Ticket。
e. 验证票据:SSO 服务器验证票据 Service Ticket 的合法性,验证通过后,允许客户端访问
服务。
f. 传输用户信息:SSO 服务器验证票据通过后,传输用户认证结果信息给客户端。 -
参考资料:
-
https://blog.csdn.net/weixin_60589893/article/details/121491044
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgheaek
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13