前面说了很多的理论知识,本文使用SpringSecurity + JWT来实现单点登录。

文章目录

  • 什么是单点登陆
  • 简单的运行机制
  • SpringSecurity整合JWT
    • 认证思路分析

什么是单点登陆

单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。


简单的运行机制

单点登录的机制其实是比较简单的,用一个现实中的例子做比较。某公园内部有许多独立的景点,游客可以在各个景点门口单独买票。

对于需要游玩所有的景点的游客,这种买票方式很不方便,需要在每个景点门口排队买票,钱包拿 进拿出的,容易丢失,很不安全。

于是绝大多数游客选择在大门口买一张通票(也叫套票),就可以玩遍所有的景点而不需要重新再买票。他们只需要在每个景点门 口出示一下刚才买的套票就能够被允许进入每个独立的景点。

单点登录的机制也一样,如下图所示


用户认证:这一环节主要是用户向认证服务器发起认证请求,认证服务器给用户返回一个成功的令牌token,主要在认证服务器中完成,即图中的认证系统,注意认证系统只能有一个。

身份校验: 这一环节是用户携带token去访问其他服务器时,在其他服务器中要对token的真伪进行检验,主要在资源服务器中完成,即图中的应用系统2 3。


SpringSecurity整合JWT

认证思路分析

SpringSecurity主要是通过过滤器来实现功能的!我们要找到SpringSecurity实现认证和校验身份的过滤器!

回顾集中式认证流程

用户认证:使用UsernamePasswordAuthenticationFilter过滤器中attemptAuthentication方法实现认证功能,该过滤器父类中successfulAuthentication方法实现认证成功后的操作。

身份校验:使用BasicAuthenticationFilter过滤器中doFilterInternal方法验证是否登录,以决定能否进入后续过滤器。

分析分布式认证流程

用户认证

由于分布式项目,多数是前后端分离的架构设计,我们要满足可以接受异步post的认证请求参数,需要修改UsernamePasswordAuthenticationFilter过滤器中attemptAuthentication方法,让其能够接收请求体。

另外,默认successfulAuthentication方法在认证通过后,是把用户信息直接放入session就完事了,现在我们需要修改这个方法,在认证通过后生成token并返回给用户。

身份校验:原来BasicAuthenticationFilter过滤器中doFilterInternal方法校验用户是否登录,就是看session中是否有用户信息,我们要修改为,验证用户携带的token是否合法,并解析出用户信息,交给SpringSecurity,以便于后续的授权功能可以正常使用。


SpringSecurity + JWT实现单点登录相关推荐

  1. SpringSecurity+OAuth2.0+JWT实现单点登录应用

    SpringSecurity+OAuth2.0+JWT实现单点登录应用 gitee项目练习地址:https://gitee.com/xzq25_com/springsecurity.oauth2 OA ...

  2. springsecurity oauth2使用jwt实现单点登录

    Jwt方式已经分享在文章结尾处的百度网盘链接中,redis方式可以看我以前发表的文章. 文章目录 前言 一.springsecurity oauth2 + redis方式的缺点 二.oauth2认证的 ...

  3. springBoot整合spring security+JWT实现单点登录与权限管理前后端分离

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

  4. springBoot整合spring security+JWT实现单点登录与权限管理前后端分离--筑基中期

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

  5. [业务流程]JWT实现单点登录(SpringBoot + Vue +axious)

    JWT实现单点登录(SpringBoot + Vue +axious) 准备阶段: **登录所需对象** admin{ "username":"", //作为T ...

  6. 基于Spring Security与JWT实现单点登录

    基于RBAC的权限管理 RBAC(Role-Based Access Control):基于角色的访问控制 当前项目中,RBAC具体的表现为: 管理员表:ams_admin 角色表:ams_role ...

  7. JWT实现单点登录(sso)功能

    单点登录描述: 单点登录主要时应用在微服务架构中,在任意一个子服务中输入用户的用户名,密码进行登录时, 在跳转到其他系统的时候,就无需在进行登录,直接可以识别出用户的身份,权限以及角色等信息 . . ...

  8. Spring Cloud入门-Oauth2授权之基于JWT完成单点登录(Hoxton版本)

    文章目录 Spring Cloud入门系列汇总 摘要 单点登录简介 创建oauth2-client模块 修改授权服务器配置 网页单点登录演示 调用接口单点登录演示 oauth2-client添加权限校 ...

  9. Springboot+Spring-Security+JWT 实现用户登录和权限认证

    如今,互联网项目对于安全的要求越来越严格,这就是对后端开发提出了更多的要求,目前比较成熟的几种大家比较熟悉的模式,像RBAC 基于角色权限的验证,shiro框架专门用于处理权限方面的,另一个比较流行的 ...

最新文章

  1. spark集群使用hanlp进行分布式分词操作说明
  2. ViewPager动态添加、删除Fragment,且提供红色小圆球指示当前位置
  3. 二维小波变换_Wavelet Pooling小波池化的思考
  4. [HNOI2003]消防局的设立(贪心)
  5. 字节跳动社招面试记录,javaspring框架详细设计模板
  6. filter以及reduce的用法
  7. java word搜索_java 实现word 文档的在线编辑. 以及全文关键字搜索和高亮显示
  8. 【系统分析师之路】2020年系统分析师综合知识历年真题
  9. windows 清理助手 3.1
  10. java生成xlsx文件
  11. Flink StreamingFileSink写入hdfs,文件一直处于inprogress
  12. m4s格式转换mp3_高质量音频转换器,如何转换成mp3音频格式
  13. c 语言 百钱买百鸡
  14. Python numpy.random中的shuffle和permutation函数的区别
  15. nRF 主机扫描过滤器
  16. 软件架构风格整理(6 CS,BS等)
  17. 【装机知识】机箱知识整理
  18. Android Things:让你陌生的面包板
  19. HTML学生个人网站作业设计——HTML+CSS+JavaScript优分期大学生分期购物商城(7页)
  20. Python十分钟轻松入门

热门文章

  1. 日均数据量千万级,MySQL、TiDB 两种存储方案的落地对比
  2. 并发框架Disruptor
  3. 学习yield《转》
  4. ASP.NET中Url重写后,打不开真正的Html页面
  5. MapReduce: map读取文件的过程
  6. cloudsim样例描述
  7. 七人のオンラインゲーマーズ 全年龄正式汉化补丁
  8. python用装饰器实现缓存函数执行结果
  9. [转] FFmpeg常用基本命令
  10. 《iOS 9 开发指南》——第6章,第6.7节iOS 9控件的属性