Sobes.tech
Назад к вопросам
Senior
1

Что такое JWT? Как он устроен внутри?

Компании, где спрашивали
Магнум

Ответ от нейросети

sobes.tech AI

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

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

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

Пример структуры JWT:

header.payload.signature

В Go для работы с JWT часто используют библиотеки, например, github.com/golang-jwt/jwt.

Пример создания JWT в Go:

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

func CreateToken(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)
}