В этой статье мы разберём, что такое JWT и он как работает, статья подготовлена специально для новичков, чтобы всё было понятно.
Что такое JWT:
JSON Web Token или JWT если сокращённо, это стандарт RFC 7519 для созданий токенов доступа, используются в основном для аутентификации и передачи данных.
Первые наработки начали появляться в 2011 году, это была группа, которая назвались JOSE (JSON Object Signing and Encryption group), цель сделать стандарт для защиты данных шифрования и идентификации, в 2013 году появились первые неофициальные примеры использования этой группы. В 2015 году был официальный релиз JWT.
Как работает JWT:
Теперь разберём как это всё работает, первое что стоит сказать, это то, что в JWT хоронятся данные в формате JSON, хотя это понятно из названия.
Второе, если мы используем для back-end, то имеется деление на два тип данных, заголовок (header) и полезной нагрузки (payload), каждые из них хранят свои данные.
Header:
- alg — Алгоритм шифрования который будет использоваться;
- typ — Тип токина, всегда должно быть указанно ″JWT″;
- cty — Тип содержимого, его стоит использовать только если нет пользовательских ключей и значение должно быть ″JWT″;
То есть это заголовки, для более точного обозначение, как нужно это использовать, на подобие того который используются для отправки HTML страницы.
payload:
- iss — Является уникальным идентификатором стороны, генерирующей токен (issuer);
- sub — Является уникальным идентификатором стороны, о которой содержится информация в данном токене (subject), он должен быть уникальным;
- aud — Хранит список получателей, для проверки;
- exp — Определяет время, когда токен будет не действительный;
- nbf — Определяет время, когда токен будет действительный;
- jti — Строка для определения уникальный идентификатор данного токена (JWT ID);
- iat — Определяет время, когда токен будет создан;
Это все грубо говоря настройки для работы JWT.
Клинские токены:
Также есть и на клинской части используется два токена, вот они.
- Access — Токен для доступа к защищённым данным;
- Refresh — Токен для повторного получение Access-токен;
Это все данные которые нужны для работы с JWT.
Как это работает:
Для того чтобы показать как это работает, вот вам схема.
Давайте разберём эту схему, в начале пользователю нужно пройти авторизацию или аутентификацию, если прошло всё успешно, то сервер отправляет JWT токены, access и refresh.
Дальше при входе на зарытую страницу или запросе на получение замещённых данных, надо отправлять access-токен, если же проверка не удачно, то отправляем refresh-токен, и получаем обновлённые токены, иначе же, нам нужно снова пройти аутентификацию.
Вывод:
В этой статье мы разобрали что такое JWT и как он работает, в целом всё просто, может только в начале может быть не понятно, также чтобы лучше понять, зайдите на сайт jwt.io, там подробнее рассмотрите как это работает.