В чем разница между JWT Token и Token

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

Ответ

JWT (JSON Web Token) — это стандартизированный формат токена, который содержит закодированные данные (payload) в JSON. Он состоит из 3 частей: заголовка (header), полезной нагрузки (payload) и подписи (signature). Подписывается криптографически, может содержать срок действия.

Обычный токен — это произвольная строка (например, UUID), не несущая информации сама по себе. Сервер хранит его в базе и проверяет валидность при запросе.

Пример JWT:

token := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims{
    "user_id": 123,
    "exp":    time.Now().Add(time.Hour * 1).Unix(),
})
signedToken, _ := token.SignedString([]byte("secret"))

Обычный токен:

token := uuid.New().String()
// сохраняем в БД и проверяем при запросе

Ключевые отличия:

  • JWT самодостаточен (данные внутри), обычный токен требует проверки на сервере.
  • JWT нельзя отозвать до истечения срока, обычный токен можно удалить из БД.
  • JWT больше по размеру из-за кодирования данных.