Что такое JWT?
1️⃣ Как кратко ответить
JWT (JSON Web Token) — это компактный, URL-безопасный способ передачи информации между сторонами в виде JSON-объектов. Используется для аутентификации и передачи данных, обеспечивая целостность и подлинность информации с помощью цифровой подписи.
2️⃣ Подробное объяснение темы
JWT (JSON Web Token) — это стандарт для создания токенов доступа, которые могут быть использованы для передачи информации между двумя сторонами. JWT состоит из трех частей: заголовка, полезной нагрузки и подписи, которые кодируются в Base64 и объединяются точками.
Зачем это нужно
JWT используется для аутентификации и авторизации в веб-приложениях. Он позволяет серверу удостовериться, что запросы поступают от аутентифицированного пользователя, без необходимости хранить сессии на сервере. Это упрощает масштабирование приложений, так как не требуется централизованное хранилище сессий.
Где применяется
JWT широко используется в RESTful API для передачи информации о пользователе и его правах доступа. Он также применяется в системах единого входа (SSO), где пользователи могут получить доступ к нескольким приложениям с одной аутентификацией.
Как работает
JWT состоит из трех частей:
-
Header (Заголовок): Содержит информацию о типе токена и алгоритме подписи. Пример:
{ "alg": "HS256", "typ": "JWT" } -
Payload (Полезная нагрузка): Содержит утверждения (claims), которые представляют собой данные, которые нужно передать. Это могут быть стандартные утверждения, такие как
iss(issuer),exp(expiration), или пользовательские данные. Пример:{ "sub": "1234567890", "name": "John Doe", "admin": true } -
Signature (Подпись): Используется для проверки подлинности отправителя и целостности сообщения. Подпись создается путем кодирования заголовка и полезной нагрузки, а затем их шифрования с использованием секретного ключа. Пример на Python:
import jwt # Заголовок и полезная нагрузка header = {"alg": "HS256", "typ": "JWT"} payload = {"sub": "1234567890", "name": "John Doe", "admin": True} # Секретный ключ secret = 'your-256-bit-secret' # Создание JWT token = jwt.encode(payload, secret, algorithm='HS256', headers=header)
Пример использования
-
Создание токена:
- Клиент отправляет свои учетные данные на сервер.
- Сервер проверяет учетные данные и, если они верны, создает JWT и отправляет его клиенту.
-
Использование токена:
- Клиент отправляет JWT в заголовке каждого запроса к защищенным ресурсам.
- Сервер проверяет подпись JWT и, если она действительна, предоставляет доступ к ресурсу.
🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!
Подписаться