private LoadingCache<String, PublicKey> createAwsPublicKeyCache() {
        LOGGER.info("Creating cache for AWS public keys");
        // TODO: 24/02/2023 Probably ought to come from config
        // Need to use caffeine rather than StroomCache as this is used in proxy which
        // doesn't have it
        final LoadingCache<String, PublicKey> awsPublicKeyCache;
        awsPublicKeyCache = Caffeine.newBuilder()
                .maximumSize(1_000)
                .expireAfterAccess(Duration.ofHours(1))
                .build(this::fetchAwsPublicKey);

        final Timer timer = new Timer("AWS public key cache eviction timer", true);
        timer.schedule(
                new TimerTask() {
                    @Override
                    public void run() {
                        LOGGER.debug("Evicting expired AWS public keys from the cache");
                        awsPublicKeyCache.cleanUp();
                    }
                },
                Duration.ofMinutes(1).toMillis(),
                Duration.ofMinutes(1).toMillis());
        return awsPublicKeyCache;
    }
The user claims, in JSON web tokens (JWT) format.
stroom-security/stroom-security-common-impl/src/main/java/stroom/security/common/impl/StandardJwtContextFactory.java