Какова структура и назначение полей в Access и Refresh токенах

Ответ

Содержимое Access и Refresh токенов определяется их назначением и стандартами, такими как JWT (RFC 7519) для Access токенов.

Access Token (Токен доступа)

Обычно представляет собой JWT (JSON Web Token). Он является самодостаточным и содержит всю необходимую информацию (claims) для авторизации запроса на сервере. Его не нужно проверять по базе данных при каждом запросе, достаточно проверить цифровую подпись.

Стандартные поля (claims):

  • sub (Subject): Идентификатор пользователя (например, user_id).
  • exp (Expiration Time): Время истечения срока действия токена (в формате Unix timestamp).
  • iat (Issued At): Время выпуска токена.
  • iss (Issuer): Идентификатор сервиса, выдавшего токен.
  • aud (Audience): Идентификатор сервиса, для которого предназначен токен.
  • scope: Область разрешенных действий (например, read:data write:data).

Пример декодированного JWT payload:

{
  "sub": "1234567890",
  "name": "John Doe",
  "email": "john.doe@example.com",
  "roles": ["admin", "user"],
  "iat": 1516239022,
  "exp": 1516242622
}

Refresh Token (Токен обновления)

В отличие от Access Token, Refresh Token чаще всего является непрозрачной (opaque), длинной, криптографически случайной строкой. Он не содержит данных о пользователе и его правах.

  • Назначение: Безопасное получение нового Access Token после того, как старый истек.
  • Хранение: Хранится в базе данных на сервере в связке с пользователем и имеет длительный срок жизни (дни, недели, месяцы).
  • Структура: Обычно не имеет внутренней структуры. Это просто уникальный идентификатор сессии.

Пример: v2.local.E-k7sAULEA-C_qAazqJdxJc_234234...