Авторизация с JSON Web Token позволяет единожды пройти аутентификацию и авторизацию с логином и паролем,
получить JWT токен доступа, и далее в каждом
новом запросе отправлять только токен, содержащий необходимую серверу информацию о
пользователе.
Для повышения уровня безопасности помимо токена доступа (access
token) в схему взаимодействия также добавляют токен обновления
(refresh token). По шагам процесс выглядит так:
Клиент логинится и получает токен доступа (access token) и токен
обновления (refresh token).
Когда срок жизни токена доступа истекает, клиент отправляет запрос на сервер с токеном
обновления и получает новую пару токенов: токен доступа и токен обновления.
Шаг 1. Получение
клиентом пары токенов
Шаг 2. Авторизация с токеном
доступа
Различие этих двух токенов только в сроке жизни. Токен доступа может жить как 15
минут, так и сутки. Токен обновления обычно живёт гораздо дольше. В связи с этим
токен обновления требует более надёжного хранения.
Заголовок Authorization с типом Bearer Token
Ранее мы уже научились посылать
запрос с указанием заголовка Authorization с типом Basic Auth для
передачи пары логин/пароль.
В случае отправки JWT токена необходимо выбрать тип авторизации
Bearer Token и вставить полученный от сервера токен в
поле Token.
JWT токен считается валидным до тех пор, пока не истек срок его жизни.
Для проверки срока жизни токен необходимо расшифровать, например на jwt.io, и сравнить значение в поле
exp в payload с текущим моментом времени. Если значение меньше, значит
токен протух - срок его жизни истёк.
Формат времени в поле exp представляет собой Unix Time, или количество
секунд, прошедших с 1 января 1970 года.
Для приведения к более лёгкой для восприятия системе исчисления времени можно
воспользоваться онлайн конвертерами.
Конвертация Unix времени на jwt.io
при наведении курсора