JWT - это json c подписью, сжатый с помощью base64. JWT генерируется бэком, а хранится на фронте.
Подпись нужна, чтобы проверить что данные не изменены, а base64 для экономии трафика.
В json имена некоторых полей зарезервированы.
Поле exp
- предназначено для хранения даты протухания токена.
Подпись генерируется симметричным ключом, поэтому только бэк может проверять подлинность подписи.
- Время жизни jwt длится минуты, обычно 10-15 минут
- Время жизни refresh token длится дни или месяцы, обычно от 3х месяцев до года.
Для понимания назначения JWT, возьмём пример выдачи пропусков в некой организации.
Действующие лица пьесы
Персонаж | Исполнитель роли |
---|---|
Посетитель, он же адвокат | Фронтенд |
Клиент адвоката | Пользователь |
Паспорт клиента | Логин-пароль |
Отдел пропусков | Сервер авторизации |
Отделы организации | Бэкенды |
Пропуск | JWT |
Продлевашка | Refresh token |
Печать на пропуске | Подпись JWT |
- Допустим, что некую организацию хочет посетить адвокат, представляющий интересы своего клиента.
- Посетитель (адвокат) предъявляет паспорт своего клиента в отделе пропусков и получает пропуск.
- В пропуске стоит печать, и время завершения пропуска.
- Посетитель не может поставить печать или проверить её подлиность.
- В пропуске могут быть любые сведения о посетителе.
- У посетителя есть возможность прочитать содержимое пропуска, включая время завершения пропуска.
- Чтобы посетитель не гулял долго по отделам, пропуск даётся на очень короткое время.
- Т.к. для получения паспорта клиента, адвокату нужно беспокоить клиента, то вместе с первым пропуском даётся временный документ на продление пропуска (продлевашка).
- Когда срок пропуска заканчивается, необходимо получить новый пропуск в отделе пропусков по продлевашке.
- Время жизни продлевашки сильно больше жизни пропуска. Можно продлить пропуск много раз.
- Если посетитель стал нежеланным, в продлении отказывают.
- Продлевашку можно предъявить только в отдел пропусков. А пропуск в любые отделы организации, кроме отдела пропусков.
- Если у продлевашки вышел срок, то нужно получать новую продлевашку по паспорту клиента.
- Отделы предоставляют разные услуги, если пропуск ещё действительный и разрешён доступ к услуге.
- Отделы умеют проверять действительность печати на пропуске.