繁体   English   中英

Firebase 尝试解码 JWT 令牌时出现算法不允许错误

[英]Algorithm Not Allowed error with Firebase trying to decode JWT token

我在尝试使用 php 和 Firebase 解密 JWT 令牌时遇到很多问题

<?php

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

require 'vendor/autoload.php';

use \Firebase\JWT\JWT;

try {
    $key = 'MYKEY';
    $token = $_POST['id_token'];
    $data = JWT::decode($token, $key, array('HS256'));
} catch (\Exception $e) { 
    echo $e;
}

?>

JWT.php:97 中不允许的算法

有没有人有过这个?

保罗

如果我没记错的话,在 JWT 的最新版本中, decode function 需要一个新参数(允许的算法)。 以前这不是必需的。

我用它来获取所有支持的算法:

$decoded = JWT::decode($token, $key, array_keys(JWT::$supported_algs));

您应该使用谷歌密钥来解码令牌。

$googleKeysURL = 'https://www.googleapis.com/robot/v1/metadata/x509/securetoken@system.gserviceaccount.com';
$key = json_decode(file_get_contents($googleKeysURL), true);

$decoded = JWT::decode($token, $key, array("RS256"));

由于服务器时区,我也遇到了问题,所以我在解码行之前添加了这个:

JWT::$leeway = 600;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM