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 ...
随机推荐
- gdb调试数组访问越界记录
综述 问题来源于力扣的一道域名访问统计题目,我本想以建立首字母索引的方式去统计,但是在申请子域名buffer的地方发现使用malloc(sizeof(char)4)申请出来的buffer每次+1只能增 ...
- NVT模拟时出现水分子空洞,以及NPT时盒子收缩的原理
NVT出现水分子空洞,以及NPT时盒子收缩的原理: For a periodic system, constant pressure is the only way to equilibrate de ...
- [Unity基础]碰撞和触发
参考链接: https://www.cnblogs.com/hont/p/4472326.html 碰撞关系表: https://docs.unity3d.com/Manual/CollidersOv ...
- 表单笔记-Antd(Form)
antd表单使用笔记 import React, { useState, useEffect, useRef } from "react"; import { Form, Inpu ...
- F - Substring of Sorted String
题目链接 题解(树状数组) 我们维护两个树状数组,一个记录 \(1\sim i\) 中 \(s_i>s_{i+1}\)的数量,即逆序对数量,另一个记录 \(1\sim i\) 中 \(26\) ...
- CentOS 7 时区设置 EST和CST设置
1. https://blog.csdn.net/allway2/article/details/102995747 CentOS 7 时区设置# timedatectl status Lo ...
- 学习笔记-C++
题目:声明一个基类BaseClass,从它派生出类DerivedClass,BaseClass有成员函数fn1()和fn2(),fn1()是虚函数,DerivedClass也有成员函数fn1()和fn ...
- 《MySQL是怎样运行的》第七章小结
- Java-01enum常量特定方法
OnJava8-Enum-常量特定方法 用枚举实现责任链模式 责任链(Chain Of Responsibility)设计模式先创建了一批用于解决目标问题的不同方法,然后将它们连成一条"链& ...
- 宕机了,Redis如何避免数据丢失?
Redis的持久化主要有两大机制,即AOF日志和RDB快照 AOF日志 1.2 AOF日志是如何实现的? 说到⽇志,我们⽐较熟悉的是数据库的写前⽇志(Write Ahead Log, WAL)-- ...