Configuration Management - Clustered Deployments with AMQP

This is one option for broadcasting change events to CAS nodes. RabbitMQ is open source message broker software (sometimes called message-oriented middleware) that implements the Advanced Message Queuing Protocol (AMQP).

Support is enabled by including the following dependency in the final overlay:

1
2
3
4
5
<dependency>
    <groupId>org.apereo.cas</groupId>
    <artifactId>cas-server-support-configuration-cloud-amqp</artifactId>
    <version>${cas.version}</version>
</dependency>
1
implementation "org.apereo.cas:cas-server-support-configuration-cloud-amqp:${project.'cas.version'}"
1
2
3
4
5
6
7
8
9
dependencyManagement {
    imports {
        mavenBom "org.apereo.cas:cas-server-support-bom:${project.'cas.version'}"
    }
}

dependencies {
    implementation "org.apereo.cas:cas-server-support-configuration-cloud-amqp"
}
1
2
3
4
5
6
7
8
9
10
dependencies {
    /*
        The following platform references are included automatically and are listed for reference only.

        implementation enforcedPlatform("org.apereo.cas:cas-server-support-bom:${project.'cas.version'}")
        implementation platform(org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES)
        
    */
    implementation "org.apereo.cas:cas-server-support-configuration-cloud-amqp"
}

The following settings and properties are available from the CAS configuration catalog:

spring.rabbitmq.address-shuffle-modeMode used to shuffle configured addresses.
none
Third party

Mode used to shuffle configured addresses.

Type
AbstractConnectionFactory.AddressShuffleMode
Default
none
Defined by
RabbitProperties
spring.rabbitmq.addressesList of addresses to which the client should connect.
no default
Third party

List of addresses to which the client should connect. When set, the host and port are ignored.

Type
List<String>
Default
none
Defined by
RabbitProperties
spring.rabbitmq.cache.channel.checkout-timeoutDuration to wait to obtain a channel if the cache size has been reached.
no default
Third party

Duration to wait to obtain a channel if the cache size has been reached. If 0, always create a new channel.

Type
Duration
Default
none
Defined by
RabbitProperties$Cache$Channel
spring.rabbitmq.cache.channel.sizeNumber of channels to retain in the cache.
no default
Third party

Number of channels to retain in the cache. When "check-timeout" > 0, max channels per connection.

Type
Integer
Default
none
Defined by
RabbitProperties$Cache$Channel
spring.rabbitmq.cache.connection.modeConnection factory cache mode.
channel
Third party

Connection factory cache mode.

Type
CachingConnectionFactory.CacheMode
Default
channel
Defined by
RabbitProperties$Cache$Connection
spring.rabbitmq.cache.connection.sizeNumber of connections to cache.
no default
Third party

Number of connections to cache. Only applies when mode is CONNECTION.

Type
Integer
Default
none
Defined by
RabbitProperties$Cache$Connection
spring.rabbitmq.channel-rpc-timeoutContinuation timeout for RPC calls in channels.
10m
Third party

Continuation timeout for RPC calls in channels. Set it to zero to wait forever.

Type
Duration
Default
10m
Defined by
RabbitProperties
spring.rabbitmq.connection-timeoutConnection timeout.
no default
Third party

Connection timeout. Set it to zero to wait forever.

Type
Duration
Default
none
Defined by
RabbitProperties
spring.rabbitmq.dynamicWhether to create an AmqpAdmin bean.
true
Third party

Whether to create an AmqpAdmin bean.

Type
Boolean
Default
true
spring.rabbitmq.hostRabbitMQ host.
localhost
Third party

RabbitMQ host. Ignored if an address is set.

Type
String
Default
localhost
Defined by
RabbitProperties
spring.rabbitmq.listener.direct.acknowledge-modeAcknowledge mode of container.
no default
Third party

Acknowledge mode of container.

Type
AcknowledgeMode
Default
none
Defined by
RabbitProperties$DirectContainer
spring.rabbitmq.listener.direct.auto-startupWhether to start the container automatically on startup.
true
Third party

Whether to start the container automatically on startup.

Type
Boolean
Default
true
Defined by
RabbitProperties$DirectContainer
spring.rabbitmq.listener.direct.consumers-per-queueNumber of consumers per queue.
no default
Third party

Number of consumers per queue.

Type
Integer
Default
none
Defined by
RabbitProperties$DirectContainer
spring.rabbitmq.listener.direct.de-batching-enabledWhether the container should present batched messages as discrete messages or call the listener with the batch.
true
Third party

Whether the container should present batched messages as discrete messages or call the listener with the batch.

Type
Boolean
Default
true
Defined by
RabbitProperties$DirectContainer
spring.rabbitmq.listener.direct.default-requeue-rejectedWhether rejected deliveries are re-queued by default.
no default
Third party

Whether rejected deliveries are re-queued by default.

Type
Boolean
Default
none
Defined by
RabbitProperties$DirectContainer
spring.rabbitmq.listener.direct.force-stopWhether the container (when stopped) should stop immediately after processing the current message or stop after processing all pre-fetched messages.
false
Third party

Whether the container (when stopped) should stop immediately after processing the current message or stop after processing all pre-fetched messages.

Type
Boolean
Default
false
Defined by
RabbitProperties$DirectContainer
spring.rabbitmq.listener.direct.idle-event-intervalHow often idle container events should be published.
no default
Third party

How often idle container events should be published.

Type
Duration
Default
none
Defined by
RabbitProperties$DirectContainer
spring.rabbitmq.listener.direct.missing-queues-fatalWhether to fail if the queues declared by the container are not available on the broker.
false
Third party

Whether to fail if the queues declared by the container are not available on the broker.

Type
Boolean
Default
false
Defined by
RabbitProperties$DirectContainer
spring.rabbitmq.listener.direct.observation-enabledWhether to enable observation.
false
Third party

Whether to enable observation.

Type
Boolean
Default
false
Defined by
RabbitProperties$DirectContainer
spring.rabbitmq.listener.direct.prefetchMaximum number of unacknowledged messages that can be outstanding at each consumer.
no default
Third party

Maximum number of unacknowledged messages that can be outstanding at each consumer.

Type
Integer
Default
none
Defined by
RabbitProperties$DirectContainer
spring.rabbitmq.listener.direct.retry.enabledWhether publishing retries are enabled.
false
Third party

Whether publishing retries are enabled.

Type
Boolean
Default
false
Defined by
RabbitProperties$ListenerRetry
spring.rabbitmq.listener.direct.retry.initial-intervalDuration between the first and second attempt to deliver a message.
1000ms
Third party

Duration between the first and second attempt to deliver a message.

Type
Duration
Default
1000ms
Defined by
RabbitProperties$ListenerRetry
spring.rabbitmq.listener.direct.retry.max-attempts
no default
Third partyDeprecated
Type
Long
Default
none
Deprecation
ERROR, replaced by spring.rabbitmq.listener.direct.retry.max-retries
spring.rabbitmq.listener.direct.retry.max-intervalMaximum duration between attempts.
10000ms
Third party

Maximum duration between attempts.

Type
Duration
Default
10000ms
Defined by
RabbitProperties$ListenerRetry
spring.rabbitmq.listener.direct.retry.max-retriesMaximum number of retry attempts to deliver a message.
3
Third party

Maximum number of retry attempts to deliver a message.

Type
Long
Default
3
Defined by
RabbitProperties$ListenerRetry
spring.rabbitmq.listener.direct.retry.multiplierMultiplier to apply to the previous retry interval.
1
Third party

Multiplier to apply to the previous retry interval.

Type
Double
Default
1
Defined by
RabbitProperties$ListenerRetry
spring.rabbitmq.listener.direct.retry.statelessWhether retries are stateless or stateful.
true
Third party

Whether retries are stateless or stateful.

Type
Boolean
Default
true
Defined by
RabbitProperties$ListenerRetry
spring.rabbitmq.listener.simple.acknowledge-modeAcknowledge mode of container.
no default
Third party

Acknowledge mode of container.

Type
AcknowledgeMode
Default
none
Defined by
RabbitProperties$SimpleContainer
spring.rabbitmq.listener.simple.auto-startupWhether to start the container automatically on startup.
true
Third party

Whether to start the container automatically on startup.

Type
Boolean
Default
true
Defined by
RabbitProperties$SimpleContainer
spring.rabbitmq.listener.simple.batch-sizeBatch size, expressed as the number of physical messages, to be used by the container.
no default
Third party

Batch size, expressed as the number of physical messages, to be used by the container.

Type
Integer
Default
none
Defined by
RabbitProperties$SimpleContainer
spring.rabbitmq.listener.simple.concurrencyMinimum number of listener invoker threads.
no default
Third party

Minimum number of listener invoker threads.

Type
Integer
Default
none
Defined by
RabbitProperties$SimpleContainer
spring.rabbitmq.listener.simple.consumer-batch-enabledWhether the container creates a batch of messages based on the 'receive-timeout' and 'batch-size'.
false
Third party

Whether the container creates a batch of messages based on the 'receive-timeout' and 'batch-size'. Coerces 'de-batching-enabled' to true to include the contents of a producer created batch in the batch as discrete records.

Type
Boolean
Default
false
Defined by
RabbitProperties$SimpleContainer
spring.rabbitmq.listener.simple.de-batching-enabledWhether the container should present batched messages as discrete messages or call the listener with the batch.
true
Third party

Whether the container should present batched messages as discrete messages or call the listener with the batch.

Type
Boolean
Default
true
Defined by
RabbitProperties$SimpleContainer
spring.rabbitmq.listener.simple.default-requeue-rejectedWhether rejected deliveries are re-queued by default.
no default
Third party

Whether rejected deliveries are re-queued by default.

Type
Boolean
Default
none
Defined by
RabbitProperties$SimpleContainer
spring.rabbitmq.listener.simple.force-stopWhether the container (when stopped) should stop immediately after processing the current message or stop after processing all pre-fetched messages.
false
Third party

Whether the container (when stopped) should stop immediately after processing the current message or stop after processing all pre-fetched messages.

Type
Boolean
Default
false
Defined by
RabbitProperties$SimpleContainer
spring.rabbitmq.listener.simple.idle-event-intervalHow often idle container events should be published.
no default
Third party

How often idle container events should be published.

Type
Duration
Default
none
Defined by
RabbitProperties$SimpleContainer
spring.rabbitmq.listener.simple.max-concurrencyMaximum number of listener invoker threads.
no default
Third party

Maximum number of listener invoker threads.

Type
Integer
Default
none
Defined by
RabbitProperties$SimpleContainer
spring.rabbitmq.listener.simple.missing-queues-fatalWhether to fail if the queues declared by the container are not available on the broker and/or whether to stop the container if one or more queues are deleted at runtime.
true
Third party

Whether to fail if the queues declared by the container are not available on the broker and/or whether to stop the container if one or more queues are deleted at runtime.

Type
Boolean
Default
true
Defined by
RabbitProperties$SimpleContainer
spring.rabbitmq.listener.simple.observation-enabledWhether to enable observation.
false
Third party

Whether to enable observation.

Type
Boolean
Default
false
Defined by
RabbitProperties$SimpleContainer
spring.rabbitmq.listener.simple.prefetchMaximum number of unacknowledged messages that can be outstanding at each consumer.
no default
Third party

Maximum number of unacknowledged messages that can be outstanding at each consumer.

Type
Integer
Default
none
Defined by
RabbitProperties$SimpleContainer
spring.rabbitmq.listener.simple.retry.enabledWhether publishing retries are enabled.
false
Third party

Whether publishing retries are enabled.

Type
Boolean
Default
false
Defined by
RabbitProperties$ListenerRetry
spring.rabbitmq.listener.simple.retry.initial-intervalDuration between the first and second attempt to deliver a message.
1000ms
Third party

Duration between the first and second attempt to deliver a message.

Type
Duration
Default
1000ms
Defined by
RabbitProperties$ListenerRetry
spring.rabbitmq.listener.simple.retry.max-attempts
no default
Third partyDeprecated
Type
Long
Default
none
Deprecation
ERROR, replaced by spring.rabbitmq.listener.simple.retry.max-retries
spring.rabbitmq.listener.simple.retry.max-intervalMaximum duration between attempts.
10000ms
Third party

Maximum duration between attempts.

Type
Duration
Default
10000ms
Defined by
RabbitProperties$ListenerRetry
spring.rabbitmq.listener.simple.retry.max-retriesMaximum number of retry attempts to deliver a message.
3
Third party

Maximum number of retry attempts to deliver a message.

Type
Long
Default
3
Defined by
RabbitProperties$ListenerRetry
spring.rabbitmq.listener.simple.retry.multiplierMultiplier to apply to the previous retry interval.
1
Third party

Multiplier to apply to the previous retry interval.

Type
Double
Default
1
Defined by
RabbitProperties$ListenerRetry
spring.rabbitmq.listener.simple.retry.statelessWhether retries are stateless or stateful.
true
Third party

Whether retries are stateless or stateful.

Type
Boolean
Default
true
Defined by
RabbitProperties$ListenerRetry
spring.rabbitmq.listener.simple.transaction-size
no default
Third partyDeprecated
Type
Integer
Default
none
Deprecation
ERROR, no replacement
spring.rabbitmq.listener.stream.native-listenerWhether the container will support listeners that consume native stream messages instead of Spring AMQP messages.
false
Third party

Whether the container will support listeners that consume native stream messages instead of Spring AMQP messages.

Type
Boolean
Default
false
Defined by
RabbitProperties$StreamContainer
spring.rabbitmq.listener.stream.observation-enabledWhether to enable observation.
false
Third party

Whether to enable observation.

Type
Boolean
Default
false
Defined by
RabbitProperties$StreamContainer
spring.rabbitmq.listener.typeListener container type.
simple
Third party

Listener container type.

Type
RabbitProperties.ContainerType
Default
simple
Defined by
RabbitProperties$Listener
spring.rabbitmq.max-inbound-message-body-sizeMaximum size of the body of inbound (received) messages.
64MB
Third party

Maximum size of the body of inbound (received) messages.

Type
DataSize
Default
64MB
Defined by
RabbitProperties
spring.rabbitmq.passwordLogin to authenticate against the broker.
guest
Third party

Login to authenticate against the broker.

Type
String
Default
guest
Defined by
RabbitProperties
spring.rabbitmq.portRabbitMQ port.
no default
Third party

RabbitMQ port. Ignored if an address is set. Default to 5672, or 5671 if SSL is enabled.

Type
Integer
Default
none
Defined by
RabbitProperties
spring.rabbitmq.publisher-confirm-typeType of publisher confirms to use.
no default
Third party

Type of publisher confirms to use.

Type
CachingConnectionFactory.ConfirmType
Default
none
Defined by
RabbitProperties
spring.rabbitmq.publisher-confirms
no default
Third partyDeprecated
Type
Boolean
Default
none
Deprecation
ERROR, no replacement
spring.rabbitmq.publisher-returnsWhether to enable publisher returns.
false
Third party

Whether to enable publisher returns.

Type
Boolean
Default
false
Defined by
RabbitProperties
spring.rabbitmq.requested-channel-maxNumber of channels per connection requested by the client.
2047
Third party

Number of channels per connection requested by the client. Use 0 for unlimited.

Type
Integer
Default
2047
Defined by
RabbitProperties
spring.rabbitmq.requested-heartbeatRequested heartbeat timeout; zero for none.
no default
Third party

Requested heartbeat timeout; zero for none. If a duration suffix is not specified, seconds will be used.

Type
Duration
Default
none
Defined by
RabbitProperties
spring.rabbitmq.ssl.algorithmSSL algorithm to use.
no default
Third party

SSL algorithm to use. By default, configured by the Rabbit client library.

Type
String
Default
none
Defined by
RabbitProperties$Ssl
spring.rabbitmq.ssl.bundleSSL bundle name.
no default
Third party

SSL bundle name.

Type
String
Default
none
Defined by
RabbitProperties$Ssl
spring.rabbitmq.ssl.enabledWhether to enable SSL support.
no default
Third party

Whether to enable SSL support. Determined automatically if an address is provided with the protocol (amqp:// vs. amqps://).

Type
Boolean
Default
none
Defined by
RabbitProperties$Ssl
spring.rabbitmq.ssl.key-storePath to the key store that holds the SSL certificate.
no default
Third party

Path to the key store that holds the SSL certificate.

Type
String
Default
none
Defined by
RabbitProperties$Ssl
spring.rabbitmq.ssl.key-store-algorithmKey store algorithm.
SunX509
Third party

Key store algorithm.

Type
String
Default
SunX509
Defined by
RabbitProperties$Ssl
spring.rabbitmq.ssl.key-store-passwordPassword used to access the key store.
no default
Third party

Password used to access the key store.

Type
String
Default
none
Defined by
RabbitProperties$Ssl
spring.rabbitmq.ssl.key-store-typeKey store type.
PKCS12
Third party

Key store type.

Type
String
Default
PKCS12
Defined by
RabbitProperties$Ssl
spring.rabbitmq.ssl.trust-storeTrust store that holds SSL certificates.
no default
Third party

Trust store that holds SSL certificates.

Type
String
Default
none
Defined by
RabbitProperties$Ssl
spring.rabbitmq.ssl.trust-store-algorithmTrust store algorithm.
SunX509
Third party

Trust store algorithm.

Type
String
Default
SunX509
Defined by
RabbitProperties$Ssl
spring.rabbitmq.ssl.trust-store-passwordPassword used to access the trust store.
no default
Third party

Password used to access the trust store.

Type
String
Default
none
Defined by
RabbitProperties$Ssl
spring.rabbitmq.ssl.trust-store-typeTrust store type.
JKS
Third party

Trust store type.

Type
String
Default
JKS
Defined by
RabbitProperties$Ssl
spring.rabbitmq.ssl.validate-server-certificateWhether to enable server side certificate validation.
true
Third party

Whether to enable server side certificate validation.

Type
Boolean
Default
true
Defined by
RabbitProperties$Ssl
spring.rabbitmq.ssl.verify-hostnameWhether to enable hostname verification.
true
Third partyDeprecated

Whether to enable hostname verification.

Type
Boolean
Default
true
Defined by
RabbitProperties$Ssl
Deprecation
WARNING, no replacement
spring.rabbitmq.stream.hostHost of a RabbitMQ instance with the Stream plugin enabled.
localhost
Third party

Host of a RabbitMQ instance with the Stream plugin enabled.

Type
String
Default
localhost
Defined by
RabbitProperties$Stream
spring.rabbitmq.stream.nameName of the stream.
no default
Third party

Name of the stream.

Type
String
Default
none
Defined by
RabbitProperties$Stream
spring.rabbitmq.stream.passwordLogin password to authenticate to the broker.
no default
Third party

Login password to authenticate to the broker. When not set spring.rabbitmq.password is used.

Type
String
Default
none
Defined by
RabbitProperties$Stream
spring.rabbitmq.stream.portStream port of a RabbitMQ instance with the Stream plugin enabled.
no default
Third party

Stream port of a RabbitMQ instance with the Stream plugin enabled.

Type
Integer
Default
none
Defined by
RabbitProperties$Stream
spring.rabbitmq.stream.ssl.bundleSSL bundle name.
no default
Third party

SSL bundle name.

Type
String
Default
none
Defined by
RabbitProperties$Stream$Ssl
spring.rabbitmq.stream.ssl.enabledWhether to enable SSL support.
no default
Third party

Whether to enable SSL support. Enabled automatically if "bundle" is provided.

Type
Boolean
Default
none
Defined by
RabbitProperties$Stream$Ssl
spring.rabbitmq.stream.usernameLogin user to authenticate to the broker.
no default
Third party

Login user to authenticate to the broker. When not set, spring.rabbitmq.username is used.

Type
String
Default
none
Defined by
RabbitProperties$Stream
spring.rabbitmq.stream.virtual-hostVirtual host of a RabbitMQ instance with the Stream plugin enabled.
no default
Third party

Virtual host of a RabbitMQ instance with the Stream plugin enabled. When not set, spring.rabbitmq.virtual-host is used.

Type
String
Default
none
Defined by
RabbitProperties$Stream
spring.rabbitmq.template.allowed-list-patternsSimple patterns for allowable packages/classes for deserialization.
no default
Third party

Simple patterns for allowable packages/classes for deserialization.

Type
List<String>
Default
none
Defined by
RabbitProperties$Template
spring.rabbitmq.template.default-receive-queueName of the default queue to receive messages from when none is specified explicitly.
no default
Third party

Name of the default queue to receive messages from when none is specified explicitly.

Type
String
Default
none
Defined by
RabbitProperties$Template
spring.rabbitmq.template.exchangeName of the default exchange to use for send operations.
no default
Third party

Name of the default exchange to use for send operations.

Type
String
Default
none
Defined by
RabbitProperties$Template
spring.rabbitmq.template.mandatoryWhether to enable mandatory messages.
no default
Third party

Whether to enable mandatory messages.

Type
Boolean
Default
none
Defined by
RabbitProperties$Template
spring.rabbitmq.template.observation-enabledWhether to enable observation.
false
Third party

Whether to enable observation.

Type
Boolean
Default
false
Defined by
RabbitProperties$Template
spring.rabbitmq.template.queue
no default
Third partyDeprecated
Type
String
Default
none
Deprecation
ERROR, replaced by spring.rabbitmq.template.default-receive-queue
spring.rabbitmq.template.receive-timeoutTimeout for receive() operations.
no default
Third party

Timeout for receive() operations.

Type
Duration
Default
none
Defined by
RabbitProperties$Template
spring.rabbitmq.template.reply-timeoutTimeout for sendAndReceive() operations.
no default
Third party

Timeout for sendAndReceive() operations.

Type
Duration
Default
none
Defined by
RabbitProperties$Template
spring.rabbitmq.template.retry.enabledWhether publishing retries are enabled.
false
Third party

Whether publishing retries are enabled.

Type
Boolean
Default
false
Defined by
RabbitProperties$Retry
spring.rabbitmq.template.retry.initial-intervalDuration between the first and second attempt to deliver a message.
1000ms
Third party

Duration between the first and second attempt to deliver a message.

Type
Duration
Default
1000ms
Defined by
RabbitProperties$Retry
spring.rabbitmq.template.retry.max-attempts
no default
Third partyDeprecated
Type
Long
Default
none
Deprecation
ERROR, replaced by spring.rabbitmq.template.retry.max-retries
spring.rabbitmq.template.retry.max-intervalMaximum duration between attempts.
10000ms
Third party

Maximum duration between attempts.

Type
Duration
Default
10000ms
Defined by
RabbitProperties$Retry
spring.rabbitmq.template.retry.max-retriesMaximum number of retry attempts to deliver a message.
3
Third party

Maximum number of retry attempts to deliver a message.

Type
Long
Default
3
Defined by
RabbitProperties$Retry
spring.rabbitmq.template.retry.multiplierMultiplier to apply to the previous retry interval.
1
Third party

Multiplier to apply to the previous retry interval.

Type
Double
Default
1
Defined by
RabbitProperties$Retry
spring.rabbitmq.template.routing-keyValue of a default routing key to use for send operations.
no default
Third party

Value of a default routing key to use for send operations.

Type
String
Default
none
Defined by
RabbitProperties$Template
spring.rabbitmq.usernameLogin user to authenticate to the broker.
guest
Third party

Login user to authenticate to the broker.

Type
String
Default
guest
Defined by
RabbitProperties
spring.rabbitmq.virtual-hostVirtual host to use when connecting to the broker.
no default
Third party

Virtual host to use when connecting to the broker.

Type
String
Default
none
Defined by
RabbitProperties

Required settings may be needed to activate or affect the feature; review them even when they have a default. Optional settings only need to be set to change a default or to turn on the behavior they control. Third party settings belong to libraries such as Spring Boot that CAS builds on; their own documentation may have more detail.

Notes on configuration

Configuration Metadata

The collection of configuration properties listed in this section are automatically generated from the CAS source and components that contain the actual field definitions, types, descriptions, modules, etc. This metadata may not always be 100% accurate, or could be lacking details and sufficient explanations.

Be Selective

This section is meant as a guide only. Do NOT copy/paste the entire collection of settings into your CAS configuration; rather pick only the properties that you need. Do NOT enable settings unless you are certain of their purpose and do NOT copy settings into your configuration only to keep them as reference. All these ideas lead to upgrade headaches, maintenance nightmares and premature aging.

YAGNI

Note that for nearly ALL use cases, declaring and configuring properties listed here is sufficient. You should NOT have to explicitly massage a CAS XML/Java/etc configuration file to design an authentication handler, create attribute release policies, etc. CAS at runtime will auto-configure all required changes for you. If you are unsure about the meaning of a given CAS setting, do NOT turn it on without hesitation. Review the codebase or better yet, ask questions to clarify the intended behavior.

Naming Convention

Property names can be specified in very relaxed terms. For instance cas.someProperty, cas.some-property, cas.some_property are all valid names. While all forms are accepted by CAS, there are certain components (in CAS and other frameworks used) whose activation at runtime is conditional on a property value, where this property is required to have been specified in CAS configuration using kebab case. This is both true for properties that are owned by CAS as well as those that might be presented to the system via an external library or framework such as Spring Boot, etc.

:information_source: Note

When possible, properties should be stored in lower-case kebab format, such as cas.property-name=value. The only possible exception to this rule is when naming actuator endpoints; The name of the actuator endpoints (i.e. ssoSessions) MUST remain in camelCase mode.

Settings and properties that are controlled by the CAS platform directly always begin with the prefix cas. All other settings are controlled and provided to CAS via other underlying frameworks and may have their own schemas and syntax. BE CAREFUL with the distinction. Unrecognized properties are rejected by CAS and/or frameworks upon which CAS depends. This means if you somehow misspell a property definition or fail to adhere to the dot-notation syntax and such, your setting is entirely refused by CAS and likely the feature it controls will never be activated in the way you intend.

Validation

Configuration properties are automatically validated on CAS startup to report issues with configuration binding, especially if defined CAS settings cannot be recognized or validated by the configuration schema. Additional validation processes are also handled via Configuration Metadata and property migrations applied automatically on startup by Spring Boot and family.

Indexed Settings

CAS settings able to accept multiple values are typically documented with an index, such as cas.some.setting[0]=value. The index [0] is meant to be incremented by the adopter to allow for distinct multiple configuration blocks.

Troubleshooting

To enable additional logging, modify the logging configuration file to add the following:

1
2
3
4
<Logger name="org.springframework.amqp" level="debug" additivity="false">
    <AppenderRef ref="casConsole"/>
    <AppenderRef ref="casFile"/>
</Logger>