Sobes.tech
Back to questions
Middle+
6

Что такое JWT-токен? Какова его структура и преимущества перед обычными токенами?

Companies where asked
Ozon ФинтехOzon Финтех

Answer from AI

sobes.tech AI

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

Структура JWT: JWT состоит из трёх частей, разделённых точками:

  1. Header (заголовок) — содержит тип токена (JWT) и алгоритм подписи (например, HS256).
  2. Payload (полезная нагрузка) — содержит утверждения (claims), например, идентификатор пользователя, время жизни токена.
  3. Signature (подпись) — создаётся путём хэширования header и payload с секретным ключом.

Пример JWT:

header.payload.signature

Преимущества JWT перед обычными токенами:

  • Самодостаточность: содержит всю необходимую информацию, не требует обращения к базе для проверки.
  • Безопасность: подпись гарантирует целостность и подлинность.
  • Лёгкость передачи: компактный и URL-безопасный формат.
  • Универсальность: может использоваться в разных протоколах и платформах.

Пример создания JWT на Go с использованием библиотеки github.com/golang-jwt/jwt:

import (
    "github.com/golang-jwt/jwt"
    "time"
)

func CreateJWT(secret []byte) (string, error) {
    claims := jwt.MapClaims{
        "user_id": 123,
        "exp": time.Now().Add(time.Hour * 72).Unix(),
    }
    token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)
    return token.SignedString(secret)
}