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 ...
随机推荐
- dpkt 简单应用
import dpktfrom dpkt.utils import mac_to_str,inet_to_strcap=f'D:/test_pacp/6.pcap'with open(cap,'rb' ...
- 记一次因为关键字OUT 导致的后台"sql injection violation" 报错的问题
在navicat和mssm中执行用字段别名'out'均没有问题,但是在mybatis里使用就会报 "sql injection violation, syntax error: ERROR. ...
- CentOS7安装 Redis5 单实例
1.下载redis下载地址在:redis.io比如把Redis安装到/usr/local/soft/ cd /usr/local/soft/ wget http://download.redis.io ...
- MySQL日常维护指南
一.常用命令 1.查看数据库默认编码 show variables like 'character%'; show variables like 'collation%'; 2.启动停止数据库 /et ...
- 试题管理/在线课程/模拟考试/能力评估报告/艾思在线考试系统www.aisisoft.cn
艾思软件发布在线考试系统, 可独立部署, 欢迎咨询索要测试账号 一. 主要特点: ThinkPHP前后端分离框式开发 主要功能有: 在线视频课程, 模拟考试, 在线考试, 能力评估报告, 考试历史错题 ...
- java.Text.ParseException:Unparseable date:"undefined 00:00:00"
request.getParameter() 获取的日期要toString一下再parse,否则就会报这个异常
- Blob文件下载type类型
let url = window.URL.createObjectURL(new Blob([文件流(一般为res.data)], {type: "Blob类型"}) let li ...
- Jenkins搭建项目过程中遇到的问题解决方法
1.运行时,报没有权限 报错: rm -rf '/root/jar/*' rm: cannot remove '/root/jar/*': Permission denied 解决方法: 将Jenki ...
- 在 Kubernetes 集群中部署现代应用的通用模式
在 Kubernetes 集群中部署现代应用的通用模式 摘要 我们正在经历现代应用交付领域的第二次浪潮,而 Kubernetes 和容器化则是这次浪潮的主要推动力量. 随着第二次浪潮的推进,我们在 N ...
- hydra暴力破解各种服务
hydra 在爆破工具中,hydra可是数一数二的存在,是著名黑客组织thc开发的一款开源的暴力密码破解工具,可以在线破解多种密码 参数 作用 -l 指定用户名 -p 指定密码 -L 指定用户字典 - ...