1package dev.rafex.ether.jwt;
3import java.util.Objects;
31import dev.rafex.ether.jwt.internal.ClaimsMapper;
32import dev.rafex.ether.jwt.internal.JwtCodec;
33import dev.rafex.ether.jwt.internal.JwtSigner;
41 this.config = Objects.requireNonNull(config,
"config");
42 validateIssuerConfig(config);
47 final TokenClaims claims = Objects.requireNonNull(tokenSpec,
"tokenSpec").claims();
48 final String encodedHeader =
JwtCodec.
encodeHeader(config.keyProvider().algorithm().headerValue());
50 final String signingInput = encodedHeader +
"." + encodedPayload;
51 final String signature =
JwtSigner.
sign(signingInput, config);
52 return signingInput +
"." + signature;
57 throw new IllegalArgumentException(
"HS256 requires explicit hmac secret");
59 if (
config.keyProvider().algorithm() == JwtAlgorithm.RS256 &&
config.keyProvider().privateKey() ==
null) {
60 throw new IllegalArgumentException(
"RS256 requires private key for issuing");
DefaultTokenIssuer(final JwtConfig config)
String issue(final TokenSpec tokenSpec)
Configures JWT signing and verification behavior.
Normalized claims extracted from a JWT token.
Specification used by TokenIssuer to issue JWT tokens.
static ObjectNode toPayload(final TokenClaims claims)
static String encodeHeader(final String alg)
static String encodeJson(final JsonNode node)
static String sign(final String signingInput, final JwtConfig config)
Supported JWT signature algorithms.
API for issuing JWT tokens.
Typed configuration entry points and composition APIs for Ether applications.