Попытка проверить подпись JWT Tymon / jwt-auth laravel - PullRequest
0 голосов
/ 25 января 2020

Я пытаюсь создать микро-сервис Single Sign On, который генерирует подписанный токен из закрытого ключа. Этот токен будет использоваться для доступа к микро сервисам. Пока у меня есть эта часть работает и токен генерируется.

Однако, когда я пытаюсь проверить это с помощью ключа publi c, он не работает.

Документы мало что раскрывают. https://jwt-auth.readthedocs.io/en/develop/lumen-installation/

Итак, вопрос в том, может ли любая другая библиотека проверить токен JWT, если у нее есть ключ publi c, связанный с закрытым ключом?

1 Ответ

0 голосов
/ 27 января 2020

Хорошо, вот как вы это делаете.

Следуйте инструкциям по установке, как указано выше.

Затем go на эту страницу https://travistidwell.com/jsencrypt/demo/ Создайте закрытый и общедоступный ключ c (не забудьте использовать размер ключа 1024 - вот что получилось меня)

Сохраните приват в проект / микро-сервис, где вы генерируете токен.

Затем в этом проекте go к вашей конфигурации-> jwt. php file

  1. Установите как 'algo' => env('JWT_ALGO', 'RS256') , иначе он не подпишет его.
  2. Установите ваш "keys.private" на путь вашего private.pem
  3. Установите ваш keys.publi c на путь вашего publi c .pem

Затем для создания своего токена вы используете это:

$credentials = request(['email', 'password']);
try {
    $token = $JWTAuth->attempt($credentials);

    if(!$token) {
        throw new AccessDeniedHttpException();
    }

} catch (JWTException $e) {
    throw new HttpException(500);
}

return response()->json([
    'status' => 'ok',
    'token' => $token
]);

И вы получаете свой токен, и ваш токен подписывается с помощью закрытого ключа.

Теперь вы можете использовать этот токен для других микро-сервисов вне вашей laravel настройки.

Если у вас есть другая отдельная настройка (другой URL) с laravel, для которой требуется доверенный токен для доступа, затем настройте его так же, как указано выше (закрытый ключ здесь не важен), однако ваш publi c ключ.

Чтобы проверить токен, добавьте этот код.

JWTAuth::parseToken()->authenticate();

Очевидно, что вы можете расширить это, добавив в свои претензии et c. Это простая настройка. Я надеюсь, что это помогает кому-то.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...