> Что такое JWT и как он работает (Go)
Уровень: junior · Роль: backend · Язык: Go · Категория: Технические вопросы
Компании: Wildberries
Стек: Go
> Пример ответа
JWT (JSON Web Token) - это компактный, URL-безопасный способ передачи утверждений (claims) между сторонами в виде JSON-объекта. Он состоит из трех частей, разделенных точками: заголовок (header), полезная нагрузка (payload) и подпись (signature). Заголовок обычно содержит тип токена и алгоритм подписи (например, HS256 или RS256). Полезная нагрузка содержит утверждения - данные о пользователе (например, user_id, роль, срок действия). Подпись создается путем кодирования заголовка и полезной нагрузки в Base64URL, объединения их через точку и хеширования с секретным ключом (для HMAC) или приватным ключом (для RSA/ECDSA).
В Go работа с JWT часто ведется через библиотеку github.com/golang-jwt/jwt/v5. Пример создания токена:
GOimport "github.com/golang-jwt/jwt/v5"claims := jwt.MapClaims{"user_id": 123,"role": "admin","exp": time.Now().Add(24 * time.Hour).Unix(),}token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)tokenString, err := token.SignedString([]byte("secret-key"))
Верификация происходит так:
GOtoken, err := jwt.Parse(tokenString, func(token *jwt.Token) (interface{}, error) {if _, ok := token.Method.(*jwt.SigningMethodHMAC); !ok {return nil, fmt.Errorf("unexpected signing method")}return []byte("secret-key"), nil})if claims, ok := token.Claims.(jwt.MapClaims); ok && token.Valid {// используем claims["user_id"] и т.д.}
Ключевые моменты: JWT не шифрует данные (они только закодированы в Base64), поэтому не храните в payload чувствительную информацию. Подпись гарантирует целостность, но не конфиденциальность. Для защиты от подделки всегда проверяйте алгоритм подписи на стороне сервера.
> Похожие задачи по Go
> Похожие задачи по backend
Был ли опыт работы с MongoDB или аналогичными документно-ориентированными базами данных
Какие шаблоны проектирования часто используются
Можно ли указать кастомный заголовок в HTTP запросе
Что такое состояние гонки и к чему оно приводит
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью