or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

algorithms.mdclaims.mdindex.mdjwt-creation.mdjwt-decoding.mdjwt-verification.mdkey-providers.md
tile.json

tessl/maven-com-auth0--java-jwt

A comprehensive Java implementation of JSON Web Token (JWT) with creation, signing, and verification capabilities for server-side JVM applications.

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
mavenpkg:maven/com.auth0/java-jwt@4.5.x

To install, run

npx @tessl/cli install tessl/maven-com-auth0--java-jwt@4.5.0

index.mddocs/

Java JWT

Java JWT is a comprehensive implementation of JSON Web Token (JWT) as specified in RFC 7519, designed specifically for server-side JVM applications. It provides extensive JWT creation, signing, and verification capabilities with support for multiple cryptographic algorithms including HMAC, RSA, and ECDSA signing methods.

Package Information

  • Package Name: com.auth0:java-jwt
  • Package Type: maven
  • Language: Java
  • Installation: Add dependency to Maven pom.xml or Gradle build.gradle

Maven:

<dependency>
  <groupId>com.auth0</groupId>
  <artifactId>java-jwt</artifactId>
  <version>4.5.0</version>
</dependency>

Gradle:

implementation 'com.auth0:java-jwt:4.5.0'

Core Imports

import com.auth0.jwt.JWT;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.interfaces.DecodedJWT;
import com.auth0.jwt.interfaces.JWTVerifier;

Basic Usage

import com.auth0.jwt.JWT;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.interfaces.DecodedJWT;
import com.auth0.jwt.interfaces.JWTVerifier;

// Create a JWT token
Algorithm algorithm = Algorithm.HMAC256("secret");
String token = JWT.create()
    .withIssuer("auth0")
    .withSubject("user123")
    .withExpiresAt(new Date(System.currentTimeMillis() + 3600000))
    .sign(algorithm);

// Verify a JWT token
JWTVerifier verifier = JWT.require(algorithm)
    .withIssuer("auth0")
    .acceptLeeway(60) // 60 seconds leeway for time-based claims
    .build();
DecodedJWT jwt = verifier.verify(token);

// Decode without verification (use with caution)
DecodedJWT decoded = JWT.decode(token);
String subject = decoded.getSubject();

Architecture

Java JWT is built around several key components:

  • JWT Main Class: Entry point providing static methods for token creation, verification, and decoding, plus instance methods for high-throughput decoding scenarios
  • Algorithm Factory: Creates algorithm instances for different cryptographic methods (HMAC, RSA, ECDSA)
  • Builder Pattern: Fluent interfaces for JWT creation (JWTCreator.Builder) and verification setup (Verification)
  • Key Providers: Interfaces for dynamic key resolution supporting key rotation and multi-tenant scenarios
  • Claim System: Type-safe access to JWT claims with automatic conversion and validation
  • Exception Hierarchy: Comprehensive error handling for creation, verification, and decoding failures

Capabilities

JWT Creation

Core functionality for creating and signing JWT tokens with comprehensive claim support and multiple signing algorithms.

public static JWTCreator.Builder create();

public interface JWTCreator.Builder {
    Builder withIssuer(String issuer);
    Builder withSubject(String subject);
    Builder withAudience(String... audience);
    Builder withExpiresAt(Date expiresAt);
    Builder withClaim(String name, String value);
    String sign(Algorithm algorithm);
}

JWT Creation

JWT Verification

Comprehensive verification system with configurable claim validation, time leeway, and custom validation predicates.

public static Verification require(Algorithm algorithm);

public interface Verification {
    Verification withIssuer(String... issuer);
    Verification withSubject(String subject);
    Verification acceptLeeway(long leeway);
    Verification withClaim(String name, String value);
    JWTVerifier build();
}

public interface JWTVerifier {
    DecodedJWT verify(String token);
}

JWT Verification

JWT Decoding

Token decoding functionality for accessing JWT header, payload, and claims without signature verification.

public static DecodedJWT decode(String token);

public interface DecodedJWT extends Payload, Header {
    String getToken();
    String getHeader();
    String getPayload();
    String getSignature();
}

JWT Decoding

Cryptographic Algorithms

Factory methods for creating algorithm instances supporting HMAC, RSA, and ECDSA signing methods with key provider support.

// HMAC Algorithms
public static Algorithm HMAC256(String secret);
public static Algorithm HMAC384(byte[] secret);
public static Algorithm HMAC512(String secret);

// RSA Algorithms
public static Algorithm RSA256(RSAPublicKey publicKey, RSAPrivateKey privateKey);
public static Algorithm RSA384(RSAKeyProvider keyProvider);
public static Algorithm RSA512(RSAKey key);

// ECDSA Algorithms
public static Algorithm ECDSA256(ECPublicKey publicKey, ECPrivateKey privateKey);
public static Algorithm ECDSA384(ECDSAKeyProvider keyProvider);
public static Algorithm ECDSA512(ECKey key);

Cryptographic Algorithms

Claim Access

Type-safe claim access system with automatic type conversion and comprehensive getter methods for all standard JWT claims.

public interface Payload {
    String getIssuer();
    String getSubject();
    List<String> getAudience();
    Date getExpiresAt();
    Instant getExpiresAtAsInstant();
    Claim getClaim(String name);
    Map<String, Claim> getClaims();
}

public interface Claim {
    String asString();
    Integer asInt();
    Boolean asBoolean();
    Date asDate();
    <T> List<T> asList(Class<T> clazz);
    <T> T[] asArray(Class<T> clazz);
}

Claim Access

Key Providers

Dynamic key resolution interfaces supporting key rotation, multi-tenant scenarios, and advanced key management patterns.

public interface RSAKeyProvider extends KeyProvider<RSAPublicKey, RSAPrivateKey> {
    RSAPublicKey getPublicKeyById(String keyId);
    RSAPrivateKey getPrivateKey();
    String getPrivateKeyId();
}

public interface ECDSAKeyProvider extends KeyProvider<ECPublicKey, ECPrivateKey> {
    ECPublicKey getPublicKeyById(String keyId);
    ECPrivateKey getPrivateKey();
    String getPrivateKeyId();
}

Key Providers

Types

// Standard JWT claim name constants
public class RegisteredClaims {
    public static final String ISSUER = "iss";
    public static final String SUBJECT = "sub";
    public static final String AUDIENCE = "aud";
    public static final String EXPIRES_AT = "exp";
    public static final String NOT_BEFORE = "nbf";
    public static final String ISSUED_AT = "iat";
    public static final String JWT_ID = "jti";
}

// JWT header parameter constants
public class HeaderParams {
    public static final String ALGORITHM = "alg";
    public static final String CONTENT_TYPE = "cty";
    public static final String TYPE = "typ";
    public static final String KEY_ID = "kid";
}