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.RS256for 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 →Other Programming Languages
View Jwt-tokens generation code examples in PHP
View Jwt-tokens generation code examples in JavaScript
View Jwt-tokens generation code examples in Python
View Jwt-tokens generation code examples in C#
View Jwt-tokens generation code examples in C++
View Jwt-tokens generation code examples in Ruby
View Jwt-tokens generation code examples in Go