Назад к вопросам
Ozon Финтех
Middle+
5
Что такое JWT-токен? Какова его структура и преимущества перед обычными токенами?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
JWT (JSON Web Token) — это компактный, URL-безопасный токен для передачи информации между сторонами в виде JSON-объекта. Он часто используется для аутентификации и авторизации.
Структура JWT: JWT состоит из трёх частей, разделённых точками:
- Header (заголовок) — содержит тип токена (JWT) и алгоритм подписи (например, HS256).
- Payload (полезная нагрузка) — содержит утверждения (claims), например, идентификатор пользователя, время жизни токена.
- 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)
}