Генерация токенов с помощью slim-jwt-auth

Я использую slim-jwt-auth для создания аутентификации на основе токенов для JSON. API.

Документы очень полезны, но я не понимаю одного: как генерируются токены? В документации говорится, что промежуточное ПО может декодировать токен, но не видит способа кодирования.

В некоторых проектах, которые я видел, используется firebase / jwt, но я не уверен, нужно ли это или совместим с slim-jwt-auth.

Может ли slim-jwt-auth генерировать токены?


person BugHunterUK    schedule 22.11.2016    source источник


Ответы (2)


Вы можете, но вам не нужно устанавливать дополнительные библиотеки для генерации токена. По промежуточного слоя внутренне используется firebase / php-jwt, поэтому вы можете использовать ту же библиотеку для генерации токена. Примерно так.

use \Firebase\JWT\JWT;
use \Tuupola\Base62;

$now = new DateTime();
$future = new DateTime("now +2 hours");
$jti = Base62::encode(random_bytes(16));

$secret = "your_secret_key";

$payload = [
    "jti" => $jti,
    "iat" => $now->getTimeStamp(),
    "nbf" => $future->getTimeStamp()
];

$token = JWT::encode($payload, $secret, "HS256");

Вы также можете вдохновиться Slim API Skeleton.

person Mika Tuupola    schedule 23.11.2016

Согласно отказу от ответственности на целевой странице slim-jwt-auth промежуточное ПО обрабатывает только токены; не предоставляет никакого способа их создания.

БЕРЕГИСЬ! По промежуточного слоя не реализован сервер авторизации OAuth 2.0 и не предусмотрены способы создания, выпуска или хранения токенов аутентификации. Он анализирует и аутентифицирует токен только при передаче через заголовок или файл cookie.

(курсив мой)

Вы действительно можете использовать другую библиотеку для генерации токенов JWT, которые затем будут использоваться slim-jwt-auth. Пока обе библиотеки правильно реализовали спецификацию, у вас не должно возникнуть проблем с совместимостью, по крайней мере, если вы используете только обязательные для реализации частей спецификации.


Вы можете проверить jwt.io список библиотек PHP для обработки JWT, но firebase/jwt будет хорошей отправной точкой. Если вместо того, чтобы самостоятельно генерировать токены, вы полностью делегируете аутентификацию и выпуск токенов третьей стороне, я бы посоветовал взглянуть на Auth0.

Раскрытие информации: я работаю в Auth0.

person João Angelo    schedule 22.11.2016