Skip to content

JWT - 프로덕션급 JWT 인증 라이브러리

CyberGo JWT는 Go 언어를 위한 고성능 JWT 인증 라이브러리로, 토큰 생성, 검증, 갱신 및 취소의 완전한 솔루션을 제공합니다.

특징

  • 다중 알고리즘 지원 — HMAC (HS256/384/512), RSA (RS256/384/512), RSA-PSS (PS256/384/512), ECDSA (ES256/384/512)
  • 토큰 라이프사이클 — 생성, 검증, 갱신, 취소 원스톱 관리
  • 커스텀 ClaimsCustomClaims 인터페이스를 통한 임의 비즈니스 필드 지원
  • 블랙리스트 관리 — 내장 메모리 저장소, Redis 등 커스텀 백엔드 지원
  • 속도 제한 — 토큰 버킷 알고리즘으로 무차별 대입 공격 방지
  • 입력 검증 — 필드 길이 제한, 인젝션 패턴 감지, 제어 문자 필터링
  • 클럭 인젝션ClockProvider 인터페이스로 테스트 시나리오 지원
  • 동시성 안전 — 모든 내보내기 메서드는 안전하게 동시 호출 가능
  • 민감 데이터 제로 유출Close()로 키 안전 삭제

설치

bash
go get github.com/cybergodev/jwt

빠른 시작

go
package main

import (
    "fmt"

    "github.com/cybergodev/jwt"
)

func main() {
    // 1. 설정 생성
    cfg := jwt.DefaultConfig()
    cfg.SecretKey = "hmac-key-that-has-at-least-32-bytes!"

    // 2. Processor 생성
    processor, err := jwt.New(cfg)
    if err != nil {
        panic(err)
    }
    defer processor.Close()

    // 3. 토큰 발급
    claims := &jwt.Claims{
        UserID:   "user123",
        Username: "alice",
        Role:     "admin",
    }
    token, err := processor.Create(claims)
    if err != nil {
        panic(err)
    }
    fmt.Println("Token:", token)

    // 4. 토큰 검증
    parsed, valid, err := processor.Validate(token)
    if err != nil {
        panic(err)
    }
    fmt.Println("Valid:", valid)
    fmt.Println("UserID:", parsed.UserID)
}

아키텍처 개요

text
┌────────────────────────────────────────────────┐
│                  Processor                      │
│  (implements TokenManager interface)            │
├────────────────────────────────────────────────┤
│  Create / Validate / Refresh / Revoke          │
│  CreateRefresh / ValidateInto / RefreshInto    │
│  ParseUnverified / IsRevoked / IsClosed / Close│
├──────────────────┬─────────────────────────────┤
│  BlacklistManager│     RateLimiter              │
│  (optional)      │     (optional)               │
├──────────────────┴─────────────────────────────┤
│                Config                           │
│  SigningMethod / TTL / Blacklist / Limit       │
└────────────────────────────────────────────────┘

다음 단계