pardnchiu/go-jwt
最後更新
Note此 README 由 SKILL 生成,英文版請參閱 這裡。
ECDSA JWT WITH REDIS LIFECYCLE AND DEVICE BINDING
Go JWT 驗證函式庫,具備刷新令牌輪替、Redis 撤銷與 Gin 中介層
目錄
功能特點
go get github.com/pardnchiu/go-jwt@latest· 匯入路徑github.com/pardnchiu/go-jwt/core· 完整文件
- Redis 管控 Token 生命週期 — Access Token 須同時通過 ES256 簽章與 Redis JTI 白名單,登出寫入撤銷紀錄即刻失效,不必等 JWT 自然過期。
- 裝置指紋綁定 — 以 OS、瀏覽器、裝置類型與裝置 ID 的 SHA-256 指紋綁定 Token 與 Refresh ID,被竊的 Token 換裝置即驗證失敗。
- 分散鎖透明刷新 — 過期時自動以 Refresh ID 重簽,
SETNX鎖加 Lua 比對解鎖確保多實例下同一 Refresh ID 只被刷新一次。 - 版本化 Refresh ID 輪替 — 刷新次數超過
MaxVersion或剩餘 TTL 低於閾值時整組重發,平時只重簽 Access Token 以降低 Redis 寫入。 - ES256 自動金鑰與雙框架中介層 — 金鑰可從路徑、內嵌 PEM 載入或首次啟動自動產生 P-256 金鑰對,並提供 Gin 與
net/http即插即用中介層。
架構
完整架構
graph TB
REQ[HTTP 請求] --> MW[Gin / net/http 中介層]
MW --> V[Verify]
V --> FP[裝置指紋]
V -->|簽章 + JTI 有效| OK[回傳 Auth]
V -->|Access Token 過期或缺失| RF[Refresh]
RF -->|未達閾值| RS[重簽 Access Token]
RF -->|超過 MaxVersion / TTL 閾值| CR[Create 整組重發]
V --> REDIS[(Redis)]
RF --> REDIS- graph TB
- REQ[HTTP 請求] --> MW[Gin / net/http 中介層]
- MW --> V[Verify]
- V --> FP[裝置指紋]
- V -->|簽章 + JTI 有效| OK[回傳 Auth]
- V -->|Access Token 過期或缺失| RF[Refresh]
- RF -->|未達閾值| RS[重簽 Access Token]
- RF -->|超過 MaxVersion / TTL 閾值| CR[Create 整組重發]
- V --> REDIS[(Redis)]
- RF --> REDIS
授權
本專案採用 MIT LICENSE。
Author
Just open an issue to share an idea.
©️ 2025 邱敬幃 Pardn Chiu