当前位置: 首页 > news >正文

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由三部分组成,每部分由.分隔,分别是:

  1. Header:包含令牌的类型(即JWT)和所使用的签名算法,如HMAC SHA256或RSA。

  2. Payload:包含声明(claims)。声明是关于实体(通常是用户)和其他数据的声明。

  3. Signature:需要使用Header中指定的算法对Header和Payload进行签名。

JWT的用途
  • 在身份验证过程中,用户成功登录后,服务器会返回一个JWT,客户端通常会将其存储在本地(如浏览器的localStorage或cookie中)。

  • 在随后的请求中,客户端会将JWT包含在请求中(通常在Authorization头部中),服务器会验证JWT的签名以确认用户的身份。

  • JWT还可以用于信息交换,因为它们可以被签名(例如,使用公钥/私钥对),以确保发送者是他们声称的人。




http://www.lryc.cn/news/345675.html

相关文章:

  • Go 使用mqtt
  • C++ primer plus习题及解析第十二章(类和动态内存分配)
  • gdb调试功能描述
  • 使用Simulink Test进行单元测试
  • 深度学习中超参数设置
  • Docker nsenter 命令使用
  • 十二种网络威胁防护方案
  • C++ sort()排序详解
  • 移动机器人系统与技术:自动驾驶、移动机器人、旋翼无人机
  • zTasker v1.88.1一键定时自动化任务
  • 时序医疗数据集---adfecgdb
  • ruoyi-vue-pro 使用记录(4)
  • 【17-Ⅱ】Head First Java 学习笔记
  • 订单超时自动取消的实践方案
  • 【gin框架入门】
  • dev c++调试录入数字后回车直接关闭
  • java期末复习
  • 让新手变中手的ChatGPT 使用方法
  • 桥接模式类图与代码
  • Oracle count的优化-避免全表扫描
  • leetcode17. 电话号码的字母组合
  • 如何设计与管理一个前端项目
  • 【MQTT】mosquitto 的 “下载、交叉编译、使用” 详细教程,手把手搭建一个MQTT Broker
  • 用云手机打造海外社媒矩阵
  • 第 8 章 机器人平台设计之底盘实现(自学二刷笔记)
  • ✔ ★Java项目——设计一个消息队列(五)【虚拟主机设计】
  • ntfs文件系统的优势 NTFS文件系统的特性有哪些 ntfs和fat32有什么区别 苹果电脑怎么管理硬盘
  • Python Web框架Django项目开发实战:创建在线学习应用
  • 用得助全媒体呼叫中心,让AI落到实处帮品牌做营销
  • 【吃透Java手写】2-Spring(下)-AOP-事务及传播原理