Авторизация с JWT

Cat's identification token

Авторизация с JSON Web Token позволяет единожды пройти аутентификацию и авторизацию с логином и паролем, получить JWT токен доступа и в последующих запросах передавать только токен.

Токен содержит всю необходимую серверу информацию о пользователе, что избавляет от необходимости повторной аутентификации.

Освежить знания про формат JWT можно тут.

Токен доступа и токен обновления

Access and refresh tokens

Токен доступа подтверждает, что пользователь имеет права на доступ к ресурсу. Срок жизни токена доступа обычно 5-15 минут.

Токен обновления используют для повышения уровня безопасности и удобства пользователя. Токен обновления обычно живет до нескольких месяцев и позволяет заново получить токен доступа без повторного ввода данных.

По шагам процесс выглядит так:

Шаг 1. Клиент вводит логин/пароль и получает токен доступа и токен обновления

Клиент
Отправляет логин/пароль
Получает:
access_token
refresh_token

Шаг 2. Клиент использует токен доступа для обращения к защищённым ресурсам

Клиент
access_token
Защищённый ресурс
Доступ разрешён

Шаг 3. Когда токен доступа устарел, клиент отправляет токен обновления и получает новую пару

Клиент
refresh_token
Получает:
новый access_token
новый refresh_token

Заголовок Authorization с типом Bearer Token

Ранее мы уже научились посылать запрос с указанием заголовка Authorization с типом Basic Auth для передачи пары логин/пароль.

В случае отправки JWT токена необходимо выбрать заголовок Authorization с типом Bearer Token

и вставить полученный от сервера токен в поле Token.

Фактически заголовок примет вид:

Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.
eyJzdWIiOiJ1c2VyIiwicm9sZSI6IlRFU1QiLCJleHAiOjE3MTYyMzkwMjJ9.
wnZZUqYlOX_WAKjrcaMUdM_JyalzHsRwNfRu74wKPR8
Postman authorization header type bearer
Authorization Type Bearer Token в Postman

Срок жизни JWT токена

JWT токен считается валидным до тех пор, пока не истек срок его жизни.

Для проверки срока жизни токен необходимо декодировать, например на jwt.io, и сравнить значение в поле exp в payload с текущим моментом времени. Если значение меньше, значит токен протух — срок его жизни истёк.

Формат времени в поле exp представляет собой Unix Time, или количество секунд, прошедших с 1 января 1970 года.

Для приведения к более лёгкой для восприятия системе исчисления времени можно воспользоваться онлайн конвертерами.

Jwt expired unix time
Конвертация Unix времени на jwt.io при наведении курсора
Задача
Задача доступна премиум пользователям!
Sidebar arrow

ВВЕДЕНИЕ

БАЗОВЫЕ ЗНАНИЯ

УРОВНИ ТЕСТИРОВАНИЯ

UI ТЕСТИРОВАНИЕ

ТЕХНИКИ ТЕСТ ДИЗАЙНА

ТЕСТОВАЯ ДОКУМЕНТАЦИЯ

АУТЕНТИФИКАЦИЯ И АВТОРИЗАЦИЯ

POSTMAN

БАЗЫ ДАННЫХ

ТЕСТИРОВАНИЕ РЕЛИЗА

АНАЛИЗ РАБОТЫ ПРИЛОЖЕНИЯ

ПОДГОТОВКА К СОБЕСЕДОВАНИЮ

Как составить резюме Топ вопросов Собеседование