Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么需要JWT令牌签名密钥_Jwt - Fatal编程技术网

为什么需要JWT令牌签名密钥

为什么需要JWT令牌签名密钥,jwt,Jwt,JWT令牌需要签名密钥才能对其进行解码,但在这种情况下,可以在没有任何签名密钥的情况下对其进行解码,这是怎么可能的。您不需要密钥来打开编码,您需要密钥来验证没有人更改JWT的内容。事实上,您看到的字符串只是json的base64,包含所有内容上的信息、元数据和“签名” 签名是JSON Web令牌(JWT)最重要的部分。签名是通过使用Base64url编码对标头和有效负载进行编码,并使用句点分隔符将它们连接起来来计算的。然后给出了密码算法 // signature algorithm data =

JWT令牌需要签名密钥才能对其进行解码,但在这种情况下,可以在没有任何签名密钥的情况下对其进行解码,这是怎么可能的。

您不需要密钥来打开编码,您需要密钥来验证没有人更改JWT的内容。事实上,您看到的字符串只是json的base64,包含所有内容上的信息、元数据和“签名”

签名是JSON Web令牌(JWT)最重要的部分。签名是通过使用Base64url编码对标头和有效负载进行编码,并使用句点分隔符将它们连接起来来计算的。然后给出了密码算法

// signature algorithm
data = base64urlEncode( header ) + “.” + base64urlEncode( payload )
signature = HMAC-SHA256( data, secret_salt )
因此,当报头或有效负载发生变化时,必须重新计算签名。只有身份提供者(IdP)具有私钥来计算签名,从而防止令牌被篡改

阅读更多:


否,不需要解码签名密钥,但需要验证签名。并且您的服务在未验证其签名的情况下不得使用jwt。相关:密钥用于对令牌进行签名或验证现有令牌的签名。头和负载可以很容易地被解码,它们只是Base64Url编码的。有些挑剔:JWT中的“T”代表“令牌”,所以写JWT令牌是多余的。注意“验证签名”jwt.io中的块-这就是您的签名密钥发挥作用的地方。接收端要么拥有能够在本地解码和验证的公钥,要么调用身份提供程序上的url来执行实际的签名验证。