Что такое JWT-токен

«Что такое JWT-токен» — вопрос из категории Безопасность, который задают на 26% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

JWT (JSON Web Token) — это компактный и самодостаточный способ передачи информации между сторонами в виде JSON-объекта. Состоит из 3 частей:

  1. Header — содержит тип токена и алгоритм шифрования (например, HMAC SHA256)
  2. Payload — полезные данные (claims), например, user_id, срок действия
  3. Signature — подпись, которая проверяет подлинность токена

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

token := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims{
    "user_id": 123,
    "exp":    time.Now().Add(time.Hour * 24).Unix(),
})

tokenString, err := token.SignedString([]byte("secret_key"))

Преимущества:

  • Стандартизированный формат
  • Не требует хранения состояния на сервере
  • Можно передавать в URL, заголовках или теле запроса

Недостатки:

  • Если токен украден, его нельзя отозвать (до истечения срока)
  • Нужно надежно хранить секретный ключ

Видео-ответы