2.JWT实现单点登录的概念
- 昨天主要是了解了JWT的作用、构成以及RSA的作用和构成,再就是分布式认证的流程和集中式的差别
- JWT的作用:JWT用于生成和校验token
- JWT的构成:头部、载荷以及签名
- 头部:设置规范信息,如签名的编码格式
- 载荷:存储有效信息,如用户名,用户角色,过期时间,但是不能存储密码,容易泄密
- 签名:将头部和载荷通过base64编码,再通过"."相连,加入盐值,再使用头部声明的编码格式进行编码,头部跟载荷一般容易查到,系统的安全性体现在盐上面
- RSA加密:私钥,公钥
- 私钥一般保存在认证服务中,公钥保存在资源服务中
- 当使用私钥加密时,需要私钥或者公钥解密,当公钥加密,只能使用私钥解密
- 加密过程是在认证中进行的,系统返回给用户的凭证就是加密后的token,解密是在用户第二次登录的过程中,认证中心验证token的时候进行解密
- 认证流程
- 集中式:1)用户认证:首先时在UsernamePasswordAuthenticationFilter中的attemptAuthentication中进行用户认证,该过滤器父类SuccessfulAuthentication中进行认证成功后的操作;2)身份校验:在AuthenticationFilter的Internal方法中检查用户是否登陆,session中是否有用户信息
- 分布式:1)用户认证:可接受异步认证post请求,在successfulAuthentication认证后将token返回给用户;2)身份校验:使用BasicAuthenticationFilter的doFilterInternal方法来验证用户携带的token是否合法,并解析用户信息
- sso-login 包下的LoginController
//doLogin 1.首先获取用户登录网页,用于后面登录成功的重定向
2.模拟数据库获取数据验证用户登录信息
3.登陆成功后,创建token,将其作为建,用户信息作为值存储在缓存类汇总
4.创建cookie,使用固定字符串作为键,token作为值存储在cookie汇总, 再响应cookie到浏览器,最后重定向回原登录页面
5.登录失败,通过session返回错误信息,返回登录页面
//getUserInfo
1.使用了ResponseEntity类来响应前端, 首先是通过判断token是否存在,如果存在,从缓存类中根据token获取与用户信息, 再返回OK状态,不存在返回HttpStatus.BAD_REQUEST
//logOUt
1.设置cookie时间为0
2.清楚缓存类中的token
3.响应清除后的cookie给浏览器
- sso-login 包下的ViewController
//toLogin
1.首先是判断target是否存在,存在就判断cookie是否存在,
再根据cookie获取token, 判断token是否存在,
再根据token获取用户信息,如果用户信息存在,重定向回源登录页面
2.如果不存在target,赋值为登录页面
- 其他 包下的ViewController
//toIndex
1.首先判断cookie是否存在,若存在根据cookie的值获取token;
再根据token是否存在,若存在,则根据用户登录网址加上token获取用户信息,并通过 session响应给登录页面
2.JWT实现单点登录的概念的更多相关文章
- springBoot整合spring security+JWT实现单点登录与权限管理--筑基中期
写在前面 在前一篇文章当中,我们介绍了springBoot整合spring security单体应用版,在这篇文章当中,我将介绍springBoot整合spring secury+JWT实现单点登录与 ...
- 手把手教你学会 基于JWT的单点登录
最近我们组要给负责的一个管理系统 A 集成另外一个系统 B,为了让用户使用更加便捷,避免多个系统重复登录,希望能够达到这样的效果--用户只需登录一次就能够在这两个系统中进行操作.很明显这就是单点登 ...
- Spring Security构建Rest服务-1300-Spring Security OAuth开发APP认证框架之JWT实现单点登录
基于JWT实现SSO 在淘宝( https://www.taobao.com )上点击登录,已经跳到了 https://login.taobao.com,这是又一个服务器.只要在淘宝登录了,就能直接访 ...
- springboot+security+JWT实现单点登录
本次整合实现的目标:1.SSO单点登录2.基于角色和spring security注解的权限控制. 整合过程如下: 1.使用maven构建项目,加入先关依赖,pom.xml如下: <?xml v ...
- spring boot:spring security+oauth2+sso+jwt实现单点登录(spring boot 2.3.3)
一,sso的用途 ? 1,如果有多个应用系统,用户只需要登录一次就可以访问所有相互信任的应用系统. 不需要每次输入用户名称和用户密码, 也不需要创建并记忆多套用户名称和用户密码. 2,系统管理员只需维 ...
- Spring Boot 集成 JWT 实现单点登录授权
使用步骤如下:1. 添加Gradle依赖: dependencies { implementation 'com.auth0:java-jwt:3.3.0' implementation('org.s ...
- 基于JWT机制的单点登录
使用JWT实现单点登录时,需要注意token时效性.token是保存在客户端的令牌数据,如果永久有效,则有被劫持的可能.token在设计的时候,可以考虑一次性有效或一段时间内有效.如果设置有效时长,则 ...
- 看图理解JWT如何用于单点登录
单点登录是我比较喜欢的一个技术解决方案,一方面他能够提高产品使用的便利性,另一方面他分离了各个应用都需要的登录服务,对性能以及工作量都有好处.自从上次研究过JWT如何应用于会话管理,加之以前的项目中也 ...
- 编程界失传秘术,SSO单点登录,什么是单点,如何实现登录?
单点登录 多系统,单一位置登录,实现多系统同时登录的一种技术. 常出现在互联网应用和企业级平台中. 如:京东. 单点登录一般是用于互相授信的系统,实现单一位置登录,全系统有效的. 三方登录:某系统,使 ...
- 【夯实基础】-浅谈"单点登录"的几种实现方式
单点登录 一.Session跨域 所谓Session跨域就是摒弃了系统提供的Session,而使用自定义的类似Session的机制来保存客户端数据的一种解决方案. 如:通过设置cookie的domai ...
随机推荐
- Windows下安装多个Redis实例
1.在Redis 目录下复制redis.windows-service.conf文件,建议命名规则redis.windows-service-port.conf,我们以6380端口为例. 2.打开re ...
- centos7 为文件夹添加写入权限
[root@VM-16-15-centos ~]# sudo su[root@VM-16-15-centos ~]# cd /www/wwwroot/www.htqq.sale/php/images[ ...
- == 和 equal 的区别
== 比较的是两个对象的索引是否相同: equal 比较的是两个对象内容是否相同: int a = 1;long b = 1L;a==b? 答案是 对:因为a和b指向的索引地址相同. 再例如 Stri ...
- VUE-使用touchstart、touchmove、touchend实现拖拽卡片列表,实现更新排序功能
感谢本文参考地址,原文解析更加清晰如有需要请移步:https://blog.csdn.net/weixin_40400844/article/details/114849253 怕原链接失效,将代码拷 ...
- vue项目部署后页面加载首次很慢的优化方案
参考: vue项目首次加载特别慢需要怎么配置? 1.看看你的依赖包是不是全局引入的,改为组件内按需引入,可大大降低加载时长.或者将组件引入方式改为cdn引入.需要注意的是,两种引入方式不能共存. 2. ...
- 简单的helloworld指令
Hello World指令 1.下载安装notepad++ 2.新建文本文档 3.鼠标右键单击Edit with Noteapd++ 编辑程序并保存 public class hello{ publi ...
- AE|蒙版、遮罩、轨道遮罩全面解析
相信很多初学者都有这样的困惑,搞不清蒙版和遮罩这两个概念的区别,甚至有的人认为它们就是一个东西. 这两个看似一样的概念,其实是有很大的区别的,今天主要从定义和作用方式这两个方面进行解析,相信对各位认识 ...
- Mapper method 'org.lin.hms.dao.IndentDAO.insertIndent' has an unsupported return type: interface java.util.List
出现这种错误,说明sql语句执行成功,只是返回类型出了问题. 解决办法: mapper文件中的update,delete,insert语句是不需要设置返回类型的,它们都是默认返回一个int ,所以把返 ...
- Maven 切换JDK版本
欢迎访问我的个人博客:xie-kang.com 查看Maven安装目录的conf目录可以看到有 settings.xml\toolchains.xml文件.settings.xml主要是设置切换Mav ...
- linux 安装配置redis
linux 安装配置redis 安装 官网下载地址:https://redis.io/download linux下载命令:wget http://download.redis.io/releases ...