Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.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
Php 无法解码JWT令牌_Php_Jwt_Base64_Php Jwt - Fatal编程技术网

Php 无法解码JWT令牌

Php 无法解码JWT令牌,php,jwt,base64,php-jwt,Php,Jwt,Base64,Php Jwt,我试图用下面的代码解码给定的令牌。密钥应该是base64编码的。然而,当我试图解码它告诉我,我有无效的签名。令牌是从使用Java的系统生成的,我必须用PHP对其进行解码 令牌: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJyZXN1bHQiOiJzdWNjZWVkZWQiLCJpc3MiOiJ4eXoubmUuanAiLCJwcm9maWxlSWRlbnRpZmllciI6IioqKioqKio0NTY3IiwiZXhwIjoxNTk3MjAxNzQyLCJu

我试图用下面的代码解码给定的令牌。密钥应该是base64编码的。然而,当我试图解码它告诉我,我有无效的签名。令牌是从使用Java的系统生成的,我必须用PHP对其进行解码

令牌:

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJyZXN1bHQiOiJzdWNjZWVkZWQiLCJpc3MiOiJ4eXoubmUuanAiLCJwcm9maWxlSWRlbnRpZmllciI6IioqKioqKio0NTY3IiwiZXhwIjoxNTk3MjAxNzQyLCJub25jZSI6ImRlNTRlODE3YmQ4NjM4MTI5ZWQ2ZDkxNDA1YTkwMTUyYWIzNTE4N2NkYWMxMDIxNmQ5NWI5NmUzYjgyMjAxNTFhZmU0ZDE4NWZlMzYzNTExNWMwNDFhOWY4OTNjMGZmMGFmZjFkYzBjODgyMDhmMjEwN2ZlMzk5Mzg3ZDMzZGMyZTllY2E5ODA0NDNmZjJiNjZiZDM1ZDk1YjAzY2ExMjIiLCJyZWZlcmVuY2VJZCI6IlRFU1QxMjM1ZjMzNTc3MzBlYjcxIn0.fvEsTg6OcCx2iBPMP-7e9AZtEviDqAEfTMZJib7UVQg
解码脚本

use \Firebase\JWT\JWT;
$encodedString = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJyZXN1bHQiOiJzdWNjZWVkZWQiLCJpc3MiOiJ4eXoubmUuanAiLCJwcm9maWxlSWRlbnRpZmllciI6IioqKioqKio0NTY3IiwiZXhwIjoxNTk3MjAxNzQyLCJub25jZSI6ImRlNTRlODE3YmQ4NjM4MTI5ZWQ2ZDkxNDA1YTkwMTUyYWIzNTE4N2NkYWMxMDIxNmQ5NWI5NmUzYjgyMjAxNTFhZmU0ZDE4NWZlMzYzNTExNWMwNDFhOWY4OTNjMGZmMGFmZjFkYzBjODgyMDhmMjEwN2ZlMzk5Mzg3ZDMzZGMyZTllY2E5ODA0NDNmZjJiNjZiZDM1ZDk1YjAzY2ExMjIiLCJyZWZlcmVuY2VJZCI6IlRFU1QxMjM1ZjMzNTc3MzBlYjcxIn0.fvEsTg6OcCx2iBPMP-7e9AZtEviDqAEfTMZJib7UVQg";
$key = base64_encode("testing1234453656347nsmvfdbsrtgjnfsjhNJFDJFujragrg");
$decoded = JWT::decode($encodedString, $key, array('HS256'));

选择
secret base64 encoded
选项后,它可以正常解码。我在这里做错了什么?

当密钥已进行Base64编码时,必须先对其进行解码,然后才能将其传递给
JWT::decode

$key=base64_解码(“testing12344536347nsmvfdbsrtgjnfsjhnjfdjfujragg”)

选中复选框“secret base64 encoded”时就是这样做的

它的字面意思是:“输入字段中的秘密是base64编码的,因此需要解码”

我可以确认令牌签名可以通过这个秘密进行验证,并检查“secret base64 encoded”

令牌是从使用Java的系统生成的,我必须用PHP对其进行解码


这通常是无关紧要的。JWT基于独立于语言的标准。

当密钥已进行Base64编码时,必须先对其进行解码,然后才能将其传递给
JWT::decode

$key=base64_解码(“testing12344536347nsmvfdbsrtgjnfsjhnjfdjfujragg”)

选中复选框“secret base64 encoded”时就是这样做的

它的字面意思是:“输入字段中的秘密是base64编码的,因此需要解码”

我可以确认令牌签名可以通过这个秘密进行验证,并检查“secret base64 encoded”

令牌是从使用Java的系统生成的,我必须用PHP对其进行解码


这通常是无关紧要的。JWT基于独立于语言的标准。

请参阅帮助。我真的不想相信这一点,但我正在使用一个API,它是一个最初没有进行base64编码的字符串。我的JWT密钥不是垃圾值吗?这不是一个可以被解释器或编译器的改变打破的东西吗?我不太确定你在问什么。您问题中的秘密当然不是真正的base64编码(如果这是您的意思),但对于base64来说,这并不重要,只要所有字符都是有效的base64字符。HMAC-SHA256中的秘密本身也没有指定的格式,只有一串位(与例如RS256不同)。一切都很好,我看不出这里会有什么问题。请通知我的帮助。我真的不想相信这一点,但我正在使用一个API,它是一个最初没有进行base64编码的字符串。我的JWT密钥不是垃圾值吗?这不是一个可以被解释器或编译器的改变打破的东西吗?我不太确定你在问什么。您问题中的秘密当然不是真正的base64编码(如果这是您的意思),但对于base64来说,这并不重要,只要所有字符都是有效的base64字符。HMAC-SHA256中的秘密本身也没有指定的格式,只有一串位(与例如RS256不同)。一切都很好,我看不出这里会有什么坏东西。