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