Skip to content

Config

Config

go
type Config struct {
    SecretKey       string
    SigningKey      any
    VerificationKey any
    SigningMethod   SigningMethod

    AccessTokenTTL    time.Duration
    RefreshTokenTTL   time.Duration
    Issuer            string
    ExpectedAudience  string
    RequireExpiration bool
    ClockSkew         time.Duration

    Blacklist BlacklistConfig

    EnableRateLimit bool
    RateLimitRate   int
    RateLimitWindow time.Duration
    RateLimiter     RateLimitProvider

    Clock ClockProvider
}

Унифицированная конфигурация JWT Processor. Поля с нулевыми значениями автоматически заполняются значениями по умолчанию в New() (через normalizeConfig).

Правила автоматического заполнения

  • RateLimitRate и RateLimitWindow заполняются только при EnableRateLimit = true
  • EnableAutoCleanup встроенного хранилища чёрного списка всегда принудительно устанавливается в true (предотвращает неограниченный рост)
  • SecretKey, SigningKey, VerificationKey не заполняются автоматически и должны быть установлены вручную
struct

Поля

ПолеТипПо умолчаниюОписание
SecretKeystringHMAC-ключ (минимум 32 байта)
SigningKeyanyПриватный ключ асимметричного алгоритма (*rsa.PrivateKey или *ecdsa.PrivateKey)
VerificationKeyanyПубличный ключ асимметричного алгоритма (необязательно, по умолчанию используется SigningKey)
SigningMethodSigningMethodHS256Алгоритм подписи
AccessTokenTTLtime.Duration15mСрок действия токена доступа
RefreshTokenTTLtime.Duration168hСрок действия токена обновления
Issuerstring"jwt-service"Издатель
ExpectedAudiencestringОжидаемая аудитория (необязательно)
RequireExpirationboolfalseПри true отклоняет токены без утверждения exp во время валидации (возвращает ErrExpirationRequired)
ClockSkewtime.Duration0Допуск рассинхронизации часов, применяемый к exp/nbf при валидации (компенсирует расхождения часов между издателем и проверяющим); отрицательные значения отклоняются методом Validate()
BlacklistBlacklistConfigКонфигурация чёрного списка
EnableRateLimitboolfalseВключить ограничение скорости
RateLimitRateint100Максимальное количество запросов в окне
RateLimitWindowtime.Duration1mОкно ограничения скорости
RateLimiterRateLimitProviderПользовательский ограничитель (необязательно)
ClockClockProviderSystemClock{}Провайдер часов

Методы

МетодСигнатураОписание
Validatefunc (c *Config) Validate() errorПроверяет корректность конфигурации

Проверки Validate():

ПроверкаОписание
Ключ подписиHMAC требует SecretKey ≥32 байта и не слабый ключ; RSA/ECDSA требует корректный тип SigningKey; ECDSA требует совпадение кривой; VerificationKey должен соответствовать типу публичного ключа алгоритма
Валидность TTLAccessTokenTTL и RefreshTokenTTL должны быть положительными
Порядок TTLAccessTokenTTL должен быть меньше RefreshTokenTTL
ClockSkewClockSkew не должен быть отрицательным
Алгоритм подписиДолжен быть одним из 12 встроенных алгоритмов
Чёрный списокПри использовании встроенного хранилища MaxSize и CleanupInterval должны быть положительными

BlacklistConfig

go
type BlacklistConfig struct {
    CleanupInterval   time.Duration
    MaxSize           int
    EnableAutoCleanup bool
    Store             BlacklistStore
}

Конфигурация чёрного списка.

struct

Поля

ПолеТипПо умолчаниюОписание
CleanupIntervaltime.Duration5mИнтервал очистки просроченных записей (только для встроенного хранилища)
MaxSizeint100000Максимальное количество записей в памяти (только для встроенного хранилища)
EnableAutoCleanupbooltrueАвтоматическая очистка просроченных записей (только для встроенного хранилища)
StoreBlacklistStoreПользовательский бэкенд хранилища (при установке остальные поля игнорируются)