8000 GitHub - pardnchiu/go-jwt: JWT authentication with auto-renewal · GitHub
[go: up one dir, main page]

Skip to content

pardnchiu/go-jwt

Repository files navigation

Note

This README was generated by SKILL, get the ZH version from here.

go-jwt

pkg card codecov license version Mentioned in Awesome Go

ECDSA and Redis-backed JWT authentication library with full token lifecycle management and device fingerprint binding.

Table of Contents

Features

go get github.com/pardnchiu/go-jwt · Documentation

Redis-Driven Token Lifecycle

Integrates Redis for complete Access Token and Refresh ID lifecycle management, including creation, verification, refresh, and revocation. Ensures atomicity of multi-key operations through Redis Transaction Pipelines and prevents concurrent Refresh Token race conditions with distributed locks.

Device Fingerprint Binding

Binds tokens to the user's device environment (OS, browser, device type) via SHA-256 hashing. Even if a token is stolen, attackers cannot use it on a different device, fundamentally preventing token hijacking attacks.

Dual-Framework Middleware

Provides plug-and-play middleware for both Gin and standard net/http, automatically handling token verification and expiration refresh flows. Developers retrieve authenticated user data directly from the context without manual token lifecycle intervention.

Architecture

graph TB
    REQ[HTTP Request] --> MW[Middleware<br/>Gin / net/http]
    MW --> V[Verify]
    V -->|Valid Token| AUTH[Return Auth Data]
    V -->|Expired Token| RF[Refresh]
    V -->|No Token| DENY[Deny Access]
    RF -->|Valid Refresh ID| SIGN[Re-sign Access Token]
    RF -->|Threshold Exceeded| CREATE[Full Token Rebuild]
    RF -->|Invalid| DENY
    SIGN --> REDIS[(Redis)]
    CREATE --> REDIS
    V --> FP[Device Fingerprint Check]
    FP --> REDIS
Loading

File Structure

go-jwt/
├── instance.go       # Initialization and config validation
├── create.go         # Token creation and JWT signing
├── verify.go         # Token verification and JWT parsing
├── refresh.go        # Token refresh with distributed lock
├── revoke.go         # Token revocation
├── middleware.go     # Gin / net/http middleware
├── cookie.go         # Cookie management
├── pem.go            # ECDSA key handling
├── refreshData.go    # Refresh ID and device fingerprint
├── utility.go        # Helper functions
├── uuid.go           # UUID v4 generation
├── type.go           # Type definitions
├── jwt_test.go       # Unit tests
└── go.mod

License

This project is licensed under the MIT LICENSE.

Author

邱敬幃 Pardn Chiu

Stars

Star


©️ 2025 邱敬幃 Pardn Chiu

About

JWT authentication with auto-renewal

Topics

Resources

License

Stars

Watchers

Forks

Contributors

Languages

0