如何验证JWT令牌? (春季安全性)

问题描述 投票:0回答:1

我在后端使用spring安全性,但这通常适用于JWT auth的使用。

当客户端发送包含服务器先前发送的JWT令牌的请求时(在验证凭据之后,服务器如何确认令牌没有被弄乱?

验证的确切步骤是什么?

谢谢。

java spring security spring-security jwt
1个回答
0
投票
之后

首先要简要概述JWT验证的工作原理。

以紧凑的形式,JSON Web令牌由用点(。)分隔的三个部分组成,它们是:

标题有效载荷签名

因此,JWT通常如下所示。

xxxxx.yyyyy.zzzzz

标题

标头通常由两部分组成:令牌的类型为JWT,以及所使用的签名算法,例如HMAC SHA256或RSA。

有效负载

令牌的第二部分是有效负载,其中包含声明。声明是有关实体(通常是用户)和其他数据的声明。

然后对有效负载进行Base64Url编码,以形成JSON Web令牌的第二部分。

请注意,对于已签名的令牌,此信息尽管可以防止篡改,但任何人都可以读取。除非将机密信息加密,否则请勿将其放入JWT的有效负载或报头元素中。]

签名

要创建签名部分,您必须获取编码的标头,编码的有效载荷,机密,标头中指定的算法,并对其进行签名。

例如,如果您想使用HMAC SHA256算法,则将通过以下方式创建签名:

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

签名用于验证消息在此过程中没有被更改,并且对于使用私钥进行签名的令牌,它还可以验证JWT的发送者是它所说的那个人。

因此,基本上每当客户端请求向服务器提出令牌时,总是重复令牌验证步骤,因此,如果在客户端发生任何操作,验证将失败,并且服务器应将未授权状态发送回客户端。

如果您正在寻找推荐的实施模式,则可以在问题的注释中找到。

© www.soinside.com 2019 - 2024. All rights reserved.