JWK和JWT 学习
JWK和JWT 介绍
JWK (JSON Web Key) 和 JWT (JSON Web Token) 是现代Web应用程序中用于安全通信的两个重要概念。它们都是基于JSON的,并且是OAuth 2.0和OpenID Connect等协议的核心组成部分。
官方文档
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还可以用于信息交换,因为它们可以被签名(例如,使用公钥/私钥对),以确保发送者是他们声称的人。
原文地址:https://blog.csdn.net/wochunyang/article/details/138501244
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!