Firebase JWT:签名验证失败

我正在尝试使用Firebase进行JWT身份验证,但我总是遇到此错误:“致命错误:未捕获 Firebase \ JWT \ SignatureInvalidException:签名验证失败“。</ p>

代码是这样的:</ p>

  $ key =”test“; 

$ tokenId = base64_encode(mcrypt_create_iv(32));
$ issuedAt = time();
$ notBefore = $ issuedAt + 10;
$ expire = $ notBefore + 60;
$ serverName = $ _SERVER [ “SERVER_NAME”];

$ data = [
'iat'=&gt; $ issuedAt,
'jti'=&gt; $ tokenId,
'iss'=&gt; $ serverName,
'nbf'=&gt; $ notBefore,
'ex'=&gt; $ expire,
“userId”=&gt; 1
];

$ secretKey = base64_decode($ key);

$ jwt = \ Firebase \ JWT \ JWT :: encode($ data,$ secretKey,'HS256');

//当我解码令牌时,我得到了异常
$ decoding = \ Firebase \ JWT \ JWT :: decode($ jwt,$ key,array('HS256'));
</ code> </ pre>

我错了什么?</ p>
</ div>

展开原文

原文

我正在尝试对Firebase使用JWT身份验证,但始终收到此错误:“致命错误:Firebase \ JWT \ SignatureInvalidException未捕获:签名验证失败”。 代码是这样的:

$key = "test";

$tokenId    = base64_encode(mcrypt_create_iv(32));
$issuedAt   = time();
$notBefore  = $issuedAt + 10;
$expire     = $notBefore + 60;
$serverName = $_SERVER["SERVER_NAME"];


$data = [
    'iat'  => $issuedAt,
    'jti'  => $tokenId,
    'iss'  => $serverName,
    'nbf'  => $notBefore,
    'exp'  => $expire,
    "userId"  => 1
];


$secretKey = base64_decode($key);


$jwt = \Firebase\JWT\JWT::encode($data, $secretKey, 'HS256');

// and when I decode the tokens, I got that exception
$decoded = \Firebase\JWT\JWT::decode($jwt, $key, array('HS256'));

请问我哪个地方出错了?

1个回答



你不需要 $ secretKey </ code>或base64_decode关键,只需这样做:</ p >

  $ jwt = \ Firebase \ JWT \ JWT :: encode($ data,$ key,'HS256'); 
$ decoding = \ Firebase \ JWT \ JWT :: decode( $ jwt,$ key,array('HS256'));
</ code> </ pre>
</ div>

展开原文

原文

You don't need $secretKey or base64_decode the key for that matter, just do:

$jwt = \Firebase\JWT\JWT::encode($data, $key, 'HS256');
$decoded = \Firebase\JWT\JWT::decode($jwt, $key, array('HS256'));

doulilou8560
doulilou8560 请参阅:tools.ietf.org/html/rfc6750#section-3.1
2 年多之前 回复
dongyan2267
dongyan2267 BTW一个问题(可能与此问题无关,但我请求您回答):每当令牌过期时,我会发送401状态代码/标题/令牌中缺少令牌无效。 所以使用我的API的人不知道如何处理这个问题。 例如,如果401是由于令牌相关问题或其他原因造成的,那么他就无法发挥作用。 我们该怎么办?
2 年多之前 回复
douchao9899
douchao9899 我相信你是对的; 纠正了。
2 年多之前 回复
doubingqi5829
doubingqi5829 嗨,你做了一个拼写错误的键吗? 它不会起作用。
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐