JWK和JWT 学习
JWK和JWT 介绍
JWK (JSON Web Key) 和 JWT (JSON Web Token) 是现代Web应用程序中用于安全通信的两个重要概念。它们都是基于JSON的,并且是OAuth 2.0和OpenID Connect等协议的核心组成部分。
官方文档
-
JWT官方网站
-
JWK和JWK Set的RFC文档
-
JWT的RFC文档
JWK (JSON Web Key)
JWK是一种表示密钥信息的JSON数据结构。它用于以紧凑、URL安全的方式表示加密和签名密钥。JWK可以表示各种类型的密钥,如RSA、EC(椭圆曲线)和Octet(对称密钥)。JWK通常与JWK Set(一个包含一个或多个JWK的JSON对象)一起使用,以便于管理和传输多个密钥。
JWK的结构:
一个基本的JWK可能包含以下字段:
-
kty
(Key Type): 密钥类型,如RSA、EC、Oct等。 -
kid
(Key ID): 密钥的唯一标识符。 -
use
(Public Key Use): 密钥的用途,如签名或加密。 -
n
(Modulus for RSA and other modular algorithms): RSA密钥的模数。 -
e
(Exponent for RSA and other modular algorithms): RSA密钥的公共指数。 -
d
(Private Exponent for RSA and other modular algorithms): RSA密钥的私有指数。 -
x
(X Coordinate for EC and other elliptic curve algorithms): 椭圆曲线密钥的X坐标。 -
y
(Y Coordinate for EC and other elliptic curve algorithms): 椭圆曲线密钥的Y坐标。
JWK的用途:
-
在OAuth 2.0中,JWK用于公开服务器用于验证JWT的公钥。
-
在JWT验证过程中,客户端可以使用JWK来验证JWT的签名。
JWT (JSON Web Token)
JWT是一种开放标准(RFC 7519),它定义了一种紧凑且自包含的方式,用于在各方之间作为JSON对象安全地传输信息。这些信息可以被验证和信任,因为它是数字签名的。JWT可以使用密钥(对称或非对称)进行签名,或者使用密钥进行加密。
JWT的结构:
JWT由三部分组成,每部分由.
分隔,分别是:
-
Header:包含令牌的类型(即JWT)和所使用的签名算法,如HMAC SHA256或RSA。
-
Payload:包含声明(claims)。声明是关于实体(通常是用户)和其他数据的声明。
-
Signature:需要使用Header中指定的算法对Header和Payload进行签名。
JWT的用途:
-
在身份验证过程中,用户成功登录后,服务器会返回一个JWT,客户端通常会将其存储在本地(如浏览器的localStorage或cookie中)。
-
在随后的请求中,客户端会将JWT包含在请求中(通常在Authorization头部中),服务器会验证JWT的签名以确认用户的身份。
-
JWT还可以用于信息交换,因为它们可以被签名(例如,使用公钥/私钥对),以确保发送者是他们声称的人。
相关文章:

JWK和JWT 学习
JWK和JWT 介绍 JWK (JSON Web Key) 和 JWT (JSON Web Token) 是现代Web应用程序中用于安全通信的两个重要概念。它们都是基于JSON的,并且是OAuth 2.0和OpenID Connect等协议的核心组成部分。 官方文档 JWT官方网站 JWK和JWK Set的RFC文档 JWT的RFC文档 JWK (JS…...
Go 使用mqtt
1、创建一个文件夹,并且使用go modules go mod init <module_name> 其中<module_name>是你的模块名称,如下 go mod init example.com/myproject 2、安装mqtt扩展 go get github.com/eclipse/paho.mqtt.golang 3、开始写主程序 package ma…...
C++ primer plus习题及解析第十二章(类和动态内存分配)
题目:12.1 题: 对于下面的类声明: class Cow { private:char name[20];char* hobby;double weight; public:Cow();Cow(const char* nm, const char* ho, double wt);//有参构造Cow(const Cow& c);//拷贝构造函数~Cow();//析构函数Cow&…...
gdb调试功能描述
gdb调试功能描述 gdb 调试:只对可执行文件进行调用,无法直接用gdb调试.c文件 1.查找命令帮助: (gdb) help data (gdb) help call -l (list) 查看载入文件(默认为10行)…...

使用Simulink Test进行单元测试
本文摘要:主要介绍如何利用Simulink Test工具箱,对模型进行单元测试。内容包括,如何创建Test Harness模型,如何自动生成excel格式的测试用例模板来创建测试用例,如何手动填写excel格式的测试用例模板来手动创建测试用例…...
深度学习中超参数设置
1、batchsize 在训练深度学习模型时,batch size(批大小)和 epochs(迭代次数)之间的关系取决于您的数据集大小、模型复杂度、计算资源等因素。下面是一些一般性的指导原则: 较大的 Batch Size:通…...
Docker nsenter 命令使用
查看容器对应宿主机上面的pid,容器技术的实质是进程,并没有完整的操作系统,就相当于在主机上面fork了一个子进程,通过docker daemon去fork一个子进程,这个子进程是可以在主机上面看到其pid的。 $ docker inspect -f {…...

十二种网络威胁防护方案
一、SQL注入 SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任…...
C++ sort()排序详解
头文件 在C中使用sort()函数需要使用#include<algorithm> sort()基本使用方法 sort()函数可以对给定区间所有元素进行排序。它有三个参数sort(begin, end, cmp) 其中begin为指向待sort()的数组的第一个元素的指针,end为指向待sort()的数组的最后一个元素的…...

移动机器人系统与技术:自动驾驶、移动机器人、旋翼无人机
这本书全面介绍了机器人车辆的技术。它介绍了道路上自动驾驶汽车所需的概念。此外,读者可以在六足机器人的构造、编程和控制方面获得宝贵的知识。 这本书还介绍了几种不同类型旋翼无人机的控制器和空气动力学。它包括各种旋翼推进飞行器在不同空气动力学环境下的模…...

zTasker v1.88.1一键定时自动化任务
软件介绍 zTasker是一款完全免费支持定时、热键或条件触发的方式执行多种自动化任务的小工具,支持win7-11。其支持超过100种任务类型,50种定时/条件执行方法,而且任务列表可以随意编辑、排列、移动、更改类型,支持任务执行日志&a…...
时序医疗数据集---adfecgdb
数据集简介 该数据库包含了在波兰西里西亚医科大学妇产科,通过使用KOMPOREL系统收集的5位临产孕妇(孕38至41周)的多通道胎儿心电图(FECG)记录。这些记录通过腹部四个电极和安置在胎儿头部的直接心电图电极同步收集&am…...
ruoyi-vue-pro 使用记录(4)
ruoyi-vue-pro 使用记录(4) CRM数据库线索客户商机合同回款产品其他 CRM 文档 主要分为 6 个核心模块:线索、客户、商机、合同、回款、产品。 线索管理以 crm_clue 作为核心表客户管理以 crm_customer 作为核心表商机管理以 crm_business 作…...

【17-Ⅱ】Head First Java 学习笔记
HeadFirst Java 本人有C语言基础,通过阅读Java廖雪峰网站,简单速成了java,但对其中一些入门概念有所疏漏,阅读本书以弥补。 第一章 Java入门 第二章 面向对象 第三章 变量 第四章 方法操作实例变量 第五章 程序实战 第六章 Java…...

订单超时自动取消的实践方案
1、定时任务方案 方案流程: 每隔 30 秒查询数据库,取出最近的 N 条未支付的订单。 遍历查询出来的订单列表,判断当前时间减去订单的创建时间是否超过了支付超时时间,如果超时则对该订单执行取消操作。 定时任务方案工程实现相…...

【gin框架入门】
1.介绍 Gin 是一个用 Golang编写的 高性能的web 框架, 由于http路由的优化,速度提高了近 40 倍。 Gin的特点就是封装优雅、API友好。 Gin的一些特性: 快速 基于 Radix 树的路由,小内存占用。没有反射。可预测的 API 性能。 支持中间件 传入…...

dev c++调试录入数字后回车直接关闭
1、我的dev c版本是5.11 2、输入7后,回车就没有了,原因是1013,1.cpp未包含在项目中 3、新建项目,并将test_debug.cpp包含在项目内,就可以下断点调试了...

java期末复习
java jdk jre jvm .java-------->.class----jvm---->机器语言 编写源文件 编译源文件生成字节码 加载运行字节码 java语句执行顺序 顺序 选择 循环 异常处理 基本语法 方法格式 权限修饰符 返回值声明 方法名称(参数列表){方法中封装的逻辑功能;return 返回值;}–权…...
让新手变中手的ChatGPT 使用方法
让新手变中手的ChatGPT 使用方法 已经要一年了,没想到这篇还是一样有用。看到许多依然是一句话就要问出结果的教学,就知道AI 进步很快,但人的学习速度还需要更多时间。 以下为去年原版内容加上新的两招更新,希望帮助你使用ChatGPT 更好用,当未来文字可直接生成影像时,你…...

桥接模式类图与代码
欲开发一个绘图软件,要求使用不同的绘图程序绘制不同的图形。以绘制直线和圆形为例,对应的绘图程序如表 7.7 所示。 根据绘图软件的扩展性要求,该绘图软件将不断扩充新的图形和新的绘图程序。为了避免出现类爆炸的情况,现采用桥接…...
树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频
使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...

Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...
使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装
以下是基于 vant-ui(适配 Vue2 版本 )实现截图中照片上传预览、删除功能,并封装成可复用组件的完整代码,包含样式和逻辑实现,可直接在 Vue2 项目中使用: 1. 封装的图片上传组件 ImageUploader.vue <te…...
在Ubuntu中设置开机自动运行(sudo)指令的指南
在Ubuntu系统中,有时需要在系统启动时自动执行某些命令,特别是需要 sudo权限的指令。为了实现这一功能,可以使用多种方法,包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法,并提供…...

微信小程序云开发平台MySQL的连接方式
注:微信小程序云开发平台指的是腾讯云开发 先给结论:微信小程序云开发平台的MySQL,无法通过获取数据库连接信息的方式进行连接,连接只能通过云开发的SDK连接,具体要参考官方文档: 为什么? 因为…...

IT供电系统绝缘监测及故障定位解决方案
随着新能源的快速发展,光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域,IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选,但在长期运行中,例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...

在WSL2的Ubuntu镜像中安装Docker
Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek
文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...