PHP JWT :: ** Decode ** токен с истекшим сроком - PullRequest
0 голосов
/ 13 апреля 2020

Я использую JWT (Json Web Token), у которого в полезной нагрузке есть токен refre sh (GUID). В общем, я использую Firebase JWT для создания / кодирования и декодирования JWT.

Я бы хотел декодировать устаревший JWT в PHP, а затем использовать токен refre sh из его полезной нагрузки для создания нового JWT (пока токен refre sh все еще действует). Если я декодирую JWT с помощью Firebase, он генерирует исключение (с истекшим сроком действия) и не возвращает декодированный токен.

Как можно безопасно декодировать устаревший JWT и получить доступ к его полезной нагрузке? Могу ли я просто поймать исключение с истекшим сроком действия или это небезопасно, и это может также поймать, возможно, другие ошибки. И если я это сделаю, как мне получить доступ к полезной нагрузке? Спасибо за помощь и вклад.

1 Ответ

0 голосов
/ 17 апреля 2020

Вот мое решение:

  1. Try and Catch с декодированием Firebase
  2. Поймать исключение для токена с истекшим сроком действия
  3. В этом улове декодируйте токен с base64 в получить refre sh token

Только если токен действителен и срок его действия истек, он декодируется с обычным base64 (поэтому проверка подписи не производится) Но проверка подписи выполняется ранее с помощью декодирования на шаге 1.

Вот его псевдокод:

$jwt = getBearerToken();

try {

$decoded = JWT::decode($jwt, $key, array('HS256'));
$refresh_token=$decoded->data->refresh_token;

}

catch (Exception $e){

if($e->getMessage() == "Expired token"){
    list($header, $payload, $signature) = explode(".", $jwt);
    $payload = json_decode(base64_decode($payload));
    $refresh_token = $payload->data->refresh_token;

} else {

    // set response code
    http_response_code(401);

    // show error message
    echo json_encode(array(
        "message" => "Access denied.",
        "error" => $e->getMessage()
    ));
    die();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...