Skip to content

[BUG] Trailing comma in JWT's payload #2517

Open
@my3rs

Description

@my3rs

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

Metadata

Metadata

Assignees

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions