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;
32import dev.rafex.ether.jwt.internal.TokenValidator;
34import java.time.Instant;
35import java.util.Objects;
43 this.config = Objects.requireNonNull(config,
"config");
44 validateVerifierConfig(config);
52 if (tokenAlg ==
null || tokenAlg != config.keyProvider().algorithm()) {
56 if (!
JwtSigner.
verify(parsed.signingInput(), parsed.encodedSignature(), config)) {
63 now ==
null ? Instant.now() : now, tokenTypeRaw);
69 }
catch (
final IllegalArgumentException e) {
71 }
catch (
final Exception e) {
76 private static void validateVerifierConfig(
final JwtConfig config) {
78 throw new IllegalArgumentException(
"HS256 requires explicit hmac secret");
81 throw new IllegalArgumentException(
"RS256 requires public key for verification");
VerificationResult verify(final String token, final Instant now)
DefaultTokenVerifier(final JwtConfig config)
Configures JWT signing and verification behavior.
Normalized claims extracted from a JWT token.
Result returned by token verification.
static VerificationResult fail(final VerificationCode code)
static String tokenTypeRaw(final JsonNode payload)
static TokenClaims fromPayload(final JsonNode payload)
static ParsedJwt parse(final String token)
static boolean verify(final String signingInput, final String encodedSignature, final JwtConfig config)
static VerificationCode validate(final TokenClaims claims, final JsonNode payload, final JwtConfig config, final Instant now, final String tokenTypeRaw)
Supported JWT signature algorithms.
static JwtAlgorithm fromHeaderValue(final String value)
Stable verification error/success codes.
API for verifying JWT tokens.