JWT Auth
JWT authentication using RS256, HS256, or any asymmetric algorithm.
Validates the Authorization: Bearer <token> header.
Basic Usage
import "github.com/Pavan-Silva/go-zen/auth"
jwtAuth := &auth.JWTAuth{
Secret: []byte("your-secret-key"),
SigningMethod: jwt.SigningMethodHS256,
}
r.Use(auth.RequireAuth(jwtAuth))
RS256 (Recommended for Production)
jwtAuth := &auth.JWTAuth{
Secret: publicKeyPEM,
SigningMethod: jwt.SigningMethodRS256,
}
Custom Claims
type CustomClaims struct {
Role string `json:"role"`
}
jwtAuth := &auth.JWTAuth{
Secret: []byte("secret"),
SigningMethod: jwt.SigningMethodHS256,
ClaimsFunc: func(claims jwt.MapClaims) *auth.User {
return &auth.User{
ID: claims["sub"].(string),
Username: claims["preferred_username"].(string),
Authorities: auth.Authorities("ROLE_USER"),
Claims: claims,
}
},
}
User from JWT
The Authenticate method extracts claims and populates the User struct:
user := auth.GetUser(c)
user.ID // "sub" claim
user.Username // "preferred_username" claim
user.Authorities // claim-derived authorities
user.Claims // full claim map