@Override
    public void setupModule(final Module.SetupContext setupContext) {
        val cipherExecutor = ApplicationContextProvider.getBean(applicationContext,
                CipherExecutor.BEAN_NAME_CAS_CONFIGURATION_CIPHER_EXECUTOR, CipherExecutor.class)
            .orElseGet(CipherExecutor::noOp);

        setupContext.addBeanDeserializerModifier(new BeanDeserializerModifier() {
            @Serial
            private static final long serialVersionUID = 2351328333366612397L;

            @Override
            public JsonDeserializer<?> modifyMapDeserializer(final DeserializationConfig config,
                                                             final MapType type,
                                                             final BeanDescription beanDescription,
                                                             final JsonDeserializer jsonDeserializer) {
                return new DecryptingMapDeserializer(jsonDeserializer, cipherExecutor);
            }
        });
    }
This is {@link DecodableCipherExecutorMapModule}.

@author Misagh Moayyed
@since 7.3.0
core/cas-server-core-util-api/src/main/java/org/apereo/cas/util/serialization/DecodableCipherExecutorMapModule.java