@ConditionalOnMissingBean(name = OneTimeTokenRepository.BEAN_NAME)
        @Bean
        @RefreshScope(proxyMode = ScopedProxyMode.DEFAULT)
        public OneTimeTokenRepository oneTimeTokenAuthenticatorTokenRepository() {
            final Cache<String, Collection<OneTimeToken>> storage = Caffeine.newBuilder()
                .initialCapacity(INITIAL_CACHE_SIZE)
                .maximumSize(MAX_CACHE_SIZE)
                .recordStats()
                .expireAfterWrite(Duration.ofSeconds(EXPIRE_TOKENS_IN_SECONDS))
                .build();
            return new CachingOneTimeTokenRepository(storage);
        }
This is {@link CasOneTimeTokenAuthenticationAutoConfiguration}.

@author Misagh Moayyed
@since 5.1.0
support/cas-server-support-otp-mfa/src/main/java/org/apereo/cas/config/CasOneTimeTokenAuthenticationAutoConfiguration.java