Роль в JWT и Cron в Docker Swarm

Завершаем аутентификацию для бэкенда. Доделаем нюансы, не реализованные ранее.

Сначала добавим роль в JWT. Потом напишем генератор токенов для E2E тестов. И сделаем форсированное разлогинивание пользователя и автоочистку устаревших кодов из БД по Cron в Docker Swarm.

  • 00:00:20 - Постановка задачи
  • 00:04:05 - Добавление роли в JWT токен
  • 00:10:10 - Получение роли из модуля Auth
  • 00:14:06 - Извлечение роли из токена
  • 00:23:42 - Генерация токенов для E2E тестов
  • 00:30:11 - Рефакторинг генератора
  • 00:35:01 - Форсированное разлогинивание
  • 00:36:27 - Удаление устаревших кодов
  • 00:38:54 - Запуск по Cron в Docker Swarm
  • 00:44:17 - Переводы для HTTP-шаблонов
  • 00:47:09 - Перевод по фразам и ключам
  • 00:52:58 - Вынос папки валидатора
  • 00:54:24 - Обзор результата
Скрытый контент
Комментарии (9)
Руслан

Спасибо!

Ответить
Arunas

Спасибо! :)

Ответить
Подскажите пожалуйста после запуска docker-compose и обращении к странице выдает ошибку

Добрый день, подскажите пожалуйста. С вчерашнего дня перестали собираться образы php-cli-alpine и php-fpm-alpine. Выдает ошибку

make: /bin/sh: Operation not permitted make: *** [Makefile:209: pdo_pgsql.lo] Error 127

Такая ошибка есть в обсуждении alpine но, как ее решить так и не понял. ubuntu - 20 docker - version 19.03.12, docker-compose version 1.26.2.

Подскажите как можно решить эту проблем ку.

Ответить
Руслан

Попробовал все пересобрать на Mac (Docker: v.20.10.7, Compose: v.2.0.0-b6) - полет норм.

Возможно не связано с вашей ошибкой, но сборка могла упасть из-за обновления :latest версии базового образа на docker hub, также на прошлой неделе наткнулся что старая версия образа была полностью удалена из реестра. Попробуйте собрать с другой версией базового образа.

Ответить
Дмитрий Елисеев

Обновите Docker до версии 20.

Ответить
slo_nik

Добрый день, Дмитирий.

Не совсем понятно со сменой роли пользователя.

Как я понял, если админ меняет роль для пользователя, то пользователь какое-то время ещё пользуется старой ролью.

Почему в этом случае не разлогинивать пользователя принудительно?

Ответить
Дмитрий Елисеев

Потому что без хождения в БД при валидации нет возможности разлогинить JWT принудительно.

Ответить
slo_nik

Получается, что пока пользователь не обратиться к БД - ничего не будет?

Ответить
Дмитрий Елисеев

В этом суть JWT вместо токенов в БД, что в JWT токену мы всегда верим на слово.

В принимающем коде мы в токене с {user_id, role, expires, sign} проверяем только подпись и срок. Если подпись сошлась срок не истёк, то токен рабочий.

Поэтому у нас чисто физически нет способа "разлогинить" уже выданный конкретный JWT токен.

Ответить
Зарегистрируйтесь или войдите чтобы оставить комментарий

Или войти через:

Google
GitHub
Yandex
MailRu