使用RSA密钥生成JWT

在内部系统上调用基础服务时,在基础服务上加上OAuth验证,基于Spring boot OAuth2.0实现,采用JsonWebToken的方式。accessToken由调用者自己生成,基于RSA生成私钥签名,基础服务公钥验证。
accessToken的生成采用开源的JJWT实现,基础服务的OAuth由spring-security-oauth2框架来自动实现(见:[url]http://godjohnny.iteye.com/blog/2320220[/url])。
生成accessToken的步骤:
1、生成密钥库文件。
使用keytool。具体过程略。
2、使用该密钥文件生成accessToken
2.1 从密钥库文件加载密钥对
public class JKSUtil {
private String keyStoreFile;
private char[] password;
private KeyStore store;
private Object lock = new Object();

private static JKSUtil instance = null;

public static JKSUtil getInstance() {
synchronized (JKSUtil.class) {
if (instance == null) {
synchronized (JKSUtil.class) {
instance = new JKSUtil("/keystore.jks", "foobar".toCharArray());
}
}
return instance;
}
}

private JKSUtil(String _jksFilePath, char[] password) {
this.keyStoreFile = _jksFilePath;
this.password = password;
}

public KeyPair getKeyPair(String alias) {
return getKeyPair(alias, this.password);
}

public KeyPair getKeyPair(String alias, char[] password) {
try {
synchronized (this.lock) {
if (this.store == null) {
synchronized (this.lock) {
InputStream is = this.getClass().getResourceAsStream(keyStoreFile);
try {
this.store = KeyStore.getInstance("JKS");
this.store.load(is, this.password);
} finally {
if (is != null) {
try {
is.close();
} catch (Exception e) {
}
}
}
}
}
}
RSAPrivateCrtKey key = (RSAPrivateCrtKey) this.store.getKey(alias, password);
RSAPublicKeySpec spec = new RSAPublicKeySpec(key.getModulus(), key.getPublicExponent());
PublicKey publicKey = KeyFactory.getInstance("RSA").generatePublic(spec);
return new KeyPair(publicKey, key);
} catch (Exception e) {
throw new IllegalStateException("Cannot load keys from store: " + this.keyStoreFile, e);
}
}
}

2.2 使用该密钥对,使用JJWT生成accessToken
   public static String generateAccessToken() throws Exception {
KeyPair keyPair = JKSUtil.getInstance().getKeyPair("test");
String compactJws = Jwts.builder().setSubject("MyService")
.signWith(SignatureAlgorithm.RS256, keyPair.getPrivate()).compact();
System.out.println(compactJws);
return compactJws;
}

3、在调用基础服务时,HTTP头上加上accessToken
参见:[url]https://tools.ietf.org/html/rfc6750#section-2.1[/url]

基础服务中,启动Oauth2.0验证,并加上密钥库中的公钥(PEM格式)。导出密钥库文件中的公钥,仍然使用keytool命令。

其他:
1、从密钥库中导出DER格式公钥(证书)的命令:
keytool -exportcert -file publie2.crt -keystore keystore.jks -alias test
2、从密钥库中导出PEM格式公钥(证书)的命令:
keytool -exportcert -rfc -file publie2.crt -keystore keystore.jks -alias test
3、JAVA中加载DER格式公钥的方式:
public static PublicKey loadPublicKey(String _pubKeyFile) throws CertificateException, FileNotFoundException {
FileInputStream fis = new FileInputStream(_pubKeyFile);
try {
CertificateFactory certificatefactory = CertificateFactory.getInstance("X.509");
X509Certificate Cert = (X509Certificate) certificatefactory.generateCertificate(fis);
PublicKey pk = Cert.getPublicKey();
return pk;
} finally {
try {
fis.close();
} catch (IOException e) {
}
}
}
高效静音黑科技 —— 单相直流无刷电机驱动器 然而,传统的BLDC电机驱动通常依赖于三相架构,电路复杂,成本高昂,且在低功率应用中显得有些“大材小用”。单相直流无刷电机驱动器作为一项高效、静音、经济的技术,正逐渐改变着各个领域的电机驱动方式。其精巧的控制策略、显著的优势以及广阔的应用前景,都预示着这项技术将在未来扮演越来越重要的角色。它相较于传统的三相驱动,显著简化了电路结构,降低了成本,尤其适用于低功率、对静音要求极高的应用场景。通过这些模块的协同工作,单相直流无刷电机驱动器能够实现对电机速度、扭矩的精确控制,并最大程度地降低噪声和振动。 阅读详情

相关推荐

爬取二手房数据:Python爬虫+Geopy实战,看透房价与地理位置的隐藏关系

哪些区域单价虚高(房源少但单价远高于周边);哪些小区性价比高(靠近地铁/学校,单价低于同地段平均水平);房价与地理位置的量化关系(如距离地铁每远1公里,单价下降多少)。如果想扩展分析范围,可爬取多个城市/区域的数据,对比不同城市的房价差异;或结合时间维度(定期爬取),分析房价的涨跌趋势。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 949

JWT使用RSA加解密

JWT使用RSA加解密

底层码农 5191

从机械臂示教到厨房做饭:ACT模仿学习如何让机器人更“人性化”?

本文探讨了ACT(Action Chunking with Transformers)模仿学习技术如何让机器人更“人性化”,特别是在厨房等复杂场景中的应用。通过动作分块(Action Chunking)和时态融合(Temporal Ensemble)技术,机器人能够像人类一样记忆和执行复杂任务,如烹饪。文章还分析了ACT在家庭场景中的落地挑战及其在康复医疗、柔性制造等领域的跨领域应用潜力。

weixin_30613343的博客 255

JWT+RAS

package com.czxy.utils; import io.jsonwebtoken.Claims; import io.jsonwebtoken.JwtBuilder; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; import org.apache.commons.beanutils....

Eros1onz的博客 574

DexProtector内存校验绕过与DEX提取实战

DEX文件是Android应用的核心执行单元,其动态加载与运行时保护机制直接关系到App安全强度。DexProtector作为主流商业加固方案,摒弃传统文件级防护,转而依托ART虚拟机下的匿名内存映射段(anonymous mmap)构建多维校验体系——涵盖字节码完整性校验、内存页属性检测及运行时环境感知。其技术价值在于将防护锚点从静态APK迁移至动态内存态,大幅提升逆向门槛。典型应用场景包括金融类App的防篡改加固、游戏客户端的反外挂保护,以及政企应用的合规性安全增强。本文聚焦DexProtector v

weixin_30315435的博客 714

vTestStudio保姆教程之从0到1搭建软件环境

学习HIL测试的必经之路,保姆级教学VT从搭建到测试。

欢迎来到eee的博客 4187

如何使用 RSA 加密 JWT

引入nimbus-jose-jwt<dependency> <groupId>com.nimbusds</groupId> <artifactId>nimbus-jose-jwt</artifactId> <version>9.23</version> </depende...

天行健,君子以自强不息;地势坤,君子以厚德载物。 2000

手把手完整实现STM32+LORA组网网关+机智云平台+手机APP应用———第一节- 一主多从的LORA本地组网通信-实现从机采集温湿度与主机显示数据

本教程为《手把手实现STM32+LORA组网网关+机智云平台+手机APP应用》第一节。实现一个主机,两个从机的LORA组网通信。两个从机采集温湿度数据并通过LORA传输数据到主机,然后主机接收到两个从机数据后进行数据显示,本节通过PC串口助手显示两个从机的数据。 下一节将其主机接收的数据通过WIFI网关(ESP8266)传到机智云平台与手机APP。 本文讲解一主多从的LORA本地组网通信,串口助手进行数据展示。使用硬件主要包括:STM32F103C8T6最小系统板(3个)、正点原子LORA模块ATK-L

嵌入式阿齐Archie 1万+

关于Java JWT使用RAS公钥与私钥加密的用法

通过RAS私钥与公钥结合JWT进行加密与解密。

qq_56956500的博客 946

WorkBuddy CAD 审图救命课:约束、单位、尺寸链一次查清,打样前拦住返工

最危险的 CAD 文件不是打不开,而是看起来完整却混用了毫米与英寸、草图欠约束、关键尺寸没有来源。审图任务必须先列规则,再输出问题位置。 本课不会用“AI 一键完成”制造错觉,而是把 WorkBuddy、FreeCAD 0.21.2、OpenCascade 7.7 与人工审阅组成一条可复现链路。你会从“一份模拟 STEP 文件、参数表、装配基准与审图标准”出发,得到“单位报告、约束清单、尺寸链风险表与人工复核标记”,并学会用真实命令、错误信号和停止条件判断成果能不能进入下一阶段。

yueyeguzhuo的专栏 266

【AIGC】大模型面试高频考点07-注意力(Attention)篇

AIGC面试高频考点

一个内容严谨、方向前沿、极具实践价值的AI大模型技术分享站 3363

JWT加密详解

JWT采用的加密方式是非常安全的,我们可以使用JWT的payload部分加密来进行鉴权,并且这种方式相对于传统的cookie与session认证方式更为安全。HS256使用HMAC 算法,RS256使用RSA 证书,且输入的 jwk 和 x5c 可以使用不同的公钥证书。2、CSRF攻击,攻击者可以通过伪造一个请求,再把假的JWT传过去,这时后台就会认为该用户已经登录,攻击者就可以做一些非法的事情。2、无状态:JWT本身是无状态的,每个请求的Token都是独立的,减少了Server的开销。

qq_37647812的博客 5818

模型实战(31)之 yolo26 实现对手部关键点数据集 的训练与关键点检测

模型实战(31)之 yolo26 实现对手部关键点数据集 的训练与关键点检测

yohnyang的博客 209

JWT教程:生成私钥和公钥、生成jwt令牌、验证jwt令牌

Spring Security 提供对JWT的支持,本节我们使用Spring Security 提供的JwtHelper来创建JWT令牌,校验JWT令牌等操作。

学亮编程手记 6643

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

jwt_tool密钥生成工具:创建安全的RSA/ECDSA密钥对指南

你是否曾因手动生成密钥对而担忧安全漏洞?是否在面对不同加密算法时不知如何选择合适的密钥长度?是否在管理密钥文件时感到混乱无章?本文将全面解析jwt_tool工具中RSA( Rivest-Shamir-Adleman,一种非对称加密算法)和ECDSA(Elliptic Curve Digital Signature Algorithm,椭圆曲线数字签名算法)密钥对的生成机制,帮助你轻松创建符合安全标...

gitblog_00101的博客 1316

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

jwt

Jwt Token(对称加密,主要用于鉴权)根据密钥生成,需要密钥解密验证。 // 生成一个JwtToken,包含uid func CreatJwt(profileId string, key string) (string, error) { at := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims{ "uid": profileId, "exp": time.Now().Add(time.Hour).Unix(), }) .

qq_41491837的博客 297

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

JWT快速入门与使用nimbus-jose-jwt

文章目录JWT(JSON Web Token)的使用前言JWT的作用和基本格式基本格式为什么需要签名?JWT相关的库nimbus-jose-jwt和jsonwebtoken的选择nimbus-jose-jwt使用JWSHMAC加密算法使用HMAC的场景生成使用HMAC加密算法的jwt解析HMAC加密算法的jwtRSA加密算法使用RSA的场景在线生成RSA公钥和私钥生成使用RSA加密算法的jwt解析RAS加密算法的jwtJWE使用RSA对内容进行加密JWS + JWE关于RSA的一些解释备注 JWT(JSON

本博客已迁移到 https://jacksparrow414.com 6030

JWT Token 使用 RS256 和 ES256 签名

JWT Token 使用 RSA256 和 ES256 签名使用 RS256 签名创建 RSA256 密钥创建和验证 JWT Token使用 ES256 加密创建 ES256 密钥创建和验证 JWT Token 使用 RS256 签名 … 创建 RSA256 密钥 安装 openssl 服务,执行如下指令生成密钥对。 # 创建私钥 openssl genrsa -out rsa_private.pem 2048 # 创建公钥 openssl rsa -in rsa_private.pem -outform

yuanjian0814的博客 1万+

jwt默认加密,过期时间,使用rsa加密demo

文章目录1.默认加密调通:2.rsa加密方式调通demo: 1.默认加密调通: https://github.com/hufanglei/jwt-study/tree/jwt-HMAC256 springboot+mybatis+jwt+mysql 可以跑通试一下. 2.rsa加密方式调通demo: https://github.com/hufanglei/jwt-study 在master...

baidu_21349635的专栏 2432

java 基于JWT的RSA数据加密生成token

引入maven依赖 <!--jwt用户登录数据加密--> <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt</artifactId> <version>0.9.1</version> </dependency> <!-- 将RSA加密后的文件bytes 和 string 的相互转化 --...

qq_32699791的博客 1835

JWT令牌生成与使用

该篇文章是从一份文档看到的,不清楚具体出处,如果原文作者看到请联系我附上出处 生成私钥和公钥 JWT令牌生成采用非对称加密算法 1、生成密钥证书 下边命令生成密钥证书,采用RSA 算法每个证书包含公钥和私钥 keytool -genkeypair -alias xckey -keyalg RSA -keypass xuecheng -keystore xc.keystore -storepas...

Sunchaser的博客 2141

SpringBoot SpringSecurity JWT+Redis+RSA授权登录登出 验证码 前后端分离 分布式

对于微服务来说,私钥放在认证服务上,其他服务只需要存公钥即可。因为其他服务只做校验,不加密JWT。私钥加密,公钥解密。公钥和私钥放到服务器上,私钥用于授权服务器授权token时加密,其他服务器仅需要通过公钥便可对加密内容进行解析了。服务器通过用户输入的验证码结果和redis中的缓存进行比较得出是否验证码正确。只要安装了JDK,就有这个工具。携带错误的token测试:可以看到错误的token会被服务器警告。退出登录后,redis中缓存的用户信息将被删除。这里我们便实现了登录逻辑。复制文本,重命名文件。

qq_50909707的博客 5101

JWT授权、身份认证和RSA非对称加密 工具类

JWT 密钥的解析和加密 工具类 import io.jsonwebtoken.Claims; import io.jsonwebtoken.Jws; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; import org.joda.time.DateTime; import java.security...

qq_45042013的博客 1165

十七.SpringCloud+Security+Oauth2实现微服务授权 -非对称加密生成JWT令牌

仅做学习使用,老鸟飞过,欢迎交流 前言 在之前的微服务授权方案《SpringCloud+Security+Oauth2实现微服务授权 - 授权服务配置》中我们使用的是Oauth+JWT方式完成,今天介绍一下使用非对称加密方式RSA来生成JWT令牌 一.对称和非对称加密 1.对称加密 早期的加密方式都是使用对称加密即: 采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。加密算法是公开的,使用一个秘钥加密,必须使用相同的秘钥才能解密,通过秘钥来保证

墨家巨子@俏如来 3387

JWT生成私钥和公钥

JWT令牌生成采用非对称加密算法 1、生成密钥证书 下边命令生成密钥证书,采用RSA 算法每个证书包含公钥和私钥 keytool -genkeypair -alias xckey -keyalg RSA -keypass xuecheng -keystore xc.keystore -storepass xuechengkeystore Keytool 是一个java提供的证书管理工具 。 ...

yangao1213192588的博客 7878

JWT –生成和验证令牌–示例

JWT提供了一种非常有趣的方式来表示可以验证和信任的应用程序之间的声明。 我的目标是展示一个小的样本,它使用出色的Nimbus JOSE + JWT库来生成和验证令牌。 总览 进行介绍的最佳地点之一是这里 。 简而言之,要从jwt.io网站的资料中借用,声明将表示为一个编码的json,分为三部分,并用点(。)分隔。 header.payload.signature 标头是json,其...

最佳 Java 编程 2268
上一篇: Spring使用FastJson作为消息转换器时,不能使用Swagger的问题
下一篇: SpringMVC在INFO级别下记录请求响应日志
ntsjun
博客等级 码龄22年 6粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值