IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Spring Cloud Security:Oauth2结合JWT使用 -> 正文阅读

[Java知识库]Spring Cloud Security:Oauth2结合JWT使用

Spring Cloud Security:Oauth2结合JWT使用

创建oauth2-jwt-server模块

使用Redis存储令牌,在pom.xml中添加Redis相关依赖,在application.yml中添加redis相关配置

TokenStore 令牌的存储策略

令牌的存储策略,这里使用的是JwtTokenStore,使用JWT的令牌生成方式,还有以下两个比较常用的方式:

RedisTokenStore:将令牌存储到Redis中,此种方式相对于内存方式来说性能更好
JdbcTokenStore:将令牌存储到数据库中,需要新建从对应的表

RedisTokenStore
  • 使用RedisTokenStore 存储令牌,在认证服务器配置中指定令牌的存储策略为Redis

添加在Redis中存储令牌的配置:
在这里插入图片描述

  • 进行获取令牌操作,可以发现令牌已经被存储到Redis中。
    在这里插入图片描述
    在这里插入图片描述

JwtTokenStore 使用JWT存储令牌

AccessTokenConverter

AccessTokenConverter 令牌增强类,用于JWT令牌和OAuth身份进行转换。
作用是把token字符串转换成OAuth2AccessToken对象。

启动服务

运行项目后使用密码模式来获取令牌,访问如下地址:http://localhost:9401/oauth/token
发现获取到的令牌已经变成了JWT令牌。
在这里插入图片描述

Postman请求结果,获取到的access_token已经变成了JWT令牌。
在这里插入图片描述
将access_token拿到https://jwt.io/ 网站上去解析下可以获得其中内容。

{
  "exp": 1572682831,
  "user_name": "macro",
  "authorities": [
    "admin"
  ],
  "jti": "c1a0645a-28b5-4468-b4c7-9623131853af",
  "client_id": "admin",
  "scope": [
    "all"
  ]
}

TokenEnhancer 扩展JWT中存储的内容

有时候我们需要扩展JWT中存储的内容,这里我们在JWT中扩展一个key为enhance,value为enhance info的数据。

JwtTokenEnhancer

JwtTokenEnhancer 继承TokenEnhancer 实现一个JWT内容增强器,并实例化该JwtTokenEnhancer。
在这里插入图片描述

  • 在认证服务器配置中配置JWT的内容增强器:

在这里插入图片描述
运行项目后使用密码模式来获取令牌,之后对令牌进行解析,发现已经包含扩展的内容。

在这里插入图片描述

问题:access_token不是jwt格式了

AccessTokenConverter 作用是把token字符串转换成OAuth2AccessToken对象。
TokenEnhancer作用是在OAuth2AccessToken 里添加额外的信息。
JwtAccessTokenConverter 即实现了AccessTokenConverter接口,也实现了TokenEnhancer接口。

JWT工具解析存储内容

修改UserController类,使用jjwt工具类来解析Authorization头中存储的JWT内容。
在pom.xml中添加JWT工具包依赖:

<dependency>
    <groupId>io.jsonwebtoken</groupId>
    <artifactId>jjwt</artifactId>
    <version>0.9.0</version>
</dependency>

在这里插入图片描述

在这里插入图片描述

刷新令牌

修改认证服务器的配置,在authorizedGrantTypes中增加授权类型:refresh_token
在这里插入图片描述

  • 使用刷新令牌模式来获取新的令牌,访问地址:http://localhost:9401/oauth/token
    在这里插入图片描述

参考地址

https://www.macrozheng.com/cloud/oauth2_jwt.html#%E4%BD%BF%E7%94%A8jwt%E5%AD%98%E5%82%A8%E4%BB%A4%E7%89%8C

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-09-24 20:42:44  更:2022-09-24 20:45:11 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 9:15:57-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码