Sapling Logo
SDK authentication quickstart

Clojure JWT Generator

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

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

Clojure 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.
Clojure HS256 · sub + exp

This example uses buddy-sign.

(require '[buddy.sign.jwt :as jwt])

(def public-key
  (or (System/getenv "SAPLING_PUBLIC_KEY")
      (throw (ex-info "Set SAPLING_PUBLIC_KEY first." {}))))
(def private-key
  (or (System/getenv "SAPLING_PRIVATE_KEY")
      (throw (ex-info "Set SAPLING_PRIVATE_KEY first." {}))))

(def now (quot (System/currentTimeMillis) 1000))
(def claims {:sub public-key :exp (+ now 3600)})

(println (jwt/sign claims private-key {:alg :hs256}))
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 Clojure

Clojure is a dialect of Lisp, a class of programming languages that provide a macro system that treats code as mutable data. Clojure runs on the Java platform.