Что такое JWT авторизация
1️⃣ Как кратко ответить
JWT (JSON Web Token) авторизация — это метод аутентификации, который использует токены в формате JSON для передачи информации между клиентом и сервером. Токен содержит зашифрованные данные, которые позволяют серверу удостовериться в подлинности пользователя без необходимости хранить сессию на сервере.
2️⃣ Подробное объяснение темы
JWT (JSON Web Token) — это стандарт для создания токенов доступа, которые могут быть использованы для аутентификации и передачи информации между клиентом и сервером. JWT состоит из трех частей: заголовка, полезной нагрузки и подписи, которые кодируются в Base64 и объединяются точками.
Зачем нужен JWT?
JWT используется для безопасной передачи информации между сторонами. Он позволяет серверу удостовериться в подлинности пользователя без необходимости хранить сессию на сервере. Это особенно полезно в распределенных системах и микросервисах, где централизованное хранение сессий может быть сложным.
Структура JWT
-
Header (Заголовок): Содержит информацию о типе токена и алгоритме шифрования.
{ "alg": "HS256", "typ": "JWT" }alg: алгоритм, используемый для подписи токена, например, HMAC SHA256.typ: тип токена, обычно "JWT".
-
Payload (Полезная нагрузка): Содержит утверждения (claims), которые представляют собой данные о пользователе и другую информацию.
{ "sub": "1234567890", "name": "John Doe", "admin": true }sub: идентификатор пользователя.name: имя пользователя.admin: флаг, указывающий, является ли пользователь администратором.
-
Signature (Подпись): Используется для проверки подлинности отправителя токена и целостности сообщения.
- Создается путем кодирования заголовка и полезной нагрузки, а затем их шифрования с использованием секретного ключа.
Как работает JWT авторизация?
-
Аутентификация пользователя:
- Пользователь вводит свои учетные данные (например, логин и пароль).
- Сервер проверяет учетные данные и, если они верны, создает JWT, который отправляется клиенту.
-
Использование токена:
- Клиент сохраняет токен (например, в localStorage или sessionStorage) и использует его для доступа к защищенным ресурсам.
- При каждом запросе к серверу клиент отправляет токен в заголовке HTTP (обычно в заголовке
Authorization).
-
Проверка токена:
- Сервер получает токен и проверяет его подпись с использованием секретного ключа.
- Если подпись верна и токен не истек, сервер предоставляет доступ к запрашиваемому ресурсу.
Пример использования JWT в коде
// Пример создания JWT на стороне сервера
const jwt = require('jsonwebtoken');
// Данные пользователя
const user = {
id: 1,
username: 'johndoe',
admin: true
};
// Секретный ключ для подписи токена
const secretKey = 'your-256-bit-secret';
// Создание токена
const token = jwt.sign(user, secretKey, { expiresIn: '1h' });
// Вывод токена
console.log(token);
jwt.sign(user, secretKey, { expiresIn: '1h' }): создает токен, используя данные пользователя и секретный ключ. Токен будет действителен в течение одного часа.console.log(token): выводит созданный токен, который клиент может использовать для аутентификации.
JWT авторизация позволяет создавать безопасные и масштабируемые системы, где аутентификация и авторизация могут быть выполнены без необходимости хранения сессий на сервере. Это делает JWT идеальным выбором для современных веб-приложений и API.
🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!
Подписаться