Open
Description
Describe the bug
There's a syntax issue in the JWT token's payload: it contains a trailing comma. Here's how the decoded payload appears:
{
"iat": 1736252478,
"exp": 1736252838,
"iss": "NAME",
"sub": "admin",
}
Expected behavior
Expected decoded payload:
{
"iat": 1736252478,
"exp": 1736252838,
"iss": "NAME",
"sub": "admin"
}
To Reproduce
type JWTService struct {
signer *jwt.Signer
verifier *jwt.Verifier
}
func newJWTService() *JWTService {
private, public := jwt.MustLoadRSA(config.PrivateKey, config.PublicKey)
return &JWTService{
signer: jwt.NewSigner(jwt.RS256, private, config.AccessTokenMaxAge),
verifier: jwt.NewVerifier(jwt.RS256, public),
}
}
func (s *JWTService) GenerateTokenPair(user model.User) (jwt.TokenPair, error) {
now := time.Now()
// Create refresh claims with user ID as subject
refreshClaims := jwt.Claims{
Subject: fmt.Sprintf("%s", user.Username),
Issuer: "NAME",
IssuedAt: now.Unix(),
Expiry: now.Add(time.Second * s.config.RefreshTokenMaxAge).Unix(),
}
// Create access claims with user details
accessClaims := jwt.Claims{
Subject: fmt.Sprintf("%s", user.Username),
Issuer: "NAME",
IssuedAt: now.Unix(),
Expiry: now.Add(time.Second * s.config.AccessTokenMaxAge).Unix(),
}
tokenPair, err := s.signer.NewTokenPair(accessClaims, refreshClaims, s.config.RefreshTokenMaxAge)
if err != nil {
return jwt.TokenPair{}, err
}
fmt.Printf("access token: %s\n", tokenPair.AccessToken)
return tokenPair, nil
}
iris.Version
- v12.2.11