PHP JWT令牌无效签名 [英] PHP JWT Token Invalid Signature

查看:439
本文介绍了PHP JWT令牌无效签名的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在搜索一个小时,找不到解决此问题的方法.

I'm searching for an hours now and can't find a solution to this problem.

这是生成JWT令牌的代码.我使用了 https://github.com/firebase/php-jwt 库.

This is the code to generate JWT token. I used https://github.com/firebase/php-jwt library.

        $tokenId    = base64_encode(mcrypt_create_iv(32));
        $issuedAt   = time();
        $notBefore  = $issuedAt + 10;             //Adding 10 seconds
        $expire     = $notBefore + 60;            // Adding 60 seconds
        $serverName = 'serverName'; // Retrieve the server name from config file

        $secretKey = base64_decode(getenv('JWT_SECRET'));

         $data = [
            'iat'  => $issuedAt,         // Issued at: time when the token was generated
            'jti'  => $tokenId,          // Json Token Id: an unique identifier for the token
            'iss'  => $serverName,       // Issuer
            'nbf'  => $notBefore,        // Not before
            'exp'  => $expire,           // Expire
            'data' => [                  // Data related to the signer user
                'userId'   => '1', // userid from the users table
                'userName' => $UserName, // User name
            ]
        ];

        $jwt = JWT::encode(
                $data,      //Data to be encoded in the JWT
                $secretKey, // The signing key
                'HS256'     // Algorithm used to sign the token
        );

        $unencodedArray = ['jwt' => $jwt];
        echo json_encode($unencodedArray);

然后我在 https://jwt.io/

有人可以帮助我解决这个问题吗?我目前是JWT的新手.顺便说一句,我的项目是Slim API.

Can anybody help me with this problem? I'm currently new in JWT. Btw, my project is Slim API.

非常感谢您.

推荐答案

签名验证失败,因为您没有将正确的密钥传递给 https://jwt.io/您需要从PHP代码传递$secretKey的值.根据屏幕截图,您正在传递字符串secret.

Signature verification fails because you are not passing the correct secret key to https://jwt.io/ You need to pass the value of $secretKey from the PHP code. According to the screenshot you are passing string secret.

这篇关于PHP JWT令牌无效签名的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆