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)
  • 令牌生命周期 — 创建、验证、刷新、吊销一站式管理
  • 自定义 Claims — 通过 CustomClaims 接口支持任意业务字段
  • 黑名单管理 — 内置内存存储,支持 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, err := processor.Parse(token)
	if err != nil {
		panic(err)
	}
	fmt.Println("UserID:", parsed.UserID)
}

架构概览 ​

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

下一步 ​