第八章 SpringCloud Oauth2认证中心-基于JWT认证

MATLAB实战:Gardner定时同步算法实现与BER曲线优化指南 本文详细介绍了Gardner定时同步算法在MATLAB中的实现与优化方法,重点解析了算法原理、关键步骤实现及BER曲线绘制中的常见问题解决方案。通过优化参数设置和系统架构,提升数字通信系统的符号同步性能,为QPSK、QAM等调制系统提供实用参考。 阅读详情
1.项目概要
这一章节的内容以第七章的代码为基础改造而成 https://github.com/kwang2003/springcloud-study-ch07.git 。
传统的web应用中,我们通常通过cookie+session机制来保证调用的安全,在没有认证的情况下自动重定向到登录页面或者调用失败页面,而现在整个架构编程微服务模式了,cookie和session机制已经不能很好的满足保护API的需求了,更多的情况下采用token的验证机制,JWT的本质也是一种token。
JWT:JSON Web Token,是JSON风格的轻量级授权和认证规范,可以实现无状态,分布式的web应用授权。JWT的内容由三部分组成,分别是Header,Payload,Signature,三个部分之间通过.分割,举例
xxxxx.yyyyyy.zzzzz
Header
头部Header一般由2个部分组成alg和typ,alg是加密算法,如HMAC或SHA256,typ是token类型,取值为jwt,一个Header的例子
{
"alg": "HS256",
"typ": "JWT"
}
然后对Header部分进行Base64编码,得到第一部分的值
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.{PAYLOAD}.{SIGNATURE}
Payload
内容部分Payload是JWT存储信息的主体,包含三类内容
  • 标准中注册的声明
  • 公共的声明
  • 私有的声明
标准中注册的声明
  • iss:jwt签发者
  • sub:jwt所面向的用户
  • aud:接收jwt的一方
  • exp:jwt的过期时间
  • nbf:定义在什么时间之前该jwt是不可用的
  • iat:jwt的签发时间
  • jti:jwt的唯一标识,主要用作一次性token,避免重放攻击
公共的声明:
可以存放任何信息,根据业务实际需要添加,如用户id,名称等,但不要存放敏感信息
私有的声明:
私有声是提供者和消费者所共同定义的声明,不建议存放敏感信息
举例:定义一个payload:
{ "sub": "1234567890", "name": "John Doe", "admin": true }对其进行Base64编码,得到第二部分
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.{SIGNATURE}
Signature
token的签名部分由三部分组成256签名
var encodedString = base64UrlEncode(header) + '.' + base64UrlEncode(payload);
var signature = HMACSHA256(encodedString, 'secret');
得到最终的token串
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ
2.Oauth2-Server中生成JWT Token
a)通过keytool生成证书
keytool -genkeypair -alias kevin_key -keyalg RSA -keypass 123456 -keystore kevin_key.jks -storepass 123456

查看证书信息:
keytool -list -v -keystore kevin_key.jks -storepass 123456

查看公钥信息
keytool -list -rfc -keystore kevin_key.jks -storepass 123456

b)将生成的kevin_key.jks文件放到oauth2-server工程的srce/main/resources目录下

c)添加jwt相关jar包依赖
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-jwt</artifactId>
</dependency>
d)在OAuth2服务器端配置核心类AuthorizationServerConfiguration中增加jwt token相关配置

3.测试Oauth2服务
出现登录页面,输入用户名:admin 密码;123456

点击Submit按钮,进入用户授权确认页面

点击Approve,跳转到baidu页面,后面携带了code和state参数
根据code换取access_code,注意使用post方法
注意这个code要和上个步骤中获得的code保持一致

用户名输入client,密码是secret,点击确定,可以看到access_token已经是jwt格式的字符了

{"access_token":" eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1MTAxNzQ2MDYsInVzZXJfbmFtZSI6ImFkbWluIiwiYXV0aG9yaXRpZXMiOlsiYWRtaW4iXSwianRpIjoiNTJhOGM5MTUtMTE2OS00YzU5LWI0MmEtZGY4ZDM0Y2QwZWU0IiwiY2xpZW50X2lkIjoiY2xpZW50Iiwic2NvcGUiOlsiYXBwIl19.GecJM-FHApwznyYl-D3IjB0TpjhdhUXfYv782kfS9vdT0VZsu2HN-MGb-N-6Hf0efZ_mmz54IahJaq3KTw251v4L2O5A1r_iMuUP7GXs_qPHAGn3K1b4l-mNnpJdH5hhS5zYIRqOX2a8DXyI4zD7g8BQL-9PiR3kj9k_z9nW8vY9l2_x5Kyoc-sehxxQ5uQHM3xu6DzOwBpbbER7U_NnUwmcz5nS9YyAexSDnBbZAVpQavL2s1yYQVMJ5Dreq2asXHFbeQHXu5UqVbbTFuOgAylbFJ9K-3nsGAKT9NbzqBPRovI3s_X9HgjrzJHAuojBMeK0QMbvYSbUg2HB7MNNJw","token_type":"bearer","expires_in":43199,"scope":"app","user_name":"admin","jti":"52a8c915-1169-4c59-b42a-df8d34cd0ee4"}
4.access_token信息解析
我们通过上个步骤得到的token信息是不可读的,但是因为header,body都是经过base64转码过的,因此我们可以通过Base64将其解码,spring cloud里也提供了jwt相关的工具类帮我们来反解析这个串
package com.pachiraframework.springcloud.oauth2.config;

import org.junit.Test;
import org.springframework.security.jwt.Jwt;
import org.springframework.security.jwt.JwtHelper;

public class JwtTest {
@Test
public void test() {
String token = " eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1MTAxNzQ2MDYsInVzZXJfbmFtZSI6ImFkbWluIiwiYXV0aG9yaXRpZXMiOlsiYWRtaW4iXSwianRpIjoiNTJhOGM5MTUtMTE2OS00YzU5LWI0MmEtZGY4ZDM0Y2QwZWU0IiwiY2xpZW50X2lkIjoiY2xpZW50Iiwic2NvcGUiOlsiYXBwIl19.GecJM-FHApwznyYl-D3IjB0TpjhdhUXfYv782kfS9vdT0VZsu2HN-MGb-N-6Hf0efZ_mmz54IahJaq3KTw251v4L2O5A1r_iMuUP7GXs_qPHAGn3K1b4l-mNnpJdH5hhS5zYIRqOX2a8DXyI4zD7g8BQL-9PiR3kj9k_z9nW8vY9l2_x5Kyoc-sehxxQ5uQHM3xu6DzOwBpbbER7U_NnUwmcz5nS9YyAexSDnBbZAVpQavL2s1yYQVMJ5Dreq2asXHFbeQHXu5UqVbbTFuOgAylbFJ9K-3nsGAKT9NbzqBPRovI3s_X9HgjrzJHAuojBMeK0QMbvYSbUg2HB7MNNJw";
Jwt jwt = JwtHelper.decode(token);
System.out.println(jwt.toString());
}
}

通过这个测试我们可以看出来,token中已经包含了当前用户的信息了,包括我们在accessTokenConvertor()方法中给token中添加的额外信息user_name
Unreal5从入门到精通之如何录制360°VR全景视频 摘要:本文详细介绍了使用虚幻引擎(UE)生成360°全景视频的完整流程。首先需启用MovieRender Queue和Panoramic Capture插件,准备场景并设置相机序列。通过影片渲染队列选择8K分辨率输出PNG序列帧,利用ffmpeg工具转换为MP4格式,最终获得高精度全景视频。该方法适用于VR内容开发,能以较低性能消耗实现影院级画质,特别适合冥想类应用场景。教程涵盖从插件配置到后期合成的全链路操作,为开发者提供高效的全景内容生产解决方案。(150字) 阅读详情

相关推荐

tkinter表格进阶:5分钟实现CSV数据可视化编辑界面(含右键菜单配置)

本文详细介绍了如何使用Python的tkintertable库快速构建CSV数据可视化编辑界面。通过导入导出CSV数据、深度定制右键菜单(如复制、插入行、删除行)以及实现单元格验证等进阶功能,开发者能在5分钟内创建一个可嵌入自动化流程的专业级桌面数据编辑工具,显著提升数据处理效率。

930

jwt 私钥_基于JWT的token弱密钥爆破

JSON Web Token(JWT)是目前最流行的跨域身份验证解决方案。直接根据token取出保存的用户信息,以及对token可用性校验,大大简化单点登录。JWT=header+payload+signature(以.相隔)例:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1NzYxMTk2NTYsInVzZXJuYW1lIjoiemRqIiwi...

weixin_39629679的博客 8078

BurpSuite实战:5分钟搞定DVWA的CSRF漏洞测试(附详细截图)

本文详细介绍了如何使用BurpSuite在DVWA靶场中进行CSRF漏洞测试,包括环境配置、攻击原理剖析、分步攻击演示及企业级防御方案。通过实战案例,帮助读者深入理解CSRF漏洞的危害与防护措施,提升Web应用安全防护能力。

weixin_30879169的博客 493

shell-jwt

jwt

qq_21442867的博客 2062

如何设计一个低代码平台

近些年来,低代码发展火热,各种低代码平台如雨后春笋纷纷崛起,这些平台各定位不同,优劣不同,用户的选择空间很大。那么,如果用户想从零开始设计一个低代码平台,该如何做呢?

Jarod_Chou的博客 8257

MemSeg:一种差异和共性来检测图像表面缺陷的半监督方法

本文认为人为创建类内差异和保持类内共性可以帮助模型实现更好的缺陷检测能力,从而更好地区分非正常图像。如图一所示。差异(differences):MemSeg引入人工模拟的异常图像在训练阶段使模型能够区分正常和异常的图像,减轻了半监督学习只能用正常样本进行训练的不足,然后在推理阶段可以直接输入图像无需做任何后处理。共性(commonalities):MemSeg引入了一个记忆池来记录正常样本的通用模式,在训练和推理阶段,比较输入图像和记忆池中的样本之间的差异,为异常区域的定位提供有用的信息。

斯人若彩虹,遇上方知有! 4839

【网络安全】垂直越权漏洞与代码分析

文章写完了之后,申请CVE有一些麻烦,不过好在还是申请到了ps 申请CVE前,已经提交了CNVD【一>所有资源获取

m0_59598029的博客 1570

3款 433MHz 收发模块对比:SYN480R vs RXB6 vs DL-TX19,实测卷帘门遥控距离

本文深度评测了3款433MHz收发模块SYN480R、RXB6与DL-TX19在卷帘门遥控距离、穿透性能和抗干扰能力等方面的表现。通过实测数据对比,分析了超外差、超再生和PLL锁相环技术的优劣,为智能家居和工业控制领域的无线遥控方案选型提供专业参考。

weixin_30700977的博客 393

openssl 计算sha256

echo -n eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJwYnh3ZWIiLCJleHAiOjE1OTg5NTc2NTEsImlhdCI6MTU5ODk1NzY0MSwiaXNzIjoicGJ4 | openssl sha -sha256 -binary -hmac key12345678 | base64

lyyslsw的专栏 6919

45 - Android系统源码-crosvm 实战:基于 KVM 的 Rust 安全虚拟机监控器核心技术

摘要:crosvm 是 Google 开发的基于 KVM 的轻量级虚拟机监控器(VMM),采用 Rust 语言编写,专为 ChromeOS 和 Android 设计。其核心特点包括: 安全架构:通过 Rust 的内存安全特性和多进程隔离(每个设备运行在独立沙箱进程)大幅降低攻击面 性能优化:基于 KVM 的硬件虚拟化支持,结合异步 I/O (io_uring/epoll) 实现高效设备模拟 模块化设计:清晰的 trait 抽象层(Hypervisor/Vm/Vcpu)支持跨平台扩展 Android 集成

保持专注,保持热爱 225

把 SAP Query 用到极致:ABAP Query 的核心概念、配置流程、权限与运输治理全解析

摘要:SAP Query 是一款面向业务用户的自助报表工具,可解决标准报表无法满足业务需求的问题。其核心由四大组件构成:Queries(报表定义)、InfoSets(数据视图)、User Groups(权限分组)和Translation(多语言支持)。通过SQ03、SQ02、SQ01事务码分步创建用户组、数据视图和查询,业务用户无需ABAP知识即可生成Basic List(明细)、Statistics(统计)和Ranked List(排名)三种报表形式。典型案例展示了如何为采购部门设计包含明细追溯和Top1

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 179

SpringCloud Gateway网关为认证中心和用户微服务构建统一的认证授权入口

点击关注公众号,实用技术文章及时了解本文主要内容是通过SpringCloud Gateway构建一个网关微服务,作为统一的认证授权和访问入口。配置文件先引入相关依赖,对应的pom文件内容如下:<?xmlversion="1.0"encoding="UTF-8"?> <projectxmlns="http://maven.apache.org/POM/4.0.0" ...

Java知音 840

YOLOv8改进---BiFPN特征融合

yolov8结合BiFPN进行改进

qq_41920323的博客 4523

signature=82c2684cc7c94545614b750164c2561d,第八章 SpringCloud Oauth2认证中心-基于JWT认证

1.项目概要传统的web应用中,我们通常通过cookie+session机制来保证调用的安全,在没有认证的情况下自动重定向到登录页面或者调用失败页面,而现在整个架构编程微服务模式了,cookie和session机制已经不能很好的满足保护API的需求了,更多的情况下采用token的验证机制,JWT的本质也是一种token。JWT:JSON Web Token,是JSON风格的轻量级授权和认证规范,可...

weixin_36125719的博客 453

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

第九章 SpringCloud Oauth2认证中心-Zuul网关上添加认证

本章完整源码地址:https://github.com/kwang2003/springcloud-study-ch09.git 1.项目概要 这一章节的内容以第七章的代码为基础改造而成https://github.com/kwang2003/springcloud-study-ch08.git。 通过第八章的学习,我们已经已经基于JWT升级了OAuth2认证服务器,在这个章节中

无证程序员 2万+

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Nacos身份认证绕过漏洞(QVD-2023-6271)

漏洞原理为开源服务管理平台 Nacos在默认配置下未对 token.secret.key 进行修改,导致远程攻击者可以绕过密钥认证进入后台造成系统受控等后果。

qq_50854662的博客 1万+

基于Token的身份验证的过程

基于Token的身份验证的过程如下:客户端使用用户名跟密码请求登录服务端收到请求,去验证用户名与密码验证成功后,服务端会签发一个 Token,再把这个 Token 发送给客户端客户端收到 Token 以后可以把它存储起来,比如放在 Cookie 里或者 Local Storage 里客户端每次向服务端请求资源的时候需要带着服务端签发的 Token服务端收到请求,然后去验证客户端请求里面带着的 To...

喵酱 1万+

JWT介绍

JWT介绍 JWT长什么样? JWT是由三段信息构成的,将这三段信息文本用.链接一起就构成了Jwt字符串。就像这样: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ JWT的构成 第一部分我们称它为头部(header),第二部分我们称其为载荷(payload

学无止境 2036

从零搭建SpringCloudAlibaba开发框架-001-认证中心

1. 在gitee上新建代码仓库,一开始建的会是私有的,建完之后再改成公开的。4.创建Module。

smilease的专栏 319

JWT原理详解

JWT原理详解 随着前后端分离的发展,以及数据中心的建立,越来越多的公司会创建一个中心服务器,服务于各种产品线。 而这些产品线上的产品,它们可能有着各种终端设备,包括但不仅限于浏览器、桌面应用、移动端应用、平板应用、甚至智能家居 实际上,不同的产品线通常有自己的服务器,产品内部的数据一般和自己的服务器交互。 但中心服务器仍然有必要存在,因为同一家公司的产品总是会存在共享的数据,比如用户数据 这些设备与中心服务器之间会进行http通信 一般来说,中心服务器至少承担着认证和授权的功能,例如登录:各种设备发

前端那些事@时光 3591

spring Cloud微服务 security+oauth2认证授权中心自定义令牌增强,并实现登录和退出

访问oauth/token,oauth2默认返回的授权token信息如下:如果不自定义可以看到访问oauth/token,默认访问的是TokenEndpoint下的接口/*** Oauth2 控制器} /*** 自定义 Token 返回对象** @return= null) {} }

write less , do more 6607

JWT--Token(令牌)验证

什么是Token? 在计算机身份认证中是令牌(临时)的意思,在词法分析中是标记的意思。一般我们所说的的token大多是指用于身份验证的token 为什么使用token? 我们需要每次都知道当前请求的人是谁,但是又不想每次都让他提交用户名和密码,这时就需要有一个等同于用户名密码也能够标识用户身份的东西,即—token. 基于Token的身份验证方法 客户端使用用户名和密码请求登录 服务端收到请求,...

jiangsheer的博客 1万+

SpringCloud整合OAuth2认证服务器搭建笔记

添加依赖<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-oauth2</artifactId> </dependency> 认证服务器的配置说明2.1 配置客户端应用的详情信息(获取令牌、验令牌时使用) 2.2 配置authenticationManager,让认证服务器能识别登录的.

yichengjie_c的博客 487

AI题库:什么是JWT(JSON Web Token)?它的工作原理是什么?

JSON Web Token(JWT)是一种开放标准(RFC 7519),它定义了一种简洁的、自包含的方法用于通信双方之间以 JSON 对象的形式安全地传输信息。JWT由三部分组成:头部(Header)、有效载荷(Payload)和签名(Signature)。此外,如果JWT令牌被截获,那么攻击者将能够访问令牌中的所有信息。头部是一个JSON对象,它包含了关于JWT的元数据,例如算法和令牌类型。有效载荷也是一个JSON对象,它包含了用户信息以及一些关于令牌的声明,例如发行人、过期时间、用户权限等。

SAXX2的博客 1333

Nacos漏洞总结复现

Nacos中发现影响Nacos <= 2.1.0的问题,Nacos用户使用默认JWT密钥导致未授权访问漏洞。通过该漏洞,攻击者可以绕过用户名密码认证,直接登录Nacos用户。

yy1715713348的博客 3440

SpringCloud(六) oauth2认证中心(单点登陆)

SpringCloud(六) oauth2认证中心(单点登陆) 1.介绍 在Spring Cloud需要使用OAUTH2来实现多个微服务的统一认证授权,通过向OAUTH服务发送某个类型的grant type进行集中认证和授权,从而获得access_token,而这个token是受其他微服务信任的,我们在后续的访问可以通过access_token来进行,从而实现了微服务的统一认证授权 OAuth 2...

luzhuhong1的博客 1万+

jwt攻击总结

文章目录1. 通过修改header中的alg字段实现攻击2. 通过爆破密钥3. 修改kid实现攻击4. 修改加密算法参考文章 jwt格式举例如下,以点来分割,总共为三部分: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIyMzMzIiwibmFtZSI6Im5wZnMiLCJhZG1pbiI6dHJ1ZX0.mcHAMzOrqyqLk5-tmWVp1-zdlqIVcOdv-39oQIoOWoQ jwt是一种类似于token、session的用户身份凭据。

Shanfenglan's blog 1万+
上一篇: 第七章 SpringCloud OAuth2认证中心-搭建认证中心
下一篇: 第九章 SpringCloud Oauth2认证中心-Zuul网关上添加认证
CrazyCoder2010
博客等级 码龄16年 298粉丝 110原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值