Awesome Go

go-jwt

CategoryAuthentication and Authorization
SubcategoryAuthentication and Authorization
Stars0

JWT authentication package providing access tokens and refresh tokens with fingerprinting, Redis storage, and automatic refresh capabilities

About go-jwt

[!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

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

Stars

Star


©️ 2025 邱敬幃 Pardn Chiu

Frequently Asked Questions

What is go-jwt?

go-jwt is a Authentication and Authorization library for the Go programming language. JWT authentication package providing access tokens and refresh tokens with fingerprinting, Redis storage, and automatic refresh capabilities

How do I install go-jwt?

Install go-jwt with the Go module system using `go get pardnchiu/go-jwt`. Check the repository for the current installation instructions.

What category does go-jwt belong to?

go-jwt is listed under Authentication and Authorization, specifically Authentication and Authorization.

← Back to Authentication and Authorization