Sapling Logo
SDK authentication quickstart

Java JWT Generator

Sign a short-lived Sapling SDK credential in Java without exposing your private API key to browser code.

  • HS256 signature
  • Server-side only
  • Public + private keys
SIGN Java logo Java HS256 · sub + exp

Java JWT generator quickstart

Create a token with your public API key in the sub claim, a near-term Unix timestamp in exp, and an HS256 signature made with your private API key.

Sapling JWTs use HS256 with a sub claim containing your public API key and an exp claim containing a Unix timestamp. The examples use a one-hour lifetime; shorten it further when your application can refresh tokens easily.
Java HS256 · sub + exp

This example uses com.auth0:java-jwt.

import com.auth0.jwt.JWT;
import com.auth0.jwt.algorithms.Algorithm;
import java.time.Instant;
import java.util.Date;

public class Main {
  public static void main(String[] args) {
    String publicKey = System.getenv("SAPLING_PUBLIC_KEY");
    String privateKey = System.getenv("SAPLING_PRIVATE_KEY");
    if (publicKey == null || privateKey == null) {
      throw new IllegalStateException(
          "Set SAPLING_PUBLIC_KEY and SAPLING_PRIVATE_KEY first.");
    }

    String token = JWT.create()
        .withSubject(publicKey)
        .withExpiresAt(Date.from(Instant.now().plusSeconds(3600)))
        .sign(Algorithm.HMAC256(privateKey));

    System.out.println(token);
  }
}
Generated token text/plain
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.<base64url-claims>.<signature>

Return the compact token to the browser and pass it to Sapling.init as the key. Issue a fresh token after it expires; never send the private key.

About Java

Java is a popular object-oriented programming language that can run across many different platforms through the Java Virtual Machine (JVM). Java has C/C++ style syntax but comes with automatic memory management and less low-level primitives.