← Назад ко всем вопросам

Что такое JWT авторизация

1️⃣ Как кратко ответить

JWT (JSON Web Token) авторизация — это метод аутентификации, который использует токены в формате JSON для передачи информации между клиентом и сервером. Токен содержит зашифрованные данные, которые позволяют серверу удостовериться в подлинности пользователя без необходимости хранить сессию на сервере.

2️⃣ Подробное объяснение темы

JWT (JSON Web Token) — это стандарт для создания токенов доступа, которые могут быть использованы для аутентификации и передачи информации между клиентом и сервером. JWT состоит из трех частей: заголовка, полезной нагрузки и подписи, которые кодируются в Base64 и объединяются точками.

Зачем нужен JWT?

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

Структура JWT

  1. Header (Заголовок): Содержит информацию о типе токена и алгоритме шифрования.

    {
      "alg": "HS256",
      "typ": "JWT"
    }
    
    • alg: алгоритм, используемый для подписи токена, например, HMAC SHA256.
    • typ: тип токена, обычно "JWT".
  2. Payload (Полезная нагрузка): Содержит утверждения (claims), которые представляют собой данные о пользователе и другую информацию.

    {
      "sub": "1234567890",
      "name": "John Doe",
      "admin": true
    }
    
    • sub: идентификатор пользователя.
    • name: имя пользователя.
    • admin: флаг, указывающий, является ли пользователь администратором.
  3. Signature (Подпись): Используется для проверки подлинности отправителя токена и целостности сообщения.

    • Создается путем кодирования заголовка и полезной нагрузки, а затем их шифрования с использованием секретного ключа.

Как работает JWT авторизация?

  1. Аутентификация пользователя:

    • Пользователь вводит свои учетные данные (например, логин и пароль).
    • Сервер проверяет учетные данные и, если они верны, создает JWT, который отправляется клиенту.
  2. Использование токена:

    • Клиент сохраняет токен (например, в localStorage или sessionStorage) и использует его для доступа к защищенным ресурсам.
    • При каждом запросе к серверу клиент отправляет токен в заголовке HTTP (обычно в заголовке Authorization).
  3. Проверка токена:

    • Сервер получает токен и проверяет его подпись с использованием секретного ключа.
    • Если подпись верна и токен не истек, сервер предоставляет доступ к запрашиваемому ресурсу.

Пример использования 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.

Тема: Безопасность
Стадия: Tech

🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!

Твои заметки