3

我对此完全陌生,所以如果它完全愚蠢,请耐心等待我的问题。我正在学习如何使用https://jwt.io验证签名

以下是我正在做的

生成的公钥/私钥对

私钥

-----BEGIN EC PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,4A6A48288A531DCA

m2glcvku6rdV8z0QBsBc3Hc72vG4NN3wIPnqdC47FTA3y9WiD7Ukh4m3ZpL2mraz
7PSblIe8ob/aaG9TYViIb4QRYZFg8z3jR6WeNEhC2EbC2CwkSSH3ug8ViQ+1i8d1
kMnQDK1i/s0BZvxlhKPuSy2kOIjelWctkDHvJyvU/WQ=
-----END EC PRIVATE KEY-----

公钥

ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBHpqkegB/A/12vqfApHOaFXaJcHkyhNw1u9XnZe2+hiDT698U4c3iet5VyTo3D1DOe7Xi5dG07UorsMvWCmSbvU= 

我使用这个网站生成ECDSA-256密钥对,密码为H2

创建 JSON Web 令牌 (JWT)

我使用http://jwtbuilder.jamiekurtz.com/生成令牌

我使用私钥签署了JWT. 以下是令牌

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJIYXJpdCIsImlhdCI6MTU4Nzc1MjM3NCwiZXhwIjoxNjE5Mjg4Mzc0LCJhdWQiOiJodHRwczovL3d3dy5oYXJpdC5kZXYiLCJzdWIiOiJjb250YWN0QGhhcml0LmNvbSIsIkdpdmVuTmFtZSI6Ikhhcml0IiwiU3VybmFtZSI6IkhpbWFuc2h1In0.pmvGfBXH4603YMGYDB6qOXlQjhfdPulvbODrK70ihS0

核实

我去网站https://jwt.io下面是我尝试过的视频

智威汤逊问题

问题

当秘密为空时,JWT 如何验证并将其告知为有效签名。我什至还没有提供秘密。

我错过了什么?

4

1 回答 1

6

当您在左侧粘贴一个令牌,然后在右侧列的输入字段中更改秘密或密钥时,将计算一个新的签名,然后自动验证。秘密也可以是空的,不可取但可能。

请观察左栏中令牌的签名部分会发生什么情况。你会发现它变了!

这经常导致误解,人们在这里问为什么他们的令牌是用给定的秘密验证的,但他们的 API 说它是无效的。但他们并没有注意到,当他们输入秘密时,签名被重新计算了。

如果您想检查令牌是否可以使用给定的秘密进行验证,您始终需要先将秘密粘贴到右列(在验证签名下)的输入字段中,然后将令牌粘贴到左列。

于 2020-04-24T19:08:26.087 回答