JJWT API - JSON Web Token library API for Java and Android
npx @tessl/cli install tessl/maven-io-jsonwebtoken--jjwt-api@0.12.0JJWT API is the core API module of the JJWT (Java JWT) library, providing interfaces and contracts for creating and verifying JSON Web Tokens (JWTs) and JSON Web Keys (JWKs) on the JVM and Android platforms. This is a pure Java implementation based exclusively on JOSE Working Group RFC specifications including JWT (RFC 7519), JWS (RFC 7515), JWE (RFC 7516), JWK (RFC 7517), and related standards.
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-api</artifactId>
<version>0.12.6</version>
</dependency>import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.JwtBuilder;
import io.jsonwebtoken.JwtParser;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jws;For security and key management:
import io.jsonwebtoken.security.Keys;
import io.jsonwebtoken.security.Jwks;For IO utilities:
import io.jsonwebtoken.io.Encoders;
import io.jsonwebtoken.io.Decoders;import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.security.Keys;
import javax.crypto.SecretKey;
import java.util.Date;
// Generate a secure key for HMAC-SHA algorithms
SecretKey key = Keys.secretKeyFor(Jwts.SIG.HS256);
// Create a JWT
String jwt = Jwts.builder()
.subject("user123")
.issuer("myapp")
.expiration(new Date(System.currentTimeMillis() + 3600000)) // 1 hour
.claim("role", "admin")
.signWith(key)
.compact();
System.out.println(jwt);import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jws;
// Parse and verify the JWT
Jws<Claims> jws = Jwts.parser()
.verifyWith(key)
.build()
.parseSignedClaims(jwt);
// Access claims
Claims claims = jws.getPayload();
String subject = claims.getSubject();
String role = claims.get("role", String.class);
System.out.println("Subject: " + subject);
System.out.println("Role: " + role);JJWT API follows a clean separation of concerns with several key components:
Jwts, Keys, Jwks provide entry points and standard algorithm instancesJwtBuilder) and parser configuration (JwtParserBuilder)Core JWT building, parsing, and validation functionality including support for signed (JWS) and encrypted (JWE) tokens.
// JWT Builder Factory
public static JwtBuilder builder();
// JWT Parser Factory
public static JwtParserBuilder parser();
// Claims Builder Factory
public static ClaimsBuilder claims();
// Header Builder Factory
public static HeaderBuilder header();Comprehensive key management, JSON Web Key (JWK) support, and cryptographic algorithm interfaces for secure JWT operations.
// Key Utilities
public static SecretKey hmacShaKeyFor(byte[] bytes);
public static SecretKey secretKeyFor(SignatureAlgorithm alg); // deprecated but available
public static KeyPair keyPairFor(SignatureAlgorithm alg); // deprecated but available
public static Password password(char[] password);
// Key Builders
public static SecretKeyBuilder builder(SecretKey key);
public static PrivateKeyBuilder builder(PrivateKey key);
// JWK Factory Methods
public static DynamicJwkBuilder<?, ?> builder();
public static JwkParserBuilder parser();
public static JwkSetBuilder set();
public static JwkSetParserBuilder setParser();Encoding, decoding, and serialization utilities for Base64/Base64URL operations and custom JSON processing.
// Standard Encoders (from Encoders class)
public static final Encoder<byte[], String> BASE64 = Encoders.BASE64;
public static final Encoder<byte[], String> BASE64URL = Encoders.BASE64URL;
// Standard Decoders (from Decoders class)
public static final Decoder<CharSequence, byte[]> BASE64 = Decoders.BASE64;
public static final Decoder<CharSequence, byte[]> BASE64URL = Decoders.BASE64URL;Core JWT types including Claims, Headers, and token interfaces that represent parsed JWT content.
// Core JWT Interface
public interface Jwt<H, P> {
H getHeader();
P getPayload();
<T> T accept(JwtVisitor<T> visitor);
}
// Claims Interface
public interface Claims extends Map<String, Object> {
String getIssuer();
String getSubject();
Set<String> getAudience();
Date getExpiration();
// ... other standard claims
}JJWT API provides constants for all standard JOSE algorithms: