Spring Gateway使用JWT实现统一身份认证

news/2024/11/25 22:00:25/

在开发集群式或分布式服务时,鉴权是最重要的一步,为了方便对请求统一鉴权,一般都是会放在网关中进行处理。目前非常流行的一种方案是使用JWT,详细的使用说明,可以找相关的资料查阅,这里先不进行深入的引用了。主要使用它下面的特性:

  • 它的数据使用JSON格式封装。所以JWT是可以在不同的开发语音中传递。
  • 在payload可以加载部分业务数据,所以JWT可以在自身存储一些其他业务逻辑所必要的非敏感信息。
  • 便于传输,jwt的构成非常简单,字节占用很小,所以它是非常便于传输的。
  • 它不需要在服务端保存会话信息, 减少了内存占用,也不需要落地存储,提升了检查效率。
  • JWT 使用的密钥都是在服务器端,不会暴露到客户端,所以是安全的。

具体的流程如下:

  1. 用户先访问登陆授权服务器,授权验证通过之后,返回给客户端授权服务器生成的JWT Token字符串
  2. 客户端再访问后面的接口时,将授权服务器返回的JWT Token添加到header中
  3. 服务器网关收到客户端请求时,检测JWT Token是否合法,如果不合法,拒绝访问,返回错误。

在这里插入图片描述
需要处理的另一个问题是JWT Token 失败的问题,比如用户修改了密码,原来的JWT Token就不能再被使用了,一般是做法是添加JWT Token的黑名单,直到JWT Token失败。毕竟触发某些事件让JWT Token失效还是低概率事件。
做法如下:

  • 当JWT Token失效事件发生时,将原来的JWT TOKEN 加入的黑名单中,黑名单,可以存到Redis或数据库中。
  • 为了提升处理效率,网关服务定时从授权服务刷新黑名单到网关服务内存中,这样检测JWT Token是否在黑名单中效率比较高
  • 在黑名单中的JWT Token 过期后,自动从黑名单中删除,防止黑名单数量堆积。
  • 为了防止用户JWT Token扩展,用户登陆之后检测,如果已存在JWT Token 且过期时间大于1天,就返回旧的JWT Token,否则自动延期,返回新的JWT Token

实现源码地址:https://gitee.com/wgslucky/xinyue-game-frame


http://www.ppmy.cn/news/75024.html

相关文章

github搜索方法

GitHub可以使用搜索功能来查找存储库、代码、问题、提交记录、分支等。 1.进入GitHub主页(https://github.com/) 2.在搜索框中输入您要搜索的关键字或短语,并按“Enter”键。 3.您将被重定向到一个新页面,其中包含有关您的搜索结果…

【测试开发】 测试题整理01

求一切顺利~ 文章目录 1. 测试与调试的区别2. 软件测试的概念3. 软件测试与软件开发的区别4. 测试人员需要具备的素质5. 软件开发的生命周期6. 为什么要进行测试7. 需求与bug8. 软件缺陷的级别 1. 测试与调试的区别 调试(Debugging)和测试(Test)是软件开发过程中非常重要的两个…

信道通信基础 - 传输介质(双绞线、光纤)

文章目录 1 概述2 传输介质2.1 双绞线2.2 光纤 3 扩展3.1 网工软考真题 1 概述 2 传输介质 2.1 双绞线 双绞线:8 根铜导线每 2 根扭在一起(百兆用 4 根,千兆必须用 8 根)分类 2.2 光纤 光纤:利用光在 玻璃或塑料纤…

机器学习神经网络——Adaboost分离器算法

系列文章目录 机器学习之SVM分类器介绍——核函数、SVM分类器的使用 机器学习的一些常见算法介绍【线性回归,岭回归,套索回归,弹性网络】 机器学习相关概念思维导图 文章目录 系列文章目录 前言 Adaboost算法的简单介绍 Adaboost算法相…

Hive---拉链表设计与实现

1 数据同步问题 Hive在实际工作中主要用于构建离线数据仓库,定期的从各种数据源中同步采集数据到Hive中,经过分层转换提供数据应用。比如每天需要从MySQL中同步最新的订单信息、用户信息、店铺信息等到数据仓库中,进行订单分析、用户分析。 …

【Map——简单使用】

文章目录 什么是Map定义map插入元素查找元素删除元素遍历元素 什么是Map Map是C STL(Standard Template Library)提供的一个关联式容器,它提供了一组键值对(key-value)的数据结构,可以通过key快速查找对应…

用docker搭建Ceph集群问题整理(基于nautilus版本)

用docker搭建Ceph集群问题整理(基于nautilus版本) 如果你想要使用Docker搭建Ceph集群,那么你可能会遇到一些问题。这里我们整理了一些经典的问题以及解决方法,以帮助你更好地搭建Ceph集群。 无法连接到集群管理器 当你尝试连接…