@ConditionalOnMissingBean(name = CookieValueManager.BEAN_NAME)
        @Bean
        @RefreshScope(proxyMode = ScopedProxyMode.DEFAULT)
        public CookieValueManager cookieValueManager(
            @Qualifier(GeoLocationService.BEAN_NAME)
            final ObjectProvider<GeoLocationService> geoLocationService,
            @Qualifier(TenantExtractor.BEAN_NAME)
            final TenantExtractor tenantExtractor,
            final CasConfigurationProperties casProperties,
            @Qualifier("cookieCipherExecutor")
            final CipherExecutor cookieCipherExecutor) {
            if (casProperties.getTgc().getCrypto().isEnabled()) {
                val cipherExecutorResolver = new DefaultCipherExecutorResolver(cookieCipherExecutor, tenantExtractor,
                    TicketGrantingCookieProperties.class, bindingContext -> {
                    val properties = bindingContext.value();
                    return CipherExecutorUtils.newStringCipherExecutor(properties.getTgc().getCrypto(), TicketGrantingCookieCipherExecutor.class);
                });
                return new DefaultCasCookieValueManager(cipherExecutorResolver,
                    tenantExtractor, geoLocationService,
                    DefaultCookieSameSitePolicy.INSTANCE, casProperties.getTgc());
            }
            return new NoOpCookieValueManager(tenantExtractor);
        }
This is {@link CasCoreCookieAutoConfiguration}.

@author Misagh Moayyed
@since 5.0.0
core/cas-server-core-cookie/src/main/java/org/apereo/cas/config/CasCoreCookieAutoConfiguration.java