diff --git a/catalog/pom.xml b/catalog/pom.xml
index 827db4003f66..7fd6c2bd5837 100644
--- a/catalog/pom.xml
+++ b/catalog/pom.xml
@@ -3022,6 +3022,19 @@
+
+ org.apache.camel.quarkus
+ camel-quarkus-oauth
+ ${project.version}
+ pom
+ test
+
+
+ *
+ *
+
+
+
org.apache.camel.quarkus
camel-quarkus-observability-services
diff --git a/docs/modules/ROOT/examples/others/oauth.yml b/docs/modules/ROOT/examples/others/oauth.yml
new file mode 100644
index 000000000000..799f940a4db9
--- /dev/null
+++ b/docs/modules/ROOT/examples/others/oauth.yml
@@ -0,0 +1,13 @@
+# Do not edit directly!
+# This file was generated by camel-quarkus-maven-plugin:update-extension-doc-page
+cqArtifactId: camel-quarkus-oauth
+cqArtifactIdBase: oauth
+cqNativeSupported: true
+cqStatus: Stable
+cqDeprecated: false
+cqJvmSince: 3.31.0
+cqNativeSince: 3.31.0
+cqCamelPartName: oauth
+cqCamelPartTitle: Oauth
+cqCamelPartDescription: Camel OAuth (Preview)
+cqExtensionPageTitle: Oauth
diff --git a/docs/modules/ROOT/nav.adoc b/docs/modules/ROOT/nav.adoc
index a6b5fb1b722e..dc98a029d331 100644
--- a/docs/modules/ROOT/nav.adoc
+++ b/docs/modules/ROOT/nav.adoc
@@ -245,6 +245,7 @@
*** xref:reference/extensions/oaipmh.adoc[OAI-PMH]
*** xref:reference/extensions/ognl.adoc[OGNL]
*** xref:reference/extensions/milo.adoc[OPC UA Browser]
+*** xref:reference/extensions/oauth.adoc[Oauth]
*** xref:reference/extensions/observability-services.adoc[Observability Services]
*** xref:reference/extensions/olingo4.adoc[Olingo4]
*** xref:reference/extensions/openapi-java.adoc[OpenAPI Java]
diff --git a/docs/modules/ROOT/pages/reference/extensions/oauth.adoc b/docs/modules/ROOT/pages/reference/extensions/oauth.adoc
new file mode 100644
index 000000000000..5334f421d7b5
--- /dev/null
+++ b/docs/modules/ROOT/pages/reference/extensions/oauth.adoc
@@ -0,0 +1,45 @@
+// Do not edit directly!
+// This file was generated by camel-quarkus-maven-plugin:update-extension-doc-page
+[id="extensions-oauth"]
+= Oauth
+:linkattrs:
+:cq-artifact-id: camel-quarkus-oauth
+:cq-native-supported: true
+:cq-status: Stable
+:cq-status-deprecation: Stable
+:cq-description: Camel OAuth (Preview)
+:cq-deprecated: false
+:cq-jvm-since: 3.31.0
+:cq-native-since: 3.31.0
+
+ifeval::[{doc-show-badges} == true]
+[.badges]
+[.badge-key]##JVM since##[.badge-supported]##3.31.0## [.badge-key]##Native since##[.badge-supported]##3.31.0##
+endif::[]
+
+Camel OAuth (Preview)
+
+[id="extensions-oauth-whats-inside"]
+== What's inside
+
+* xref:{cq-camel-components}:others:oauth.adoc[Oauth]
+
+Please refer to the above link for usage and configuration details.
+
+[id="extensions-oauth-maven-coordinates"]
+== Maven coordinates
+
+https://{link-quarkus-code-generator}/?extension-search=camel-quarkus-oauth[Create a new project with this extension on {link-quarkus-code-generator}, window="_blank"]
+
+Or add the coordinates to your existing project:
+
+[source,xml]
+----
+
+ org.apache.camel.quarkus
+ camel-quarkus-oauth
+
+----
+ifeval::[{doc-show-user-guide-link} == true]
+Check the xref:user-guide/index.adoc[User guide] for more information about writing Camel Quarkus applications.
+endif::[]
diff --git a/extensions/oauth/deployment/pom.xml b/extensions/oauth/deployment/pom.xml
new file mode 100644
index 000000000000..ac8457cea6e9
--- /dev/null
+++ b/extensions/oauth/deployment/pom.xml
@@ -0,0 +1,67 @@
+
+
+
+ 4.0.0
+
+ org.apache.camel.quarkus
+ camel-quarkus-oauth-parent
+ 3.31.0-SNAPSHOT
+ ../pom.xml
+
+
+ camel-quarkus-oauth-deployment
+ Camel Quarkus :: Oauth :: Deployment
+
+
+
+ org.apache.camel.quarkus
+ camel-quarkus-core-deployment
+
+
+ org.apache.camel.quarkus
+ camel-quarkus-oauth
+
+
+ org.apache.camel.quarkus
+ camel-quarkus-support-httpclient5-deployment
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+
+
+ io.quarkus
+ quarkus-extension-processor
+ ${quarkus.version}
+
+
+
+
+
+
+
+
diff --git a/extensions/oauth/deployment/src/main/java/org/apache/camel/quarkus/component/oauth/deployment/OauthProcessor.java b/extensions/oauth/deployment/src/main/java/org/apache/camel/quarkus/component/oauth/deployment/OauthProcessor.java
new file mode 100644
index 000000000000..71bc56c1a0d9
--- /dev/null
+++ b/extensions/oauth/deployment/src/main/java/org/apache/camel/quarkus/component/oauth/deployment/OauthProcessor.java
@@ -0,0 +1,30 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.quarkus.component.oauth.deployment;
+
+import io.quarkus.deployment.annotations.BuildStep;
+import io.quarkus.deployment.builditem.FeatureBuildItem;
+
+class OauthProcessor {
+
+ private static final String FEATURE = "camel-oauth";
+
+ @BuildStep
+ FeatureBuildItem feature() {
+ return new FeatureBuildItem(FEATURE);
+ }
+}
diff --git a/extensions/oauth/pom.xml b/extensions/oauth/pom.xml
new file mode 100644
index 000000000000..67695c8fca5c
--- /dev/null
+++ b/extensions/oauth/pom.xml
@@ -0,0 +1,39 @@
+
+
+
+ 4.0.0
+
+ org.apache.camel.quarkus
+ camel-quarkus-extensions
+ 3.31.0-SNAPSHOT
+ ../pom.xml
+
+
+ camel-quarkus-oauth-parent
+ Camel Quarkus :: Oauth
+ pom
+
+
+ deployment
+ runtime
+
+
diff --git a/extensions/oauth/runtime/pom.xml b/extensions/oauth/runtime/pom.xml
new file mode 100644
index 000000000000..e68b7d0b52c4
--- /dev/null
+++ b/extensions/oauth/runtime/pom.xml
@@ -0,0 +1,105 @@
+
+
+
+ 4.0.0
+
+ org.apache.camel.quarkus
+ camel-quarkus-oauth-parent
+ 3.31.0-SNAPSHOT
+ ../pom.xml
+
+
+ camel-quarkus-oauth
+ Camel Quarkus :: Oauth :: Runtime
+ Camel OAuth (Preview)
+
+
+ 3.31.0
+ 3.31.0
+
+
+
+
+ org.apache.camel.quarkus
+ camel-quarkus-core
+
+
+ org.apache.camel
+ camel-oauth
+
+
+ org.apache.camel.quarkus
+ camel-quarkus-support-httpclient5
+
+
+
+
+
+
+ io.quarkus
+ quarkus-extension-maven-plugin
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+
+
+ io.quarkus
+ quarkus-extension-processor
+ ${quarkus.version}
+
+
+
+
+
+
+
+
+
+
+ full
+
+
+ !quickly
+
+
+
+
+
+ org.apache.camel.quarkus
+ camel-quarkus-maven-plugin
+
+
+ update-extension-doc-page
+
+ update-extension-doc-page
+
+ process-classes
+
+
+
+
+
+
+
+
diff --git a/extensions/oauth/runtime/src/main/resources/META-INF/quarkus-extension.yaml b/extensions/oauth/runtime/src/main/resources/META-INF/quarkus-extension.yaml
new file mode 100644
index 000000000000..4e0205aebd63
--- /dev/null
+++ b/extensions/oauth/runtime/src/main/resources/META-INF/quarkus-extension.yaml
@@ -0,0 +1,33 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+# This is a generated file. Do not edit directly!
+# To re-generate, run the following command from the top level directory:
+#
+# mvn -N cq:update-quarkus-metadata
+#
+---
+name: "Camel Oauth"
+description: "Camel OAuth (Preview)"
+metadata:
+ icon-url: "https://raw.githubusercontent.com/apache/camel-website/main/antora-ui-camel/src/img/logo-d.svg"
+ sponsor: "Apache Software Foundation"
+ guide: "https://camel.apache.org/camel-quarkus/latest/reference/extensions/oauth.html"
+ categories:
+ - "integration"
+ status:
+ - "stable"
diff --git a/extensions/pom.xml b/extensions/pom.xml
index a4d8600c2545..3164ce2607bb 100644
--- a/extensions/pom.xml
+++ b/extensions/pom.xml
@@ -212,6 +212,7 @@
netty-http
nitrite
oaipmh
+ oauth
observability-services
ognl
olingo4
diff --git a/integration-tests/oauth/pom.xml b/integration-tests/oauth/pom.xml
new file mode 100644
index 000000000000..aa8854df2b36
--- /dev/null
+++ b/integration-tests/oauth/pom.xml
@@ -0,0 +1,150 @@
+
+
+
+ 4.0.0
+
+ org.apache.camel.quarkus
+ camel-quarkus-build-parent-it
+ 3.31.0-SNAPSHOT
+ ../../poms/build-parent-it/pom.xml
+
+
+ camel-quarkus-integration-test-oauth
+ Camel Quarkus :: Integration Tests :: Oauth
+ Integration tests for Camel Quarkus Oauth extension
+
+
+
+ org.apache.camel.quarkus
+ camel-quarkus-oauth
+
+
+ org.apache.camel.quarkus
+ camel-quarkus-platform-http
+
+
+ io.quarkus
+ quarkus-resteasy
+
+
+
+
+ io.quarkus
+ quarkus-junit5
+ test
+
+
+ io.rest-assured
+ rest-assured
+ test
+
+
+ io.quarkus
+ quarkus-test-keycloak-server
+ test
+
+
+ org.testcontainers
+ testcontainers
+ test
+
+
+ junit
+ junit
+
+
+
+
+ io.quarkus
+ quarkus-junit4-mock
+ test
+
+
+
+
+
+ native
+
+
+ native
+
+
+
+ true
+
+
+
+
+ org.apache.maven.plugins
+ maven-failsafe-plugin
+
+
+
+ integration-test
+ verify
+
+
+
+
+
+
+
+
+ virtualDependencies
+
+
+ !noVirtualDependencies
+
+
+
+
+
+ org.apache.camel.quarkus
+ camel-quarkus-oauth-deployment
+ ${project.version}
+ pom
+ test
+
+
+ *
+ *
+
+
+
+
+ org.apache.camel.quarkus
+ camel-quarkus-platform-http-deployment
+ ${project.version}
+ pom
+ test
+
+
+ *
+ *
+
+
+
+
+
+
+
+
diff --git a/integration-tests/oauth/src/main/java/org/apache/camel/quarkus/component/oauth/it/OathRoutes.java b/integration-tests/oauth/src/main/java/org/apache/camel/quarkus/component/oauth/it/OathRoutes.java
new file mode 100644
index 000000000000..9c3bbaa461e7
--- /dev/null
+++ b/integration-tests/oauth/src/main/java/org/apache/camel/quarkus/component/oauth/it/OathRoutes.java
@@ -0,0 +1,59 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.quarkus.component.oauth.it;
+
+import jakarta.enterprise.context.ApplicationScoped;
+import jakarta.inject.Inject;
+import org.apache.camel.CamelContext;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.oauth.OAuthBearerTokenProcessor;
+import org.apache.camel.oauth.OAuthClientCredentialsProcessor;
+
+@ApplicationScoped
+public class OathRoutes extends RouteBuilder {
+
+ @Inject
+ private CamelContext camelContext;
+
+ @Override
+ public void configure() throws Exception {
+ from("platform-http:/plain")
+ .routeId("plain")
+ .setBody(simple("Hello ${header.name} - No auth"));
+
+ from("platform-http:/credentials")
+ .routeId("credentials")
+ // Obtain an Authorization Token
+ .process(new OAuthClientCredentialsProcessor())
+ // Extract the Authorization Token
+ .process(exc -> {
+ var msg = exc.getMessage();
+ var authToken = msg.getHeader("Authorization", String.class);
+ exc.getIn().setBody(authToken);
+ });
+
+ from("platform-http:/bearer")
+ .routeId("bearer")
+ .process(e -> {
+ camelContext.getGlobalOptions().put("Authorization", e.getIn().getHeader("Authorization", String.class));
+ })
+ .process(new OAuthBearerTokenProcessor())
+ .process(e -> camelContext.getGlobalOptions().remove("Authorization"))
+ .setBody(simple("Hello ${header.name} - bearerToken"));
+
+ }
+}
diff --git a/integration-tests/oauth/src/main/resources/application.properties b/integration-tests/oauth/src/main/resources/application.properties
new file mode 100644
index 000000000000..859e869fd9f4
--- /dev/null
+++ b/integration-tests/oauth/src/main/resources/application.properties
@@ -0,0 +1,20 @@
+## ---------------------------------------------------------------------------
+## Licensed to the Apache Software Foundation (ASF) under one or more
+## contributor license agreements. See the NOTICE file distributed with
+## this work for additional information regarding copyright ownership.
+## The ASF licenses this file to You under the Apache License, Version 2.0
+## (the "License"); you may not use this file except in compliance with
+## the License. You may obtain a copy of the License at
+##
+## http://www.apache.org/licenses/LICENSE-2.0
+##
+## Unless required by applicable law or agreed to in writing, software
+## distributed under the License is distributed on an "AS IS" BASIS,
+## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+## See the License for the specific language governing permissions and
+## limitations under the License.
+## ---------------------------------------------------------------------------
+
+camel.oauth.base-uri=${cq.ouath.test.keycloak.uri}
+camel.oauth.client-id=camel-client
+camel.oauth.client-secret=camel-client-secret
\ No newline at end of file
diff --git a/integration-tests/oauth/src/test/java/org/apache/camel/quarkus/component/oauth/it/OauthIT.java b/integration-tests/oauth/src/test/java/org/apache/camel/quarkus/component/oauth/it/OauthIT.java
new file mode 100644
index 000000000000..9d37712e58f5
--- /dev/null
+++ b/integration-tests/oauth/src/test/java/org/apache/camel/quarkus/component/oauth/it/OauthIT.java
@@ -0,0 +1,23 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.quarkus.component.oauth.it;
+
+import io.quarkus.test.junit.QuarkusIntegrationTest;
+
+@QuarkusIntegrationTest
+class OauthIT extends OauthTest {
+}
diff --git a/integration-tests/oauth/src/test/java/org/apache/camel/quarkus/component/oauth/it/OauthKeycloakTestResource.java b/integration-tests/oauth/src/test/java/org/apache/camel/quarkus/component/oauth/it/OauthKeycloakTestResource.java
new file mode 100644
index 000000000000..468f97b46325
--- /dev/null
+++ b/integration-tests/oauth/src/test/java/org/apache/camel/quarkus/component/oauth/it/OauthKeycloakTestResource.java
@@ -0,0 +1,70 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.quarkus.component.oauth.it;
+
+import java.time.Duration;
+import java.util.Collections;
+import java.util.Map;
+
+import io.quarkus.test.common.QuarkusTestResourceLifecycleManager;
+import io.quarkus.test.keycloak.server.KeycloakContainer;
+import org.eclipse.microprofile.config.ConfigProvider;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.testcontainers.containers.output.Slf4jLogConsumer;
+import org.testcontainers.utility.MountableFile;
+
+import static org.apache.camel.oauth.OAuth.*;
+
+/**
+ * Inspired from
+ * https://github.com/apache/camel-quarkus/blob/main/integration-tests/kafka-oauth/src/test/java/org/apache/camel/quarkus/kafka/oauth/it/KafkaKeycloakTestResource.java
+ */
+public class OauthKeycloakTestResource implements QuarkusTestResourceLifecycleManager {
+
+ private static final Logger LOG = LoggerFactory.getLogger(OauthKeycloakTestResource.class);
+ private static final String REALM_JSON = "keycloak/realms/camel-realm.json";
+ private static final String REALM_NAME = "camel";
+
+ private KeycloakContainer keycloak;
+
+ @Override
+ public Map start() {
+ System.setProperty("keycloak.docker.image",
+ ConfigProvider.getConfig().getValue("keycloak.container.image", String.class));
+
+ //Start keycloak container
+ keycloak = new KeycloakContainer()
+ .withStartupTimeout(Duration.ofMinutes(5))
+ .withLogConsumer(new Slf4jLogConsumer(LOG))
+ .withCopyFileToContainer(
+ MountableFile.forClasspathResource("/camel-realm.json"),
+ "/opt/keycloak/data/import/camel-realm.json")
+ .withCommand("start", "--import-realm", "--verbose");
+
+ keycloak.start();
+
+ return Collections.singletonMap("cq.ouath.test.keycloak.uri", keycloak.getServerUrl() + "/realms/" + REALM_NAME);
+ }
+
+ @Override
+ public void stop() {
+ if (keycloak != null) {
+ keycloak.stop();
+ }
+ }
+}
diff --git a/integration-tests/oauth/src/test/java/org/apache/camel/quarkus/component/oauth/it/OauthTest.java b/integration-tests/oauth/src/test/java/org/apache/camel/quarkus/component/oauth/it/OauthTest.java
new file mode 100644
index 000000000000..2eb48d6a970b
--- /dev/null
+++ b/integration-tests/oauth/src/test/java/org/apache/camel/quarkus/component/oauth/it/OauthTest.java
@@ -0,0 +1,58 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.quarkus.component.oauth.it;
+
+import io.quarkus.test.common.QuarkusTestResource;
+import io.quarkus.test.junit.QuarkusTest;
+import io.restassured.RestAssured;
+import org.junit.jupiter.api.Test;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.CoreMatchers.notNullValue;
+
+@QuarkusTest
+@QuarkusTestResource(OauthKeycloakTestResource.class)
+class OauthTest {
+
+ @Test
+ void testPlain() {
+ RestAssured.given()
+ .param("name", "Kermit")
+ .get("/plain")
+ .then().statusCode(200)
+ .body(equalTo("Hello Kermit - No auth"));
+ }
+
+ @Test
+ void testCredentialsAndBearer() {
+
+ String bearerToken = RestAssured.given()
+ .get("/credentials")
+ .then()
+ .statusCode(200)
+ .body(notNullValue())
+ .extract().asString();
+
+ RestAssured.given()
+ .param("name", "SecuredKermit")
+ .param("Authorization", bearerToken)
+ .get("/bearer")
+ .then()
+ .statusCode(200)
+ .body(equalTo("Hello SecuredKermit - bearerToken"));
+ }
+}
diff --git a/integration-tests/oauth/src/test/resources/camel-realm.json b/integration-tests/oauth/src/test/resources/camel-realm.json
new file mode 100644
index 000000000000..1e2ff6d9be34
--- /dev/null
+++ b/integration-tests/oauth/src/test/resources/camel-realm.json
@@ -0,0 +1,84 @@
+{
+ "realm": "camel",
+ "accessTokenLifespan": 300,
+ "ssoSessionMaxLifespan": 32140800,
+ "ssoSessionIdleTimeout": 32140800,
+ "enabled": true,
+ "sslRequired": "external",
+ "users": [
+ {
+ "username": "alice",
+ "enabled": true,
+ "firstName": "Alice",
+ "lastName": "Brown",
+ "email": "alice@example.com",
+ "credentials": [
+ {
+ "type": "password",
+ "value": "alice"
+ }
+ ],
+ "realmRoles": [
+ "user"
+ ]
+ },
+ {
+ "username": "admin",
+ "enabled": true,
+ "email": "admin@example.com",
+ "credentials": [
+ {
+ "type": "password",
+ "value": "admin-password"
+ }
+ ],
+ "realmRoles": [
+ "admin"
+ ],
+ "clientRoles": {
+ "realm-management": [
+ "realm-admin"
+ ]
+ }
+ }
+ ],
+ "roles": {
+ "realm": [
+ {
+ "name": "user",
+ "description": "User privileges"
+ },
+ {
+ "name": "admin",
+ "description": "Administrator privileges"
+ }
+ ],
+ "client": {}
+ },
+ "scopeMappings": [],
+ "clientScopeMappings": {},
+ "clients": [
+ {
+ "clientId": "camel-client",
+ "enabled": true,
+ "clientAuthenticatorType": "client-secret",
+ "secret": "camel-client-secret",
+ "publicClient": false,
+ "bearerOnly": false,
+ "standardFlowEnabled": true,
+ "implicitFlowEnabled": false,
+ "directAccessGrantsEnabled": false,
+ "serviceAccountsEnabled": true,
+ "consentRequired" : false,
+ "fullScopeAllowed" : false,
+ "redirectUris": [
+ "http://127.0.0.1:8080/auth",
+ "https://example.local/auth",
+ "https://example.k3s/auth"
+ ],
+ "attributes": {
+ "post.logout.redirect.uris": "http://127.0.0.1:8080/##https://example.local/##https://example.k3s/"
+ }
+ }
+ ]
+}
diff --git a/integration-tests/pom.xml b/integration-tests/pom.xml
index dff97f3b12f5..2f550f85f1bc 100644
--- a/integration-tests/pom.xml
+++ b/integration-tests/pom.xml
@@ -184,6 +184,7 @@
netty
nitrite
oaipmh
+ oauth
observability-services
ognl
olingo4
diff --git a/poms/bom/pom.xml b/poms/bom/pom.xml
index 9dc24e4d6a3b..9df265d94a66 100644
--- a/poms/bom/pom.xml
+++ b/poms/bom/pom.xml
@@ -2305,6 +2305,11 @@
+
+ org.apache.camel
+ camel-oauth
+ ${camel.version}
+
org.apache.camel
camel-observability-services
@@ -5571,6 +5576,16 @@
camel-quarkus-oaipmh-deployment
${camel-quarkus.version}
+
+ org.apache.camel.quarkus
+ camel-quarkus-oauth
+ ${camel-quarkus.version}
+
+
+ org.apache.camel.quarkus
+ camel-quarkus-oauth-deployment
+ ${camel-quarkus.version}
+
org.apache.camel.quarkus
camel-quarkus-observability-services
diff --git a/poms/bom/src/main/generated/flattened-full-pom.xml b/poms/bom/src/main/generated/flattened-full-pom.xml
index e93990735464..d61afb274602 100644
--- a/poms/bom/src/main/generated/flattened-full-pom.xml
+++ b/poms/bom/src/main/generated/flattened-full-pom.xml
@@ -2221,6 +2221,11 @@
+
+ org.apache.camel
+ camel-oauth
+ 4.16.0
+
org.apache.camel
camel-observability-services
@@ -5459,6 +5464,16 @@
camel-quarkus-oaipmh-deployment
3.31.0-SNAPSHOT
+
+ org.apache.camel.quarkus
+ camel-quarkus-oauth
+ 3.31.0-SNAPSHOT
+
+
+ org.apache.camel.quarkus
+ camel-quarkus-oauth-deployment
+ 3.31.0-SNAPSHOT
+
org.apache.camel.quarkus
camel-quarkus-observability-services
diff --git a/poms/bom/src/main/generated/flattened-reduced-pom.xml b/poms/bom/src/main/generated/flattened-reduced-pom.xml
index 4ec63fd0416b..b9bf7999858b 100644
--- a/poms/bom/src/main/generated/flattened-reduced-pom.xml
+++ b/poms/bom/src/main/generated/flattened-reduced-pom.xml
@@ -2216,6 +2216,11 @@
+
+ org.apache.camel
+ camel-oauth
+ 4.16.0
+
org.apache.camel
camel-ognl
@@ -5449,6 +5454,16 @@
camel-quarkus-oaipmh-deployment
3.31.0-SNAPSHOT
+
+ org.apache.camel.quarkus
+ camel-quarkus-oauth
+ 3.31.0-SNAPSHOT
+
+
+ org.apache.camel.quarkus
+ camel-quarkus-oauth-deployment
+ 3.31.0-SNAPSHOT
+
org.apache.camel.quarkus
camel-quarkus-observability-services
diff --git a/poms/bom/src/main/generated/flattened-reduced-verbose-pom.xml b/poms/bom/src/main/generated/flattened-reduced-verbose-pom.xml
index f91c61a7dac0..8f3725d8dafe 100644
--- a/poms/bom/src/main/generated/flattened-reduced-verbose-pom.xml
+++ b/poms/bom/src/main/generated/flattened-reduced-verbose-pom.xml
@@ -2216,6 +2216,11 @@
+
+ org.apache.camel
+ camel-oauth
+ 4.16.0
+
org.apache.camel
camel-ognl
@@ -5449,6 +5454,16 @@
camel-quarkus-oaipmh-deployment
3.31.0-SNAPSHOT
+
+ org.apache.camel.quarkus
+ camel-quarkus-oauth
+ 3.31.0-SNAPSHOT
+
+
+ org.apache.camel.quarkus
+ camel-quarkus-oauth-deployment
+ 3.31.0-SNAPSHOT
+
org.apache.camel.quarkus
camel-quarkus-observability-services
diff --git a/tooling/scripts/test-categories.yaml b/tooling/scripts/test-categories.yaml
index 75dcdca1ae58..67037210a8f0 100644
--- a/tooling/scripts/test-categories.yaml
+++ b/tooling/scripts/test-categories.yaml
@@ -100,6 +100,7 @@ group-05:
- fory
- hl7
- jaxb
+ - oauth
- mapstruct
- ssh
- soap