diff --git a/docs/src/main/asciidoc/overview.adoc b/docs/src/main/asciidoc/overview.adoc index 9f26856bb..230adf8d0 100644 --- a/docs/src/main/asciidoc/overview.adoc +++ b/docs/src/main/asciidoc/overview.adoc @@ -606,6 +606,47 @@ Usually, applications may use principals that do not have administrative rights Consequently, relying on Spring Cloud Stream to create/modify topics may fail. In secure environments, we strongly recommend creating topics and managing ACLs administratively by using Kafka tooling. +====== Multi-binder configuration and JAAS + +When connecting to multiple clusters in which each one requires separate JAAS configuration, then set the JAAS configuration using the property `sasl.jaas.config`. +When this property is present in the applicaiton, it takes precedence over the other strategies mentioned above. +See this https://cwiki.apache.org/confluence/display/KAFKA/KIP-85%3A+Dynamic+JAAS+configuration+for+Kafka+clients[KIP-85] for more details. + +For example, if you have two clusters in your application with separate JAAS configuration, then the following is a template that you can use: + +``` +spring.cloud.stream: + binders: + kafka1: + type: kafka + environment: + spring: + cloud: + stream: + kafka: + binder: + brokers: localhost:9092 + configuration.sasl.jaas.config: "org.apache.kafka.common.security.plain.PlainLoginModule required username=\"admin\" password=\"admin-secret\";" + kafka2: + type: kafka + environment: + spring: + cloud: + stream: + kafka: + binder: + brokers: localhost:9093 + configuration.sasl.jaas.config: "org.apache.kafka.common.security.plain.PlainLoginModule required username=\"user1\" password=\"user1-secret\";" + kafka.binder: + configuration: + security.protocol: SASL_PLAINTEXT + sasl.mechanism: PLAIN +``` + +Note that both the Kafka clusters, and the `sasl.jaas.config` values for each of them are different in the above configuration. + +See this https://github.com/spring-cloud/spring-cloud-stream-samples/tree/main/multi-binder-samples/kafka-multi-binder-jaas[sample application] for more details on how to setup and run such an application. + [[pause-resume]] ===== Example: Pausing and Resuming the Consumer