Sobes.tech
Back to questions
Senior
3

Как в целом работает стандартная схема авторизации через JWT?

Companies where asked
X5 techX5 tech

Answer from AI

sobes.tech AI

Стандартная схема авторизации через JWT (JSON Web Token) обычно включает следующие шаги:

  1. Пользователь отправляет свои учетные данные (логин и пароль) на сервер.
  2. Сервер проверяет данные, и если они корректны, создает JWT, который содержит полезную нагрузку (например, ID пользователя, роли) и подписывает его секретным ключом.
  3. JWT возвращается клиенту, который сохраняет его (например, в localStorage или cookie).
  4. При последующих запросах клиент отправляет JWT в заголовке Authorization (обычно "Bearer <token>").
  5. Сервер проверяет подпись токена и, если он валиден, извлекает из него информацию о пользователе и разрешает доступ к защищенным ресурсам.

В Go это часто реализуется с помощью библиотек для работы с JWT, например, github.com/dgrijalva/jwt-go.

Пример создания токена:

import (
  "github.com/dgrijalva/jwt-go"
  "time"
)

func GenerateJWT(userID string, secret []byte) (string, error) {
  token := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims{
    "user_id": userID,
    "exp": time.Now().Add(time.Hour * 72).Unix(),
  })
  return token.SignedString(secret)
}

Таким образом, JWT позволяет безопасно передавать информацию о пользователе без необходимости хранить сессию на сервере.