Skip to content

빠른 시작

설치

bash
go get github.com/cybergodev/jwt

Go 1.25+ 필요.

기본 사용법

1. Processor 생성

go
package main

import (
    "fmt"
    "time"

    "github.com/cybergodev/jwt"
)

func main() {
    cfg := jwt.DefaultConfig()
    cfg.SecretKey = "hmac-key-that-has-at-least-32-bytes!" // HMAC 최소 32 바이트
    cfg.AccessTokenTTL = 15 * time.Minute
    cfg.RefreshTokenTTL = 7 * 24 * time.Hour

    processor, err := jwt.New(cfg)
    if err != nil {
        panic(err)
    }
    defer processor.Close() // 키 안전 삭제
}

2. 토큰 발급

go
claims := &jwt.Claims{
    UserID:   "user123",
    Username: "alice",
    Role:     "admin",
    Permissions: []string{"read", "write"},
}

// 액세스 토큰 (단기)
accessToken, err := processor.Create(claims)
if err != nil {
    panic(err)
}

// 리프레시 토큰 (장기)
refreshToken, err := processor.CreateRefresh(claims)
if err != nil {
    panic(err)
}

3. 토큰 검증

go
parsed, valid, err := processor.Validate(accessToken)
if err != nil {
    // 오류 처리: 만료, 서명 무효 등
    panic(err)
}
if valid {
    fmt.Println("UserID:", parsed.UserID)
    fmt.Println("Role:", parsed.Role)
    fmt.Println("ExpiresAt:", parsed.ExpiresAt.Time)
}

4. 토큰 갱신

go
newAccessToken, err := processor.Refresh(refreshToken)
if err != nil {
    panic(err)
}
fmt.Println("New Access Token:", newAccessToken)

5. 토큰 취소

go
// 토큰을 블랙리스트에 추가
err := processor.Revoke(accessToken)
if err != nil {
    panic(err)
}

// 취소 여부 확인
revoked, err := processor.IsRevoked(accessToken)
if err != nil {
    panic(err)
}
fmt.Println("Revoked:", revoked) // true

추가 기능

위 단계는 토큰 생명주기의 핵심 작업을 다룹니다. CyberGo JWT는 다음 기능도 제공합니다 — 각 가이드를 클릭하여 상세 사용법을 확인하세요:

기능설명가이드
서명 알고리즘HMAC, RSA, RSA-PSS, ECDSA — 4종 12개 알고리즘서명 알고리즘
커스텀 ClaimsCustomClaims 인터페이스로 비즈니스 필드 정의커스텀 Claims
토큰 갱신 및 교체2계층 토큰 TTL 설계, 재사용 vs 일회성 교체 전략토큰 갱신 및 교체
토큰 블랙리스트취소, 내장 메모리 저장소, Redis 커스텀 백엔드토큰 블랙리스트
속도 제한토큰 버킷 알고리즘으로 발급 엔드포인트 남용 방지속도 제한
설정 상세발급자/수신자 검증, 클록 스큐, 필수 만료, 입력 검증설정 상세
오류 처리19개 센티널 오류 분류와 errors.Is 매칭오류 처리
테스트와 클록 주입FixedClock으로 결정적이고 sleep 없는 시간 제어테스트와 클록 주입

다음 단계