Developer Tools for Random Data Generation // v2.6.1
root@generate-random:~/jwt-tokens/java$ _

Generate JWT Tokens in Java

Complete code tutorial with examples and best practices

[ Code Example - Quick Summary ]

Language: Java

What: Generate secure JWT tokens in Java using the JJWT library. Perfect for Spring Boot applications, enterprise microservices, and RESTful API authentication.

Try it: Use our interactive Jwt-tokens generator or integrate this code into your Java application.

Generate secure JWT tokens in Java using the JJWT library. Perfect for Spring Boot applications, enterprise microservices, and RESTful API authentication. Looking for other languages? Check our code examples in PHP , JavaScript , Python , C# , C++ , Ruby and Go or use our interactive web generator.

Java Code Example

import io.jsonwebtoken.*;
import io.jsonwebtoken.security.Keys;
import java.security.Key;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

public class JwtGenerator {
    // Secret key (256 bits for HS256)
    private static final String SECRET = "your-256-bit-secret-key-minimum-32-characters";
    private static final Key KEY = Keys.hmacShaKeyFor(SECRET.getBytes());
    private static final String ISSUER = "https://yourdomain.com";
    private static final String AUDIENCE = "https://yourdomain.com";

    public static String generateToken(String userId, String username, String role) {
        long nowMillis = System.currentTimeMillis();
        Date now = new Date(nowMillis);
        Date exp = new Date(nowMillis + 3600000); // 1 hour

        // Custom claims
        Map<String, Object> claims = new HashMap<>();
        claims.put("user_id", userId);
        claims.put("username", username);
        claims.put("role", role);

        return Jwts.builder()
                .setClaims(claims)
                .setIssuer(ISSUER)
                .setAudience(AUDIENCE)
                .setIssuedAt(now)
                .setExpiration(exp)
                .signWith(KEY, SignatureAlgorithm.HS256)
                .compact();
    }

    public static Claims validateToken(String token) {
        try {
            return Jwts.parserBuilder()
                    .setSigningKey(KEY)
                    .requireIssuer(ISSUER)
                    .requireAudience(AUDIENCE)
                    .build()
                    .parseClaimsJws(token)
                    .getBody();
        } catch (JwtException e) {
            throw new RuntimeException("Invalid JWT token: " + e.getMessage());
        }
    }

    public static void main(String[] args) {
        String token = generateToken("123", "john_doe", "admin");
        System.out.println("JWT: " + token);

        Claims claims = validateToken(token);
        System.out.println("User ID: " + claims.get("user_id"));
    }
}

[EXPLANATION]

JJWT (Java JWT) is the most comprehensive JWT library for Java. It provides type-safe builders and parsers with strong security defaults. Use Keys.hmacShaKeyFor() to generate proper signing keys and parserBuilder() for validation with claim verification. The library automatically handles Base64 URL encoding and JSON serialization.

Expected Output

eyJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoiMTIzIiwidXNlcm5hbWUiOiJqb2huX2RvZSIsInJvbGUiOiJhZG1pbiIsImlzcyI6Imh0dHBzOi8veW91cmRvbWFpbi5jb20iLCJhdWQiOiJodHRwczovL3lvdXJkb21haW4uY29tIiwiaWF0IjoxNjgwMDAwMDAwLCJleHAiOjE2ODAwMDM2MDB9.YVPuJ_EqJr8vOT5JkUqHxX9Rj3LmN4K8sQ2TpY6wZ1c

Common Use Cases

  • Spring Boot REST API authentication
  • Spring Security integration
  • Microservices authorization
  • Android app backend authentication
  • Enterprise service-to-service communication

Important Notes

  • Add dependency: io.jsonwebtoken:jjwt-api:0.11.5
  • Use Keys.hmacShaKeyFor() for proper key generation
  • Always validate issuer, audience, and expiration
  • Use SignatureAlgorithm.RS256 for asymmetric signing
  • Store secrets in application.properties or environment variables

Try Our Interactive Generator

Don't want to write code? Use our free web-based Jwt-tokens generator with instant results.

TRY JWT-TOKENS GENERATOR →