jwt(json web token)

本文主要介绍Java中JSON Web Token(JWT)的相关知识。JWT由头部、载荷、签证三部分组成,头部声明类型和加密算法,载荷有标准参数声明也可自定义,签证用于验证身份和确保数据未被篡改。还阐述了JWT的加密和解密操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


   Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密

一、组成(三部分)

   1、头部(header)

   两部分组成头部:

     声明类型,这里是jwt
      声明加密的算法通常直接使用 HMAC SHA256

    一般形式如下:

	{
  		'typ': 'JWT',
  		'alg': 'HS256'
	}

   2、载荷(payload)

   标准的参数声明有7个(建议但不强制使用):

	iss: jwt签发者
	sub: jwt所面向的用户
	aud: 接收jwt的一方
	exp: jwt的过期时间,这个过期时间必须要大于签发时间
	nbf: 定义在什么时间之前,该jwt都是不可用的.
	iat: jwt的签发时间
	jti: jwt的唯一身份标识,主要用来作为一次性token,从而回避重放攻击。

   同时,还可以自己声明参数

   3、签证(signature)

   HMACSHA256是我们在header中指定的加密算法,对base64UrlEncode(header)、base64UrlEncode(payload)和secret进行加密。用来验证请求发送者的身份和确保JWT中途没有被窜改。

	HMACSHA256(
  		base64UrlEncode(header) + "." +
  		base64UrlEncode(payload),
  		secret
  	)

二、加密(sign)与解密(verify)

   (1)加密(JWTSigner.sign):Signer.sign(payload); //payload的参数

   (2)解密(JWTVerifier.verify):Verifier.verify(token); //对该token进行解密

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值