Skip to content

インターフェース定義

TokenManager

go
type TokenManager interface {
    Create(claims CustomClaims) (string, error)
    Validate(tokenString string) (Claims, bool, error)
    CreateRefresh(claims CustomClaims) (string, error)
    Refresh(refreshTokenString string) (string, error)
    ValidateInto(tokenString string, claims CustomClaims) (CustomClaims, bool, error)
    RefreshInto(refreshTokenString string, claims CustomClaims) (string, error)
    Revoke(tokenString string) error
    IsRevoked(tokenString string) (bool, error)
    ParseUnverified(tokenString string, claims any) error
    Close() error
    IsClosed() bool
}

JWT トークン操作のコアインターフェース。すべての実装は並行安全である必要があります。デフォルト実装は *Processor です。

メソッドは責務別に 3 つのグループに分かれます:

  • トークン作成CreateCreateRefresh
  • 検証とリフレッシュValidateValidateIntoRefreshRefreshInto
  • 汎用操作RevokeIsRevokedParseUnverifiedCloseIsClosed
interface

メソッド

メソッドシグネチャ説明
CreateCreate(claims CustomClaims) (string, error)アクセストークンを作成
ValidateValidate(tokenString string) (Claims, bool, error)トークンを検証
CreateRefreshCreateRefresh(claims CustomClaims) (string, error)リフレッシュトークンを作成
RefreshRefresh(refreshTokenString string) (string, error)トークンをリフレッシュ
ValidateIntoValidateInto(tokenString string, claims CustomClaims) (CustomClaims, bool, error)カスタム Claims に検証
RefreshIntoRefreshInto(refreshTokenString string, claims CustomClaims) (string, error)カスタム Claims にリフレッシュ
RevokeRevoke(tokenString string) errorトークンを失効
IsRevokedIsRevoked(tokenString string) (bool, error)失効済みかどうかを確認
ParseUnverifiedParseUnverified(tokenString string, claims any) error検証せずにパース
CloseClose() errorリソースを解放
IsClosedIsClosed() boolクローズ済みかどうか

実装型

説明
*Processorデフォルト実装

CustomClaims

go
type CustomClaims interface {
    GetRegisteredClaims() *RegisteredClaims
    Validate() error
}

カスタム Claims インターフェース。CreateValidateIntoRefreshInto などのメソッドで使用されます。

interface

検証コントラクト

Processor は *Claims とその他の型で異なる検証パスを実行します:

検証動作
*Claims深い検証:すべてのフィールド(長さ制限、注入パターン、制御文字)
その他の型Validate() の呼び出し + 登録クレームの文字列サニタイズ(Issuer、Subject、ID、TokenType、Audience)

注意

*Claims 以外の型では、カスタム構造体フィールドは深い検証の対象になりません。実装者は Validate() メソッドですべてのビジネスフィールドを自身で検証する必要があります。

メソッド

メソッドシグネチャ説明
GetRegisteredClaimsGetRegisteredClaims() *RegisteredClaims標準 JWT フィールドを返す
ValidateValidate() errorカスタム検証ロジック

実装型

説明
*Claims内蔵 Claims 実装

BlacklistStore

go
type BlacklistStore interface {
    Add(tokenID string, expiresAt time.Time) error
    Contains(tokenID string) (bool, error)
    Close() error
}

ブラックリストストアバックエンドインターフェース。

interface

メソッド

メソッドシグネチャ説明
AddAdd(tokenID string, expiresAt time.Time) errorブラックリストに追加
ContainsContains(tokenID string) (bool, error)ブラックリストに含まれるか確認
CloseClose() errorリソースを解放

RateLimitProvider

go
type RateLimitProvider interface {
    Allow(key string) bool
    Reset(key string)
    Close()
}

レート制限インターフェース。Processor はトークン作成時に Allow(key) を呼び出して単一チェックを行います。

AllowN について

このインターフェース自体は単一リクエストのチェックとして Allow のみを定義します。バッチメソッド AllowN(key string, n int) bool は具象型 *RateLimiter の拡張メソッドであり、このインターフェースの一部ではありません。

interface

メソッド

メソッドシグネチャ説明
AllowAllow(key string) bool単一リクエストが許可されるか確認
ResetReset(key string)指定したキーのレート制限状態をリセット
CloseClose()リソースを解放

実装型

説明
*RateLimiter内蔵トークンバケット実装

ClockProvider

go
type ClockProvider interface {
    Now() time.Time
}

クロックインターフェース。時刻の注入に使用(テストシナリオ)。

interface

実装型

説明
SystemClockシステムクロック
FixedClock固定時刻クロック

RateLimitKeyer

go
type RateLimitKeyer interface {
    RateLimitKey() string
}

オプションインターフェース。カスタム Claims はこのインターフェースを実装してレート制限キーを提供できます。レート制限キーの検索優先順位:Subject*Claims.UserIDRateLimitKey()

interface