1.总结:
  1. 昨天主要是了解了JWT的作用、构成以及RSA的作用和构成,再就是分布式认证的流程和集中式的差别
  2. JWT的作用:JWT用于生成和校验token
  3. JWT的构成:头部、载荷以及签名
  • 头部:设置规范信息,如签名的编码格式
  • 载荷:存储有效信息,如用户名,用户角色,过期时间,但是不能存储密码,容易泄密
  • 签名:将头部和载荷通过base64编码,再通过"."相连,加入盐值,再使用头部声明的编码格式进行编码,头部跟载荷一般容易查到,系统的安全性体现在盐上面
  1. RSA加密:私钥,公钥
  • 私钥一般保存在认证服务中,公钥保存在资源服务中
  • 当使用私钥加密时,需要私钥或者公钥解密,当公钥加密,只能使用私钥解密
  • 加密过程是在认证中进行的,系统返回给用户的凭证就是加密后的token,解密是在用户第二次登录的过程中,认证中心验证token的时候进行解密
  1. 认证流程
  • 集中式:1)用户认证:首先时在UsernamePasswordAuthenticationFilter中的attemptAuthentication中进行用户认证,该过滤器父类SuccessfulAuthentication中进行认证成功后的操作;2)身份校验:在AuthenticationFilter的Internal方法中检查用户是否登陆,session中是否有用户信息
  • 分布式:1)用户认证:可接受异步认证post请求,在successfulAuthentication认证后将token返回给用户;2)身份校验:使用BasicAuthenticationFilter的doFilterInternal方法来验证用户携带的token是否合法,并解析用户信息
 
2.反思:昨天在思想上面没有什么提升,在知识上面,主要就是对单点登录的认识,之前的单点登录并没有涉及到加密这个内容,这样更好地保护了token吗,也就是用户的信息,今天会编写相关代码
 
3.复盘:主要还是从之前的单点登录出发
  1. 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给浏览器
  1. sso-login 包下的ViewController
//toLogin 
1.首先是判断target是否存在,存在就判断cookie是否存在,
再根据cookie获取token, 判断token是否存在,
再根据token获取用户信息,如果用户信息存在,重定向回源登录页面
2.如果不存在target,赋值为登录页面
  1. 其他 包下的ViewController
//toIndex 
1.首先判断cookie是否存在,若存在根据cookie的值获取token;
再根据token是否存在,若存在,则根据用户登录网址加上token获取用户信息,并通过 session响应给登录页面
 

2.JWT实现单点登录的概念的更多相关文章

  1. springBoot整合spring security+JWT实现单点登录与权限管理--筑基中期

    写在前面 在前一篇文章当中,我们介绍了springBoot整合spring security单体应用版,在这篇文章当中,我将介绍springBoot整合spring secury+JWT实现单点登录与 ...

  2. 手把手教你学会 基于JWT的单点登录

      最近我们组要给负责的一个管理系统 A 集成另外一个系统 B,为了让用户使用更加便捷,避免多个系统重复登录,希望能够达到这样的效果--用户只需登录一次就能够在这两个系统中进行操作.很明显这就是单点登 ...

  3. Spring Security构建Rest服务-1300-Spring Security OAuth开发APP认证框架之JWT实现单点登录

    基于JWT实现SSO 在淘宝( https://www.taobao.com )上点击登录,已经跳到了 https://login.taobao.com,这是又一个服务器.只要在淘宝登录了,就能直接访 ...

  4. springboot+security+JWT实现单点登录

    本次整合实现的目标:1.SSO单点登录2.基于角色和spring security注解的权限控制. 整合过程如下: 1.使用maven构建项目,加入先关依赖,pom.xml如下: <?xml v ...

  5. spring boot:spring security+oauth2+sso+jwt实现单点登录(spring boot 2.3.3)

    一,sso的用途 ? 1,如果有多个应用系统,用户只需要登录一次就可以访问所有相互信任的应用系统. 不需要每次输入用户名称和用户密码, 也不需要创建并记忆多套用户名称和用户密码. 2,系统管理员只需维 ...

  6. Spring Boot 集成 JWT 实现单点登录授权

    使用步骤如下:1. 添加Gradle依赖: dependencies { implementation 'com.auth0:java-jwt:3.3.0' implementation('org.s ...

  7. 基于JWT机制的单点登录

    使用JWT实现单点登录时,需要注意token时效性.token是保存在客户端的令牌数据,如果永久有效,则有被劫持的可能.token在设计的时候,可以考虑一次性有效或一段时间内有效.如果设置有效时长,则 ...

  8. 看图理解JWT如何用于单点登录

    单点登录是我比较喜欢的一个技术解决方案,一方面他能够提高产品使用的便利性,另一方面他分离了各个应用都需要的登录服务,对性能以及工作量都有好处.自从上次研究过JWT如何应用于会话管理,加之以前的项目中也 ...

  9. 编程界失传秘术,SSO单点登录,什么是单点,如何实现登录?

    单点登录 多系统,单一位置登录,实现多系统同时登录的一种技术. 常出现在互联网应用和企业级平台中. 如:京东. 单点登录一般是用于互相授信的系统,实现单一位置登录,全系统有效的. 三方登录:某系统,使 ...

  10. 【夯实基础】-浅谈"单点登录"的几种实现方式

    单点登录 一.Session跨域 所谓Session跨域就是摒弃了系统提供的Session,而使用自定义的类似Session的机制来保存客户端数据的一种解决方案. 如:通过设置cookie的domai ...

随机推荐

  1. gdb调试数组访问越界记录

    综述 问题来源于力扣的一道域名访问统计题目,我本想以建立首字母索引的方式去统计,但是在申请子域名buffer的地方发现使用malloc(sizeof(char)4)申请出来的buffer每次+1只能增 ...

  2. NVT模拟时出现水分子空洞,以及NPT时盒子收缩的原理

    NVT出现水分子空洞,以及NPT时盒子收缩的原理: For a periodic system, constant pressure is the only way to equilibrate de ...

  3. [Unity基础]碰撞和触发

    参考链接: https://www.cnblogs.com/hont/p/4472326.html 碰撞关系表: https://docs.unity3d.com/Manual/CollidersOv ...

  4. 表单笔记-Antd(Form)

    antd表单使用笔记 import React, { useState, useEffect, useRef } from "react"; import { Form, Inpu ...

  5. F - Substring of Sorted String

    题目链接 题解(树状数组) 我们维护两个树状数组,一个记录 \(1\sim i\) 中 \(s_i>s_{i+1}\)的数量,即逆序对数量,另一个记录 \(1\sim i\) 中 \(26\) ...

  6. CentOS 7 时区设置 EST和CST设置

    1. https://blog.csdn.net/allway2/article/details/102995747 CentOS 7 时区设置# timedatectl status      Lo ...

  7. 学习笔记-C++

    题目:声明一个基类BaseClass,从它派生出类DerivedClass,BaseClass有成员函数fn1()和fn2(),fn1()是虚函数,DerivedClass也有成员函数fn1()和fn ...

  8. 《MySQL是怎样运行的》第七章小结

  9. Java-01enum常量特定方法

    OnJava8-Enum-常量特定方法 用枚举实现责任链模式 责任链(Chain Of Responsibility)设计模式先创建了一批用于解决目标问题的不同方法,然后将它们连成一条"链& ...

  10. 宕机了,Redis如何避免数据丢失?

      Redis的持久化主要有两大机制,即AOF日志和RDB快照 AOF日志 1.2 AOF日志是如何实现的? 说到⽇志,我们⽐较熟悉的是数据库的写前⽇志(Write Ahead Log, WAL)-- ...