Skip to content

Claims

Claims

go
type Claims struct {
    UserID      string         `json:"user_id,omitempty"`
    Username    string         `json:"username,omitempty"`
    Role        string         `json:"role,omitempty"`
    Permissions []string       `json:"permissions,omitempty"`
    Scopes      []string       `json:"scopes,omitempty"`
    Extra       map[string]any `json:"extra,omitempty"`
    SessionID   string         `json:"session_id,omitempty"`
    ClientID    string         `json:"client_id,omitempty"`
    RegisteredClaims
}

Встроенная структура Claims с распространёнными бизнес-полями и стандартными JWT-полями.

struct

Поля

ПолеТипОписание
UserIDstringID пользователя
UsernamestringИмя пользователя
RolestringРоль
Permissions[]stringСписок разрешений
Scopes[]stringСписок областей действия
Extramap[string]anyПользовательские расширенные поля
SessionIDstringID сессии
ClientIDstringID клиента
RegisteredClaimsRegisteredClaimsСтандартные JWT-поля

Правила валидации

Метод Validate() проверяет, что хотя бы одно из полей UserID или Username не пустое.

Processor выполняет дополнительную глубокую валидацию при создании и проверке токена (через внутреннюю функцию validateClaims):

ПравилоОграничение
Длина строковых полейМаксимум 256 символов
Размер массивовМаксимум 100 элементов
Количество полей ExtraМаксимум 50 ключей
Тип значений ExtraДопускаются только string и []string, вложенные map и другие типы отклоняются
Управляющие символыОтклоняются все, кроме tab, перевода строки и возврата каретки
Обнаружение инъекционных паттерновОтклоняются паттерны HTML/SQL/обхода пути

Методы

МетодСигнатураОписание
GetRegisteredClaimsfunc (c *Claims) GetRegisteredClaims() *RegisteredClaimsВозвращает встроенные стандартные поля
Validatefunc (c *Claims) Validate() errorПроверяет, что хотя бы одно из полей UserID или Username не пустое

RegisteredClaims

go
type RegisteredClaims struct {
    Issuer    string        `json:"iss,omitempty"`
    Subject   string        `json:"sub,omitempty"`
    Audience  StringOrSlice `json:"aud,omitempty"`
    ExpiresAt NumericDate   `json:"exp"`
    NotBefore NumericDate   `json:"nbf"`
    IssuedAt  NumericDate   `json:"iat"`
    ID        string        `json:"jti,omitempty"`
    TokenType string        `json:"token_type,omitempty"`
}

Стандартные зарегистрированные утверждения JWT (RFC 7519).

struct

Поля

ПолеТипJSON-тегОписание
IssuerstringissИздатель
SubjectstringsubТема
AudienceStringOrSliceaudАудитория
ExpiresAtNumericDateexpВремя истечения
NotBeforeNumericDatenbfВремя начала действия
IssuedAtNumericDateiatВремя выдачи
IDstringjtiID токена
TokenTypestringtoken_typeТип токена (access или refresh; см. Константы типа токена)