🏆今日学习目标:
🍀单点登录系统和传统登录的区别
✅创作者:林在闪闪发光
⏰预计时间:30分钟
🎉个人主页:林在闪闪发光的个人主页🍁林在闪闪发光的个人社区,欢迎你的加入:
目录
1.单点登录的概念
单点登录的英文简称为SSO(single sign on),单点登录功能使得用户只要登录了其中一个系统,就可以访问其他相关系统,而不用进行身份验证登录。即用户只要登陆系统一次,该用户的身份信息就可以被系统中的多个主机上的应用所识别,不需要在访问每个应用时再分别进行登陆。
2.单点登录的应用场景
1、多个应用系统独立部署和使用,需要通过单点登录实现仅在某系统中进行一次登录即可免登录进入其它应用系统,此时可调用本产品提供的单点登录接口实现产品系统的用户名、密码校验。
2、跨系统调用本产品功能时,产品系统需要获取客户系统的用户信息进行校验,验证通过后才允许调用产品系统相关功能。
3、集成调用时,在调用集成的本产品功能模块的同时需要传递客户系统的用户信息至集成模块。
4、跨系统调用本产品功能时,产品系统视发出请求的用户经过客户系统校验为合法用户,无需在产品系统进行用户名密码校验。调用产品系统功能时需要传递客户系统的用户信息才能按照权限分配返回正确结果。
3.传统的登录方式
通过登录页面根据用户名查询用户信息,判断密码是否正确,正确则将用户信息写到session,访问的时候通过从session中获取用户信息,判断是否已登录,登录则允许访问。
4.传统登录方式存在的问题
1. 每个微服务都要进行登录校验,十分麻烦,我们需要的是单点登录
2. 由于session不能共享,服务越来越多,并且还服务还搭建集群,导致每访问另外一个服务都需要重新登录
3. 认证方式单一,无法适应各种认证场景(扫码,指纹...),毫无扩展性
5.解决办法
1.可以使用tomcat的共享session,但是需要在tomcat里面配置,原理是每个tomcat服务器都会不断的广播自己的session,那么就可以实现session共享的问题;但是会有两个问题存在:服务的集群数量多的话广播session占用的资源也会比较多,并且不能解决跨服务器的session共享的问题;
2.把session保存到redis里面,使用同一个redis服务器来实现session共享的问题;
6.单点登录的整体流程思路
7.备注
单点登录需要做成一个webService,一个单独的登录服务;
1.数据校验接口
2.注册接口
3.登录接口
4.根据token查询用户接口
5.安全退出