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; 토큰 타입 상수 참조)