Skip to content

Instantly share code, notes, and snippets.

@gimntut
Created November 6, 2023 07:56
Show Gist options
  • Save gimntut/2e77d1bab2f18654fca09198171b2c0d to your computer and use it in GitHub Desktop.
Save gimntut/2e77d1bab2f18654fca09198171b2c0d to your computer and use it in GitHub Desktop.

JWT - это json c подписью, сжатый с помощью base64. JWT генерируется бэком, а хранится на фронте.
Подпись нужна, чтобы проверить что данные не изменены, а base64 для экономии трафика.
В json имена некоторых полей зарезервированы.
Поле exp - предназначено для хранения даты протухания токена.
Подпись генерируется симметричным ключом, поэтому только бэк может проверять подлинность подписи.

  • Время жизни jwt длится минуты, обычно 10-15 минут
  • Время жизни refresh token длится дни или месяцы, обычно от 3х месяцев до года.

Для понимания назначения JWT, возьмём пример выдачи пропусков в некой организации.

Действующие лица пьесы
Персонаж Исполнитель роли
Посетитель, он же адвокат Фронтенд
Клиент адвоката Пользователь
Паспорт клиента Логин-пароль
Отдел пропусков Сервер авторизации
Отделы организации Бэкенды
Пропуск JWT
Продлевашка Refresh token
Печать на пропуске Подпись JWT
  • Допустим, что некую организацию хочет посетить адвокат, представляющий интересы своего клиента.
  • Посетитель (адвокат) предъявляет паспорт своего клиента в отделе пропусков и получает пропуск.
  • В пропуске стоит печать, и время завершения пропуска.
  • Посетитель не может поставить печать или проверить её подлиность.
  • В пропуске могут быть любые сведения о посетителе.
  • У посетителя есть возможность прочитать содержимое пропуска, включая время завершения пропуска.
  • Чтобы посетитель не гулял долго по отделам, пропуск даётся на очень короткое время.
  • Т.к. для получения паспорта клиента, адвокату нужно беспокоить клиента, то вместе с первым пропуском даётся временный документ на продление пропуска (продлевашка).
  • Когда срок пропуска заканчивается, необходимо получить новый пропуск в отделе пропусков по продлевашке.
  • Время жизни продлевашки сильно больше жизни пропуска. Можно продлить пропуск много раз.
  • Если посетитель стал нежеланным, в продлении отказывают.
  • Продлевашку можно предъявить только в отдел пропусков. А пропуск в любые отделы организации, кроме отдела пропусков.
  • Если у продлевашки вышел срок, то нужно получать новую продлевашку по паспорту клиента.
  • Отделы предоставляют разные услуги, если пропуск ещё действительный и разрешён доступ к услуге.
  • Отделы умеют проверять действительность печати на пропуске.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment