This is an automated email from the ASF dual-hosted git repository.

claudio4j pushed a commit to branch fix_kafkaoauth
in repository https://gitbox.apache.org/repos/asf/camel-spring-boot-examples.git

commit 03836732f934e5a084cf36936c8e92a801f93a21
Author: Claudio Miranda <[email protected]>
AuthorDate: Sun Jan 19 15:46:12 2025 +0000

    Change kafka-oauth to use podman and simplify the quickstart procedures.
---
 README.adoc                                        |   8 +-
 kafka-oauth/README.adoc                            |  38 +++----
 .../certificates/ca-truststore.p12                 | Bin
 .../{docker => containers}/certificates/ca.crt     |   0
 .../{docker => containers}/certificates/ca.key     |   0
 .../{docker => containers}/certificates/gen-ca.sh  |   0
 .../kafka/certificates/cluster.keystore.p12        | Bin
 .../kafka/certificates/cluster.truststore.p12      | Bin
 .../kafka/certificates/gen-kafka-certs.sh          |   0
 .../kafka/config/ca-truststore.p12                 | Bin
 .../kafka/config/log4j.properties                  |   0
 .../kafka/scripts}/functions.sh                    |   0
 .../kafka/scripts}/simple_kafka_config.sh          |   0
 .../kafka => containers/kafka/scripts}/start.sh    |   0
 .../keycloak/certificates/ca-truststore.p12        | Bin
 .../keycloak/certificates/gen-keycloak-certs.sh    |   0
 .../certificates/keycloak.server.keystore.p12      | Bin
 .../{docker => containers}/keycloak/compose.yml    |   0
 .../keycloak/realms/demo-realm.json                |   0
 kafka-oauth/docker/kafka-oauth-strimzi/compose.yml |  79 ---------------
 .../docker/kafka-oauth-strimzi/kafka/Dockerfile    |  12 ---
 kafka-oauth/pom.xml                                | 112 ---------------------
 .../src/main/resources/application.properties      |   2 +-
 kafka-oauth/start_kafka.sh                         |  43 ++++++++
 kafka-oauth/start_keycloak.sh                      |  17 ++++
 25 files changed, 80 insertions(+), 231 deletions(-)

diff --git a/README.adoc b/README.adoc
index fecc37f..d42734a 100644
--- a/README.adoc
+++ b/README.adoc
@@ -98,7 +98,7 @@ Number of Examples: 61 (0 deprecated)
 | link:fhir/readme.adoc[Fhir] (fhir) | Health Care | An example showing how to 
work with Camel, FHIR and Spring Boot
 
 | link:fhir-auth-tx/readme.adoc[Fhir Auth Tx] (fhir-auth-tx) | Health Care | 
An example showing how to work with Camel, FHIR Authorization, FHIR Transaction 
and Spring Boot
-    
+
 
 | link:validator/readme.adoc[Validator Spring Boot] (validator) | Input/Output 
Type Contract | An example showing how to work with declarative validation and 
Spring Boot
 
@@ -114,7 +114,7 @@ Number of Examples: 61 (0 deprecated)
 | link:metrics/README.adoc[Metrics] (metrics) | Management and Monitoring | An 
example showing how to work with Camel and Spring Boot and report metrics to 
Graphite
 
 | link:observation/README.adoc[Micrometer Observation] (observation) | 
Management and Monitoring | An example showing how to trace incoming and 
outgoing messages from Camel with Micrometer Observation
-    
+
 
 | link:opentelemetry/README.adoc[OpenTelemetry] (opentelemetry) | Management 
and Monitoring | An example showing how to use Camel with OpenTelemetry
 
@@ -128,6 +128,8 @@ Number of Examples: 61 (0 deprecated)
 
 | link:kafka-avro/README.adoc[Kafka Avro] (kafka-avro) | Messaging | An 
example for Kafka avro
 
+| link:kafka-oauth/README.adoc[Kafka OAuth] (kafka-oauth) | Messaging | An 
example for Kafka authentication using OAuth
+
 | link:kafka-offsetrepository/README.adoc[Kafka Offsetrepository] 
(kafka-offsetrepository) | Messaging | An example for Kafka offsetrepository
 
 | link:paho-mqtt5-shared-subscriptions/README.adoc[Paho Mqtt5 Shared 
Subscriptions] (paho-mqtt5-shared-subscriptions) | Messaging | An example 
showing  how to set up multiple mqtt5 consumers that use shared subscription 
feature of MQTT5
@@ -139,7 +141,7 @@ Number of Examples: 61 (0 deprecated)
 | link:widget-gadget/README.adoc[Widget Gadget] (widget-gadget) | Messaging | 
The widget and gadget example from EIP book, running on Spring Boot
 
 | link:reactive-streams/readme.adoc[Reactive Streams] (reactive-streams) | 
Reactive | An example that shows how Camel can exchange data using reactive 
streams with Spring Boot reactor
-    
+
 
 | link:http-ssl/README.adoc[Http Ssl] (http-ssl) | Rest | An example showing 
the Camel HTTP component with Spring Boot and SSL
 
diff --git a/kafka-oauth/README.adoc b/kafka-oauth/README.adoc
index f76aacf..d975a7b 100644
--- a/kafka-oauth/README.adoc
+++ b/kafka-oauth/README.adoc
@@ -2,9 +2,9 @@
 
 === Introduction
 
-An example which shows how to integrate 
https://camel.apache.org/components/next/kafka-component.html[Camel with Kafka] 
with OAuth authentication using a client secret. The authentication is handled 
by Keycloak.
+An example that shows how to integrate 
https://camel.apache.org/components/next/kafka-component.html[Camel with Kafka] 
with OAuth authentication using a client secret. The authentication is handled 
by Keycloak.
 
-This example requires docker-compose as it will build and run a keycloak and 
kafka broker (setup with kraft mode). 
+This example requires podman.
 
 On the Kafka side it uses 
https://github.com/strimzi/strimzi-kafka-oauth[Strimzi Oauth for Apache Kafka], 
this library must also be set on the client side.
 
@@ -20,7 +20,7 @@ camel.component.kafka.sasl-jaas-config = 
org.apache.kafka.common.security.oauthb
   oauth.client.id="kafka-producer-client" \
   oauth.client.secret="kafka-producer-client-secret" \
   oauth.username.claim="preferred_username" \
-  oauth.ssl.truststore.location="docker/certificates/ca-truststore.p12" \
+  oauth.ssl.truststore.location="containers/certificates/ca-truststore.p12" \
   oauth.ssl.truststore.type="pkcs12" \
   oauth.ssl.truststore.password="changeit" \
   
oauth.token.endpoint.uri="https://keycloak:8443/realms/demo/protocol/openid-connect/token";
 ;
@@ -31,24 +31,16 @@ 
camel.component.kafka.additional-properties[sasl.login.callback.handler.class]=i
 
 * Set the hosts in /etc/hosts
 
-We have to set the IP addresses in /etc/hosts (check your OS how to do it), 
verify the current IP address and correctly set it as the example shows.
+We have to set the IP addresses in /etc/hosts (check your OS how to do it), 
verify the current IP address and correctly set it as the example shows. This 
is essential for the client application to reach keycloak and kafka hosts. In a 
production scenario those hosts names is going to be resolved by DNS.
 ----
 192.168.0.104   keycloak
 192.168.0.104   kafka
 ----
 
-* Build the project
+* Launch the Keycloak server. Note that the scripts runs a podman container 
with `host` network, so the keycloak and kafka server shares the same network 
as the client, this is for demo purposes only.
 
-This command will download the required Strimzi OAuth libraries for Kafka and 
add it to the Kafka Broker directory, it will also build the camel spring boot 
example.
 ----
-mvn package
-----
-
-* Launch the Keycloak server
-
-----
-cd docker
-docker-compose -f keycloak/compose.yml up 
+./start_keycloak.sh
 ----
 
 It must show the `demo` realm was imported successfully.
@@ -61,19 +53,18 @@ It must show the `demo` realm was imported successfully.
 It also shows the server started.
 ----
 [io.quarkus] (main) Keycloak 26.0.8 on JVM (powered by Quarkus 3.15.1) started 
in 9.169s. Listening on: http://0.0.0.0:8080 and https://0.0.0.0:8443
-[io.quarkus] (main) Profile prod activated. 
+[io.quarkus] (main) Profile prod activated.
 [io.quarkus] (main) Installed features: [agroal, cdi, hibernate-orm, jdbc-h2, 
keycloak, narayana-jta, opentelemetry, reactive-routes, rest, rest-jackson, 
smallrye-context-propagation, vertx]
 ----
 
 * Launch the Kafka broker
 
-Open another terminal console and go to the docker directory:
+Open another terminal console and launch kafka broker:
 ----
-cd docker
-docker-compose -f kafka-oauth-strimzi/compose.yml up --build
+./start_kafka.sh
 ----
 
-It should show the kafka broker authenticated to the keycloak server using the 
kafka-broker client id.
+It should show the kafka broker authenticates to the keycloak server using the 
`kafka-broker` client id.
 ----
 loginWithClientSecret() - tokenEndpointUrl: 
http://keycloak:8080/realms/demo/protocol/openid-connect/token, clientId: 
kafka-broker, clientSecret: k*********, scope: null, audience: null, 
connectTimeout: 20, readTimeout
 : 60, retries: 0, retryPauseMillis: 0 
(io.strimzi.kafka.oauth.common.OAuthAuthenticator)
@@ -82,16 +73,15 @@ loginWithClientSecret() - tokenEndpointUrl: 
http://keycloak:8080/realms/demo/pro
 It should show the kafka broker started
 ----
 Kafka version: 3.9.0 (org.apache.kafka.common.utils.AppInfoParser)
-
 [KafkaRaftServer nodeId=1] Kafka Server started (kafka.server.KafkaRaftServer)
 ----
 
 === Run the camel example
 
-As the project was already built, it's ready to run:
+Build and run the quickstart.
 
 ----
-mvn spring-boot:run
+mvn compile spring-boot:run
 ----
 
 It should display the kafka OAuth settings, example:
@@ -116,10 +106,10 @@ Press `Ctrl-C` to exit.
 
 === Help and contributions
 
-If you hit any problem using Camel or have some feedback, 
+If you hit any problem using Camel or have some feedback,
 then please https://camel.apache.org/community/support/[let us know].
 
-We also love contributors, 
+We also love contributors,
 so https://camel.apache.org/community/contributing/[get involved] :-)
 
 The Camel riders!
diff --git a/kafka-oauth/docker/certificates/ca-truststore.p12 
b/kafka-oauth/containers/certificates/ca-truststore.p12
similarity index 100%
rename from kafka-oauth/docker/certificates/ca-truststore.p12
rename to kafka-oauth/containers/certificates/ca-truststore.p12
diff --git a/kafka-oauth/docker/certificates/ca.crt 
b/kafka-oauth/containers/certificates/ca.crt
similarity index 100%
rename from kafka-oauth/docker/certificates/ca.crt
rename to kafka-oauth/containers/certificates/ca.crt
diff --git a/kafka-oauth/docker/certificates/ca.key 
b/kafka-oauth/containers/certificates/ca.key
similarity index 100%
rename from kafka-oauth/docker/certificates/ca.key
rename to kafka-oauth/containers/certificates/ca.key
diff --git a/kafka-oauth/docker/certificates/gen-ca.sh 
b/kafka-oauth/containers/certificates/gen-ca.sh
similarity index 100%
rename from kafka-oauth/docker/certificates/gen-ca.sh
rename to kafka-oauth/containers/certificates/gen-ca.sh
diff --git 
a/kafka-oauth/docker/kafka-oauth-strimzi/kafka/certificates/cluster.keystore.p12
 b/kafka-oauth/containers/kafka/certificates/cluster.keystore.p12
similarity index 100%
rename from 
kafka-oauth/docker/kafka-oauth-strimzi/kafka/certificates/cluster.keystore.p12
rename to kafka-oauth/containers/kafka/certificates/cluster.keystore.p12
diff --git 
a/kafka-oauth/docker/kafka-oauth-strimzi/kafka/certificates/cluster.truststore.p12
 b/kafka-oauth/containers/kafka/certificates/cluster.truststore.p12
similarity index 100%
rename from 
kafka-oauth/docker/kafka-oauth-strimzi/kafka/certificates/cluster.truststore.p12
rename to kafka-oauth/containers/kafka/certificates/cluster.truststore.p12
diff --git 
a/kafka-oauth/docker/kafka-oauth-strimzi/kafka/certificates/gen-kafka-certs.sh 
b/kafka-oauth/containers/kafka/certificates/gen-kafka-certs.sh
similarity index 100%
rename from 
kafka-oauth/docker/kafka-oauth-strimzi/kafka/certificates/gen-kafka-certs.sh
rename to kafka-oauth/containers/kafka/certificates/gen-kafka-certs.sh
diff --git 
a/kafka-oauth/docker/kafka-oauth-strimzi/kafka/config/ca-truststore.p12 
b/kafka-oauth/containers/kafka/config/ca-truststore.p12
similarity index 100%
rename from 
kafka-oauth/docker/kafka-oauth-strimzi/kafka/config/ca-truststore.p12
rename to kafka-oauth/containers/kafka/config/ca-truststore.p12
diff --git 
a/kafka-oauth/docker/kafka-oauth-strimzi/kafka/config/log4j.properties 
b/kafka-oauth/containers/kafka/config/log4j.properties
similarity index 100%
rename from kafka-oauth/docker/kafka-oauth-strimzi/kafka/config/log4j.properties
rename to kafka-oauth/containers/kafka/config/log4j.properties
diff --git a/kafka-oauth/docker/kafka-oauth-strimzi/kafka/functions.sh 
b/kafka-oauth/containers/kafka/scripts/functions.sh
similarity index 100%
rename from kafka-oauth/docker/kafka-oauth-strimzi/kafka/functions.sh
rename to kafka-oauth/containers/kafka/scripts/functions.sh
diff --git 
a/kafka-oauth/docker/kafka-oauth-strimzi/kafka/simple_kafka_config.sh 
b/kafka-oauth/containers/kafka/scripts/simple_kafka_config.sh
similarity index 100%
rename from kafka-oauth/docker/kafka-oauth-strimzi/kafka/simple_kafka_config.sh
rename to kafka-oauth/containers/kafka/scripts/simple_kafka_config.sh
diff --git a/kafka-oauth/docker/kafka-oauth-strimzi/kafka/start.sh 
b/kafka-oauth/containers/kafka/scripts/start.sh
similarity index 100%
rename from kafka-oauth/docker/kafka-oauth-strimzi/kafka/start.sh
rename to kafka-oauth/containers/kafka/scripts/start.sh
diff --git a/kafka-oauth/docker/keycloak/certificates/ca-truststore.p12 
b/kafka-oauth/containers/keycloak/certificates/ca-truststore.p12
similarity index 100%
rename from kafka-oauth/docker/keycloak/certificates/ca-truststore.p12
rename to kafka-oauth/containers/keycloak/certificates/ca-truststore.p12
diff --git a/kafka-oauth/docker/keycloak/certificates/gen-keycloak-certs.sh 
b/kafka-oauth/containers/keycloak/certificates/gen-keycloak-certs.sh
similarity index 100%
rename from kafka-oauth/docker/keycloak/certificates/gen-keycloak-certs.sh
rename to kafka-oauth/containers/keycloak/certificates/gen-keycloak-certs.sh
diff --git 
a/kafka-oauth/docker/keycloak/certificates/keycloak.server.keystore.p12 
b/kafka-oauth/containers/keycloak/certificates/keycloak.server.keystore.p12
similarity index 100%
rename from 
kafka-oauth/docker/keycloak/certificates/keycloak.server.keystore.p12
rename to 
kafka-oauth/containers/keycloak/certificates/keycloak.server.keystore.p12
diff --git a/kafka-oauth/docker/keycloak/compose.yml 
b/kafka-oauth/containers/keycloak/compose.yml
similarity index 100%
rename from kafka-oauth/docker/keycloak/compose.yml
rename to kafka-oauth/containers/keycloak/compose.yml
diff --git a/kafka-oauth/docker/keycloak/realms/demo-realm.json 
b/kafka-oauth/containers/keycloak/realms/demo-realm.json
similarity index 100%
rename from kafka-oauth/docker/keycloak/realms/demo-realm.json
rename to kafka-oauth/containers/keycloak/realms/demo-realm.json
diff --git a/kafka-oauth/docker/kafka-oauth-strimzi/compose.yml 
b/kafka-oauth/docker/kafka-oauth-strimzi/compose.yml
deleted file mode 100644
index 46831ca..0000000
--- a/kafka-oauth/docker/kafka-oauth-strimzi/compose.yml
+++ /dev/null
@@ -1,79 +0,0 @@
-services:
-
-  #################################### KAFKA BROKER 
####################################
-  kafka:
-    image: strimzi/example-kafka
-    build: kafka/target
-    container_name: kafka
-    ports:
-      - 9091:9091
-      - 9092:9092
-
-      # javaagent debug port
-      #- 5005:5005
-    command:
-      - /bin/bash
-      - -c
-      - cd /opt/kafka && ./start.sh --kraft
-
-    environment:
-
-      # Java Debug
-      #KAFKA_DEBUG: y
-      #DEBUG_SUSPEND_FLAG: y
-      #JAVA_DEBUG_PORT: 5005
-
-      #
-      # KAFKA Configuration
-      #
-      LOG_DIR: /home/kafka/logs
-      KAFKA_PROCESS_ROLES: "broker,controller"
-      KAFKA_NODE_ID: "1"
-      KAFKA_CONTROLLER_QUORUM_VOTERS: "1@kafka:9091"
-      KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER
-      KAFKA_SASL_MECHANISM_CONTROLLER_PROTOCOL: PLAIN
-
-      KAFKA_LISTENERS: "CONTROLLER://kafka:9091,CLIENT://kafka:9092"
-      KAFKA_ADVERTISED_LISTENERS: "CLIENT://kafka:9092"
-      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: 
"CONTROLLER:SASL_PLAINTEXT,CLIENT:SASL_PLAINTEXT"
-
-      KAFKA_INTER_BROKER_LISTENER_NAME: CLIENT
-      KAFKA_SASL_MECHANISM_INTER_BROKER_PROTOCOL: OAUTHBEARER
-
-      KAFKA_PRINCIPAL_BUILDER_CLASS: 
"io.strimzi.kafka.oauth.server.OAuthKafkaPrincipalBuilder"
-
-      KAFKA_LISTENER_NAME_CONTROLLER_SASL_ENABLED_MECHANISMS: PLAIN
-      KAFKA_LISTENER_NAME_CONTROLLER_PLAIN_SASL_JAAS_CONFIG: 
"org.apache.kafka.common.security.plain.PlainLoginModule required    
username=\"admin\"    password=\"admin-password\"    
user_admin=\"admin-password\"    user_bobby=\"bobby-secret\" ;"
-
-      KAFKA_LISTENER_NAME_CLIENT_SASL_ENABLED_MECHANISMS: OAUTHBEARER
-      KAFKA_LISTENER_NAME_CLIENT_OAUTHBEARER_SASL_JAAS_CONFIG: 
"org.apache.kafka.common.security.oauthbearer.OAuthBearerLoginModule required;"
-      
KAFKA_LISTENER_NAME_CLIENT_OAUTHBEARER_SASL_LOGIN_CALLBACK_HANDLER_CLASS: 
io.strimzi.kafka.oauth.client.JaasClientOauthLoginCallbackHandler
-      
KAFKA_LISTENER_NAME_CLIENT_OAUTHBEARER_SASL_SERVER_CALLBACK_HANDLER_CLASS: 
io.strimzi.kafka.oauth.server.JaasServerOauthValidatorCallbackHandler
-
-      KAFKA_SUPER_USERS: "User:admin,User:service-account-kafka-broker"
-
-      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
-
-
-      #
-      # Strimzi OAuth Configuration
-      #
-
-      # Authentication config
-      OAUTH_CLIENT_ID: "kafka-broker"
-      OAUTH_CLIENT_SECRET: "kafka-broker-secret"
-      OAUTH_TOKEN_ENDPOINT_URI: 
"http://${KEYCLOAK_HOST:-keycloak}:8080/realms/${REALM:-demo}/protocol/openid-connect/token";
-
-      # Validation config
-      OAUTH_VALID_ISSUER_URI: 
"https://${KEYCLOAK_HOST:-keycloak}:8443/realms/${REALM:-demo}";
-      OAUTH_JWKS_ENDPOINT_URI: 
"http://${KEYCLOAK_HOST:-keycloak}:8080/realms/${REALM:-demo}/protocol/openid-connect/certs";
-      #OAUTH_INTROSPECTION_ENDPOINT_URI: 
"http://${KEYCLOAK_HOST:-keycloak}:8080/realms/${REALM:-demo}/protocol/openid-connect/token/introspect";
-
-
-      # username extraction from JWT token claim
-      OAUTH_USERNAME_CLAIM: preferred_username
-      OAUTH_CONNECT_TIMEOUT_SECONDS: "20"
-
-      # For start.sh script to know where the keycloak is listening
-      KEYCLOAK_HOST: ${KEYCLOAK_HOST:-keycloak}
-      KEYCLOAK_URI: https://keycloak:8443
diff --git a/kafka-oauth/docker/kafka-oauth-strimzi/kafka/Dockerfile 
b/kafka-oauth/docker/kafka-oauth-strimzi/kafka/Dockerfile
deleted file mode 100644
index c5f1b84..0000000
--- a/kafka-oauth/docker/kafka-oauth-strimzi/kafka/Dockerfile
+++ /dev/null
@@ -1,12 +0,0 @@
-FROM quay.io/strimzi/kafka:0.45.0-kafka-3.9.0
-
-COPY libs/* /opt/kafka/libs/strimzi/
-COPY config/* /opt/kafka/config/
-COPY *.sh /opt/kafka/
-COPY certificates/*.p12 /tmp/kafka/
-
-USER root
-RUN chmod +x /opt/kafka/*.sh
-USER kafka
-
-CMD ["/bin/bash", "/opt/kafka/start.sh"]
\ No newline at end of file
diff --git a/kafka-oauth/pom.xml b/kafka-oauth/pom.xml
index 8857084..3cf63e2 100644
--- a/kafka-oauth/pom.xml
+++ b/kafka-oauth/pom.xml
@@ -35,7 +35,6 @@
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
         <strimzi.version>0.15.0</strimzi.version>
-        <nimbus.jose.version>9.37.2</nimbus.jose.version>
     </properties>
 
     <dependencyManagement>
@@ -100,16 +99,6 @@
 
     <build>
         <plugins>
-            <plugin>
-                <artifactId>maven-clean-plugin</artifactId>
-                <configuration>
-                <filesets>
-                    <fileset>
-                        
<directory>${basedir}/docker/kafka-oauth-strimzi/kafka/target</directory>
-                    </fileset>
-                </filesets>
-                </configuration>
-            </plugin>
             <plugin>
                 <groupId>org.springframework.boot</groupId>
                 <artifactId>spring-boot-maven-plugin</artifactId>
@@ -122,107 +111,6 @@
                     </execution>
                 </executions>
             </plugin>
-            <plugin>
-                <artifactId>maven-resources-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <!-- copy the truststore CA to the camel-spring-boot, 
so the strimzi-oauth jaas login module 
-                             connects to the keycloak https and trust the CA
-                        -->
-                        <id>copy-resources</id>
-                        <phase>compile</phase>
-                        <goals>
-                            <goal>copy-resources</goal>
-                        </goals>
-                        <configuration>
-                            <outputDirectory>target/classes</outputDirectory>
-                            <resources>
-                                <resource>
-                                    
<directory>${basedir}/docker/certificates/</directory>
-                                    <includes>
-                                        <include>ca-truststore.p12</include>
-                                    </includes>
-                                </resource>
-                            </resources>
-                        </configuration>
-                    </execution>
-                    <execution>
-                        <!-- copy the required files to build the 
strimzi-oauth-kafka image -->
-                        <id>copy-resources-strimzi</id>
-                        <phase>package</phase>
-                        <goals>
-                            <goal>copy-resources</goal>
-                        </goals>
-                        <configuration>
-                            
<outputDirectory>${basedir}/docker/kafka-oauth-strimzi/kafka/target</outputDirectory>
-                            <resources>
-                                <resource>
-                                    
<directory>${basedir}/docker/kafka-oauth-strimzi/kafka</directory>
-                                    <includes>
-                                        <include>functions.sh</include>
-                                        <include>start.sh</include>
-                                        
<include>simple_kafka_config.sh</include>
-                                        <include>Dockerfile</include>
-                                        <include>config/</include>
-                                        <include>certificates/</include>
-                                    </includes>
-                                    <filtering>false</filtering>
-                                </resource>
-                            </resources>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-dependency-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <id>copy</id>
-                        <phase>package</phase>
-                        <goals>
-                            <goal>copy</goal>
-                        </goals>
-                    </execution>
-                </executions>
-                <configuration>
-                    <artifactItems>
-                        <artifactItem>
-                            <groupId>io.strimzi</groupId>
-                            <artifactId>kafka-oauth-client</artifactId>
-                            <version>${strimzi.version}</version>
-                        </artifactItem>
-                        <artifactItem>
-                            <groupId>io.strimzi</groupId>
-                            <artifactId>kafka-oauth-server</artifactId>
-                            <version>${strimzi.version}</version>
-                        </artifactItem>
-                        <artifactItem>
-                            <groupId>io.strimzi</groupId>
-                            <artifactId>kafka-oauth-server-plain</artifactId>
-                            <version>${strimzi.version}</version>
-                        </artifactItem>
-                        <artifactItem>
-                            <groupId>io.strimzi</groupId>
-                            <artifactId>kafka-oauth-common</artifactId>
-                            <version>${strimzi.version}</version>
-                        </artifactItem>
-                        <artifactItem>
-                            <groupId>io.strimzi</groupId>
-                            
<artifactId>kafka-oauth-keycloak-authorizer</artifactId>
-                            <version>${strimzi.version}</version>
-                        </artifactItem>
-                        <artifactItem>
-                            <groupId>com.nimbusds</groupId>
-                            <artifactId>nimbus-jose-jwt</artifactId>
-                            <version>${nimbus.jose.version}</version>
-                        </artifactItem>
-                    </artifactItems>
-                    
<outputDirectory>${basedir}/docker/kafka-oauth-strimzi/kafka/target/libs</outputDirectory>
-                    <overWriteReleases>false</overWriteReleases>
-                    <overWriteSnapshots>true</overWriteSnapshots>
-                </configuration>
-            </plugin>
         </plugins>
     </build>
 </project>
diff --git a/kafka-oauth/src/main/resources/application.properties 
b/kafka-oauth/src/main/resources/application.properties
index aabb7b1..db26cb2 100644
--- a/kafka-oauth/src/main/resources/application.properties
+++ b/kafka-oauth/src/main/resources/application.properties
@@ -26,7 +26,7 @@ camel.component.kafka.sasl-jaas-config = 
org.apache.kafka.common.security.oauthb
   oauth.client.id="kafka-producer-client" \
   oauth.client.secret="kafka-producer-client-secret" \
   oauth.username.claim="preferred_username" \
-  oauth.ssl.truststore.location="docker/certificates/ca-truststore.p12" \
+  oauth.ssl.truststore.location="containers/certificates/ca-truststore.p12" \
   oauth.ssl.truststore.type="pkcs12" \
   oauth.ssl.truststore.password="changeit" \
   
oauth.token.endpoint.uri="https://keycloak:8443/realms/demo/protocol/openid-connect/token";
 ;
diff --git a/kafka-oauth/start_kafka.sh b/kafka-oauth/start_kafka.sh
new file mode 100755
index 0000000..984e490
--- /dev/null
+++ b/kafka-oauth/start_kafka.sh
@@ -0,0 +1,43 @@
+#!/bin/bash
+
+cd containers/kafka
+podman run -it --rm \
+   -p 9091:9091 \
+   -p 9092:9092 \
+   -e LOG_DIR=/home/kafka/logs \
+   -e KAFKA_PROCESS_ROLES="broker,controller" \
+   -e KAFKA_NODE_ID="1" \
+   -e KAFKA_CONTROLLER_QUORUM_VOTERS="1@kafka:9091" \
+   -e KAFKA_CONTROLLER_LISTENER_NAMES=CONTROLLER \
+   -e KAFKA_SASL_MECHANISM_CONTROLLER_PROTOCOL=PLAIN \
+   -e KAFKA_LISTENERS="CONTROLLER://kafka:9091,CLIENT://kafka:9092" \
+   -e KAFKA_ADVERTISED_LISTENERS="CLIENT://kafka:9092" \
+   -e 
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP="CONTROLLER:SASL_PLAINTEXT,CLIENT:SASL_PLAINTEXT"
 \
+   -e KAFKA_INTER_BROKER_LISTENER_NAME=CLIENT \
+   -e KAFKA_SASL_MECHANISM_INTER_BROKER_PROTOCOL=OAUTHBEARER \
+   -e 
KAFKA_PRINCIPAL_BUILDER_CLASS="io.strimzi.kafka.oauth.server.OAuthKafkaPrincipalBuilder"
 \
+   -e KAFKA_LISTENER_NAME_CONTROLLER_SASL_ENABLED_MECHANISMS=PLAIN \
+   -e 
KAFKA_LISTENER_NAME_CONTROLLER_PLAIN_SASL_JAAS_CONFIG="org.apache.kafka.common.security.plain.PlainLoginModule
 required username=\"admin\" password=\"admin-password\" 
user_admin=\"admin-password\"    user_bobby=\"bobby-secret\" ;" \
+   -e KAFKA_LISTENER_NAME_CLIENT_SASL_ENABLED_MECHANISMS=OAUTHBEARER \
+   -e 
KAFKA_LISTENER_NAME_CLIENT_OAUTHBEARER_SASL_JAAS_CONFIG="org.apache.kafka.common.security.oauthbearer.OAuthBearerLoginModule
 required;" \
+   -e 
KAFKA_LISTENER_NAME_CLIENT_OAUTHBEARER_SASL_LOGIN_CALLBACK_HANDLER_CLASS=io.strimzi.kafka.oauth.client.JaasClientOauthLoginCallbackHandler
 \
+   -e 
KAFKA_LISTENER_NAME_CLIENT_OAUTHBEARER_SASL_SERVER_CALLBACK_HANDLER_CLASS=io.strimzi.kafka.oauth.server.JaasServerOauthValidatorCallbackHandler
 \
+   -e KAFKA_SUPER_USERS="User:admin,User:service-account-kafka-broker" \
+   -e KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1 \
+   -e OAUTH_CLIENT_ID="kafka-broker" \
+   -e OAUTH_CLIENT_SECRET="kafka-broker-secret" \
+   -e 
OAUTH_TOKEN_ENDPOINT_URI="http://keycloak:8080/realms/demo/protocol/openid-connect/token";
 \
+   -e OAUTH_VALID_ISSUER_URI="https://keycloak:8443/realms/demo"; \
+   -e 
OAUTH_JWKS_ENDPOINT_URI="http://keycloak:8080/realms/demo/protocol/openid-connect/certs";
 \
+   -e OAUTH_USERNAME_CLAIM=preferred_username \
+   -e OAUTH_CONNECT_TIMEOUT_SECONDS="20" \
+   -e KEYCLOAK_HOST=keycloak \
+   -e KEYCLOAK_URI=https://keycloak:8443 \
+   -u kafka \
+   --name kafka \
+   --network host \
+   -v ./scripts:/opt/kafka/scripts:Z \
+   -w /opt/kafka/scripts \
+   --entrypoint "./start.sh" \
+   quay.io/strimzi/kafka:0.45.0-kafka-3.9.0 \
+   --kraft
diff --git a/kafka-oauth/start_keycloak.sh b/kafka-oauth/start_keycloak.sh
new file mode 100755
index 0000000..ac63852
--- /dev/null
+++ b/kafka-oauth/start_keycloak.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+cd containers/keycloak
+podman run -it --rm \
+  -v ./realms:/opt/keycloak/data/import:Z \
+  -v 
./certificates/keycloak.server.keystore.p12:/opt/keycloak/data/certs/keycloak.server.keystore.p12:Z
 \
+  -p 8080:8080 -p 8443:8443 \
+  -e KC_BOOTSTRAP_ADMIN_USERNAME=admin \
+  -e KC_BOOTSTRAP_ADMIN_PASSWORD=admin \
+  -e KC_HOSTNAME=keycloak \
+  -e KC_HOSTNAME_ADMIN_URL=https://keycloak:8443 \
+  -e KC_HTTP_ENABLED=true \
+  --name keycloak \
+  --network host \
+  quay.io/keycloak/keycloak:26.0 \
+  -v start --import-realm --features=token-exchange,authorization,scripts 
--https-key-store-file=/opt/keycloak/data/certs/keycloak.server.keystore.p12 
--https-key-store-password=changeit
+cd -

Reply via email to