最新JJWT 0.12.6学习

本文参考的是jjwt官方github,链接在此,本文会持续跟进jjwt的最新版本

GitHub - jwtk/jjwt: Java JWT: JSON Web Token for Java and Android

简介

JJWT(Java JWT)是Java平台上相当流行的用于生成Json Web Token的库,其更新速度非常快,导致网上许多教程在如今看来都已经过时。本文将对最新的JJWT官方github页进行个人的中文解释,力求做到与官方同步。

名词解释

JWT

Java Web Token 一种通用的基于文本的信息传递格式,可用于传递任意类型的数据

JWS

JSON Web Signature 对JSON数据结构进行签名的标准,用于确保数据完整和来源的真实性

JWE

JSON Web Encryption 对JSON数据结构进行加密的标准,用于确保数据的机密性

JWS和JWE的区别在于,

  1. JWS中的数据是可以被任何人查看的,其只能够保证信息在传递过程中未被篡改;
  2. JWE则保护了数据不被未授权方查看,也能够保证信息未被篡改,因此数据涉及到隐私时应当使用JWE。

声明(Claim)

在许多场景下,开发者习惯使用JSON的负载(payload)来表示用户或主机或其他的身份概念的数据。这种情况下的负载(payload)就称为声明(Claim)。大家常用的比如说用户名/ip地址等都可以归属到声明之中。

标准声明(standard claim)

在RFC7519标准中,存在着数个标准声明(standard claim)。这些Claims并非强制性要求。JJWT为每一个标准声明都提供了方便的构造方法。例如subject()iss()等方法。标准声明表:

  • issuer: sets the iss(Issuer) Claim
  • subject: sets the sub(Subject) Claim
  • audience: sets the aud(Audience) Claim
  • expiration: sets the exp(Expiration Time) Claim
  • notBefore: sets the nbf(Not Before) Claim
  • issuedAt: sets the iat(Issued At) Claim
  • id: sets the jti(JWT ID) Claim

自定义声明(Custom Claims)

毫无疑问,jjwt也是支持自定义声明的,使用Claim()方法即可在payload中插入自己想要的键值对

快速开始

使用JJWT进行JWS生成

// key生成部分
SecretKey key = Jwts.SIG.HS256.key().build();//jws生成部分
String jws = Jwts.builder().subject("Joe").claim("name","Mike")	.claim("address","Beijing").signWith(key).compact();

key生成部分

首先SecretKey key = Jwts.SIG.HS256.key().build();

进行调试可以看到,生成的是一个SecertKey对象,包含两个属性:keyalgorithmkey随机生成的一个HMAC密钥,algorithm则说明当前使用的签名算法。需要保管好这个key,后续的jws解析也需要用到它.

jws生成部分

然后是jws生成部分上文生成的的jws是一条JWS,

.claim("name","Mike")指payload中新增一条"name":"Mike"的键值对

.claim("address","Beijing")用于指出claim()方法是可以多次重复使用的

.subject("Joe")指payload中的键sub的值为"Joe"

.signWith(key)指使用生成的key进行签名

.compact()指将其压缩为String格式

使用JJWT进行JWS解析

// jws解析
Jws<Claims> claims= Jwts.parser().verifyWith(key).build().parseSignedClaims(jws);System.out.println(claims.getPayload().get("sub"));
System.out.println(claims.getPayload().get("name"));
System.out.println(claims.getPayload().get("address"));

.verifyWith(key)指的是选用解析jws用的key,上面用过,此处调用即可

.paraseSignedClaims(jws)指选用jws这个字符串进行解析

得到一个Jws<Claims>类型的对象claims

claims.getPayload().get("sub")指从payload中获取键"sub"对应的值,另外两个亦然

未完待续....

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/46249.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

快捷:通过胶水语言实现工作中测试流程并行、加速

通过胶水语言实现工作中测试流程并行、加速 通过胶水语言实现工作中测试流程并行、加速工作场景&#xff08;背景&#xff09;问题抽象&#xff08;挑战&#xff09;如何做&#xff08;行动&#xff09;获得了什么&#xff08;结果&#xff09;后记相关资源 通过胶水语言实现工…

代码随想录(day6)哈希表-求两个数组的交集

什么是红黑树&#xff0c;参考链接【数据结构】史上最好理解的红黑树讲解&#xff0c;让你彻底搞懂红黑树-CSDN博客 题目&#xff1a; 注意&#xff1a;字典用{}符合、元组用()符号、列表用[]符号 table.get(num,0)1的意思 class Solution(object):def intersection(self, n…

【C++】——入门基础

文章目录 命名空间输入与输出缺省参数函数重载引用内敛函数指针控制nullptr 命名空间 当C语言遇到命名冲突时&#xff0c;很难解决&#xff0c;所以C关键字namespace就是针对这种问题的。 如何使用命名空间内的成员呢&#xff1f; 加命名空间名称及限定符&#xff08; &#…

husky 和 lint-staged 构建代码项目规范

目录 前言 最简单的方法 过 scripts 来解决如果检测工具多&#xff0c;需要多次处理 通过 husky(哈士奇)来解决容易遗忘的问题 1. 安装 2. husky init 3. 试一试​ lint-stadge 只 lint 改动的 1. 安装 2. 修改 package.json 配置 3. 添加 npm 脚本: 4.使用 Husky…

MAVSDK动态库与静态库及mavsdk_server程序macOS平台编译与安装

1.克隆mavsdk: git clone https://github.com/mavlink/MAVSDK.git --recursive 2.编译静态库 cmake -Bbuild/default -H. -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF 生成makefile 生成成功,开始编译 cmake --build build/default -j8 成功生成libmavsdk.a 开…

Java之Stream流的笔记--手写版

Stream流通过讲集合或数组转换成链状流式的结构&#xff0c;简化了集合和数组进行排序、筛选、遍历、去重、统计等操作。主要包括创建流、中间操作、终结操作。若流中无终结操作&#xff0c;则中间操作不会执行&#xff1b;流是一次性的&#xff0c;使用完就会失效&#xff0c;…

vmware workstation 虚拟机安装

vmware workstation 虚拟机安装 VMware Workstation Pro是VMware&#xff08;威睿公司&#xff09;发布的一代虚拟机软件&#xff0c;中文名称一般称 为"VMware 工作站".它的主要功能是可以给用户在单一的桌面上同时运行不同的操作系统&#xff0c;它也是可进 行开发…

PDF公式转Latex

文章目录 摘要数据集 UniMER介绍下载链接 LaTeX-OCRUniMERNet安装UniMER 用的数据集介绍下载链接 PDF-Extract-Kit整体介绍效果展示评测指标布局检测公式检测公式识别 使用教程环境安装参考[模型下载](models/README.md)下载所需模型权重 在Windows上运行在macOS上运行运行提取…

MySQL:库操作

1. 创建数据库 create database [if not exists] name [create_specification], [create_specification]... []内为可选的选项 create_specification: character set charset_name -- 指定数据库采用的字符集 -- 数据库未来存储数据 collate collation_name -- 指定数据库字符…

Hi3861 OpenHarmony嵌入式应用入门--华为 IoTDA 设备接入

华为云物联网平台&#xff08;IoT 设备接入云服务&#xff09;提供海量设备的接入和管理能力&#xff0c;可以将自己的 IoT 设备 联接到华为云&#xff0c;支撑设备数据采集上云和云端下发命令给设备进行远程控制&#xff0c;配合华为云物联网平台的服 务实现设备与设备之间的控…

vue3.0 项目h5,pc端实现扫描二维码 qrcode-reader-vue3

qrcode-reader-vue3 插件简述 qrcode-reader-vue3插件&#xff0c;允许您在不离开浏览器的情况下检测和解码二维码。 &#x1f3a5; 访问设备摄像头并持续扫描传入帧。QrcodeStream&#x1f6ae; 渲染到一个空白区域&#xff0c;您可以在其中拖放要解码的图像。QrcodeDropZon…

【vivado】 管脚约束(io constraints)

一、前言 在FPGA工程中&#xff0c;所有的输入输出端口最终都要与FPGA IO 引脚进行绑定&#xff0c;需要根据需求对输入输出端口进行位置、电平标准、端口变换速率等进行约束&#xff0c;本文对io相关约束语法含义进行记录以便查询。 二、IO constrain 在vivado语言模板下可以…

MFC流的形式读取图片

1.基于对话框布置控件 2.给控件绑定变量 3.给按钮控件添加响应函数 void CMFC流的形式读取图片Dlg::OnBnClickedButton1() {// TODO: 在此添加控件通知处理程序代码//HDC mECGDC; // 设备描述表句柄//CPen mECGDrawPen; // ECG波形画笔//RECT mECGRect; // 在该矩形区域内画…

香橙派AI Pro开发板与YOLOv5结合实战:打造高效图像识别解决方案

引言 在人工智能和物联网快速发展的今天&#xff0c;图像识别技术已经成为众多应用场景中的关键组成部分。香橙派&#xff08;Orange Pi&#xff09;AI Pro开发板作为一款高性能、低功耗的嵌入式计算平台&#xff0c;为开发者提供了强大的硬件支持。而YOLOv5&#xff08;You O…

OpenCV图像处理——判断轮廓是否在圆环内

要判断一个轮廓是否在圆环内&#xff0c;可以将问题分解为两个步骤&#xff1a; 确保轮廓的所有点都在外圆内。确保轮廓的所有点都在内圆外。 下面是一个完整的示例代码&#xff0c;展示如何实现这一点&#xff1a; #include <opencv2/opencv.hpp> #include <iostr…

人工智能是帮助开发人员还是取代他们?

最近&#xff0c;神经网络已经成为应用开发中不可或缺的工具。它们大大简化和加速了这一过程。 例如&#xff0c;使用GitHub Copilot&#xff0c;可以根据任务描述自动生成重复的代码部分。神经网络可以创建和运行测试&#xff0c;识别错误&#xff0c;甚至提出修复错误的方法…

昇思25天学习打卡营第21天|ResNet50迁移学习

在实际应用场景中&#xff0c;由于训练数据集不足&#xff0c;所以很少有人会从头开始训练整个网络。普遍的做法是&#xff0c;在一个非常大的基础数据集上训练得到一个预训练模型&#xff0c;然后使用该模型来初始化网络的权重参数或作为固定特征提取器应用于特定的任务中。 …

MySQL-ubuntu环境下安装配置mysql

文章目录 什么是数据库&#xff1f;一、ubuntu环境下安装mysql二、配置mysql配置文件1.先登上root账号2.配置文件的修改show engines \G; mysql和mysqld数据库的基础操作登录mysql创建数据库显示当前数据库使用数据库创建表插入students表数据打印students表数据select * from …

AcWing 671. DDD

给定一个整数&#xff0c;请根据下表确定并输出其对应的城市名称&#xff1a; 如果输入数字不在上表中&#xff0c;则输出 DDD nao cadastrado。 输入格式 共一行&#xff0c;包含一个整数。 输出格式 输出对应城市名称&#xff0c;如果没有对应城市名称&#xff0c;则输出…

postman macOS版安装包

链接: https://pan.baidu.com/s/1Y7j4mxB1Otmf3Ku41e7v7w?pwdfy99 提取码: fy99 安装后的效果