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

フィールド

フィールド説明
UserIDstringユーザー ID
Usernamestringユーザー名
Rolestringロール
Permissions[]string権限リスト
Scopes[]stringスコープリスト
Extramap[string]anyカスタム拡張フィールド
SessionIDstringセッション ID
ClientIDstringクライアント ID
RegisteredClaimsRegisteredClaims標準 JWT フィールド

検証ルール

Validate() メソッドは UserID または Username のいずれかが空でないことを確認します。

Processor はトークンの作成と検証時に追加の深い検証を実行します(内部 validateClaims 関数経由):

ルール制限
文字列フィールドの長さ最大 256 文字
配列フィールドのサイズ最大 100 項目
Extra フィールド数最大 50 キー
Extra 値の型string[]string のみ許可。ネストされた map とその他の型は拒否
制御文字タブ、改行、復帰以外の制御文字は拒否
注入パターン検出HTML/SQL/パストラバーサルなどの危険なパターンを含む場合は拒否

メソッド

メソッドシグネチャ説明
GetRegisteredClaimsfunc (c *Claims) GetRegisteredClaims() *RegisteredClaims埋め込まれた標準フィールドを返す
Validatefunc (c *Claims) Validate() errorUserID または 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発行時刻
IDstringjtiトークン ID
TokenTypestringtoken_typeトークンタイプ(access または refreshトークンタイプ定数を参照)