1package dev.rafex.ether.jwt;
29import dev.rafex.ether.jwt.internal.ClaimsMapper;
30import dev.rafex.ether.jwt.internal.JwtCodec;
31import dev.rafex.ether.jwt.internal.JwtSigner;
33import java.util.Objects;
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;
55 private static void validateIssuerConfig(
final JwtConfig config) {
57 throw new IllegalArgumentException(
"HS256 requires explicit hmac secret");
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.