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 経由)。

自動設定ルール

  • RateLimitRateRateLimitWindowEnableRateLimit = true の場合のみ設定されます
  • 内蔵ブラックリストストアの EnableAutoCleanup は常に true に強制されます(無限増加を防止)
  • SecretKeySigningKeyVerificationKey は自動設定されないため、手動で設定する必要があります
struct

フィールド

フィールドデフォルト値説明
SecretKeystringHMAC 秘密鍵(最低 32 バイト)
SigningKeyany非対称アルゴリズムの秘密鍵 (*rsa.PrivateKey または *ecdsa.PrivateKey)
VerificationKeyany非対称アルゴリズムの公開鍵(省略可、デフォルトは SigningKey を使用)
SigningMethodSigningMethodHS256署名アルゴリズム
AccessTokenTTLtime.Duration15mアクセストークンの有効期間
RefreshTokenTTLtime.Duration168hリフレッシュトークンの有効期間
Issuerstring"jwt-service"発行者
ExpectedAudiencestring期待されるオーディエンス(省略可)
RequireExpirationboolfalsetrue の場合、検証時に 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 はアルゴリズムの公開鍵型と一致すること
TTL の有効性AccessTokenTTLRefreshTokenTTL は正の数であること
TTL の順序AccessTokenTTLRefreshTokenTTL より小さいこと
ClockSkewClockSkew は負の値でないこと
署名アルゴリズム内蔵サポートの 12 種のアルゴリズムのいずれかであること
ブラックリスト内蔵ストア使用時、MaxSize と CleanupInterval は正の数であること

BlacklistConfig

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

ブラックリスト設定。

struct

フィールド

フィールドデフォルト値説明
CleanupIntervaltime.Duration5m期限切れクリーンアップ間隔(内蔵ストアの場合のみ有効)
MaxSizeint100000メモリストアの最大エントリ数(内蔵ストアの場合のみ有効)
EnableAutoCleanupbooltrue期限切れエントリの自動クリーンアップ(内蔵ストアの場合のみ有効)
StoreBlacklistStoreカスタムストアバックエンド(設定すると他のフィールドは無視される)