@Bean
        @RefreshScope(proxyMode = ScopedProxyMode.DEFAULT)
        @ConditionalOnMissingBean(name = OidcWebFingerUserInfoRepository.BEAN_NAME)
        public OidcWebFingerUserInfoRepository oidcWebFingerUserInfoRepository(
            final ConfigurableApplicationContext applicationContext,
            final CasConfigurationProperties casProperties) {
            return BeanSupplier.of(OidcWebFingerUserInfoRepository.class)
                .when(CONDITION_WEBFINGER.given(applicationContext.getEnvironment()))
                .supply(() -> {
                    val userInfo = casProperties.getAuthn().getOidc().getWebfinger().getUserInfo();
                    if (userInfo.getGroovy().getLocation() != null && CasRuntimeHintsRegistrar.notInNativeImage()) {
                        return new OidcGroovyWebFingerUserInfoRepository(userInfo.getGroovy().getLocation());
                    }
                    if (StringUtils.isNotBlank(userInfo.getRest().getUrl())) {
                        return new OidcRestfulWebFingerUserInfoRepository(userInfo.getRest());
                    }
                    LOGGER.info("Using [{}] to locate webfinger resources, which is NOT appropriate for production purposes, "
                                + "as it will always echo back the given username/email address and is only useful for testing/demo purposes. "
                                + "Consider choosing and configuring a different repository implementation for locating and fetching user information "
                                + "for webfinger resources, etc.", OidcEchoingWebFingerUserInfoRepository.class.getSimpleName());
                    return new OidcEchoingWebFingerUserInfoRepository();
                })
                .otherwiseProxy()
                .get();
        }
This is {@link OidcConfiguration}.

@author Misagh Moayyed
@since 5.0.0
support/cas-server-support-oidc/src/main/java/org/apereo/cas/config/OidcConfiguration.java