private Optional<JwtContext> getAwsJwtContext(final JwsParts jwsParts) {
        LOGGER.debug("getAwsJwtContext called for jwsParts: {}", jwsParts);
        final PublicKey publicKey = getAwsPublicKey(jwsParts);
        Objects.requireNonNull(publicKey, "Couldn't get public key");

        final String[] validIssuers = getValidIssuers();

        try {
            final JwtConsumerBuilder builder = new JwtConsumerBuilder()
                    .setAllowedClockSkewInSeconds(30) // allow some leeway in validating time based claims
                    // to account for clock skew
                    .setRequireSubject() // the JWT must have a subject claim
                    .setVerificationKey(publicKey)
                    .setRelaxVerificationKeyValidation() // relaxes key length requirement
                    .setExpectedIssuers(true, validIssuers);
            final JwtConsumer jwtConsumer = builder.build();
            return Optional.ofNullable(jwtConsumer.process(jwsParts.jws));

        } catch (Exception e) {
            LOGGER.debug(e::getMessage, e);
            throw new RuntimeException(LogUtil.message("Error getting jwt context for AWS JWT: {}",
                    LogUtil.exceptionMessage(e)), e);
        }
    }
The user claims, in JSON web tokens (JWT) format.
stroom-security/stroom-security-common-impl/src/main/java/stroom/security/common/impl/StandardJwtContextFactory.java