diff --git a/.gitignore b/.gitignore
index 59a1cb100e..d789ca365e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -79,6 +79,10 @@ quarkus/data/*.db
# Jakarta transformed sources #
###############################
/integration/admin-client-jakarta/src/
+/adapters/saml/jakarta-servlet-filter/src/
+/adapters/oidc/jakarta-servlet-filter/src/
+/adapters/saml/wildfly-elytron-jakarta/src/
+/adapters/saml/wildfly/wildfly-jakarta-subsystem/src/
/.metadata/
# Git ephemeral files
@@ -86,3 +90,6 @@ quarkus/data/*.db
# Node.js for frontend-maven-plugin #
node
+
+# SDKMAM environment file
+.sdkmanrc
diff --git a/adapters/oidc/jakarta-servlet-filter/pom.xml b/adapters/oidc/jakarta-servlet-filter/pom.xml
new file mode 100755
index 0000000000..3a701037a7
--- /dev/null
+++ b/adapters/oidc/jakarta-servlet-filter/pom.xml
@@ -0,0 +1,191 @@
+
+
+
+
+
+ keycloak-parent
+ org.keycloak
+ 999.0.0-SNAPSHOT
+ ../../../pom.xml
+
+ 4.0.0
+
+ keycloak-jakarta-servlet-filter-adapter
+ Keycloak Servlet Filter Adapter Integration
+
+
+
+
+
+ org.keycloak.adapters.servlet.*
+
+
+ javax.servlet.*;version="[3.1,5)";resolution:=optional,
+ org.keycloak.*;version="${project.version}",
+ *;resolution:=optional
+
+
+ ${project.basedir}/../servlet-filter/src
+ ${project.basedir}/src
+
+
+
+
+ org.jboss.logging
+ jboss-logging
+ provided
+
+
+ org.keycloak
+ keycloak-core
+
+
+ org.keycloak
+ keycloak-adapter-spi
+
+
+ org.keycloak
+ keycloak-jakarta-servlet-adapter-spi
+
+
+ org.keycloak
+ keycloak-adapter-core
+
+
+ org.keycloak
+ keycloak-policy-enforcer
+
+
+ org.apache.httpcomponents
+ httpclient
+
+
+ org.bouncycastle
+ bcprov-jdk15on
+
+
+ com.fasterxml.jackson.core
+ jackson-core
+
+
+ com.fasterxml.jackson.core
+ jackson-databind
+
+
+ com.fasterxml.jackson.core
+ jackson-annotations
+
+
+ jakarta.servlet
+ jakarta.servlet-api
+ provided
+
+
+ junit
+ junit
+ test
+
+
+
+
+
+
+ maven-antrun-plugin
+ 3.0.0
+
+
+ transform
+ initialize
+
+ run
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ org.eclipse.transformer
+ org.eclipse.transformer.cli
+ 0.2.0
+
+
+ ant-contrib
+ ant-contrib
+ 1.0b3
+
+
+ ant
+ ant
+
+
+
+
+
+
+
+ maven-jar-plugin
+
+
+ ${project.build.outputDirectory}/META-INF/MANIFEST.MF
+
+
+
+
+ org.apache.felix
+ maven-bundle-plugin
+ true
+
+
+ bundle-manifest
+ process-classes
+
+ manifest
+
+
+
+
+
+ .
+ ${project.name}
+ ${project.groupId}.${project.artifactId}
+ ${keycloak.osgi.import}
+ ${keycloak.osgi.export}
+
+
+
+
+
+
+
diff --git a/adapters/oidc/pom.xml b/adapters/oidc/pom.xml
index 2ee5bee069..f4e37273be 100755
--- a/adapters/oidc/pom.xml
+++ b/adapters/oidc/pom.xml
@@ -37,6 +37,7 @@
jetty
js
servlet-filter
+ jakarta-servlet-filter
spring-boot2
spring-boot-adapter-core
spring-boot-container-bundle
diff --git a/adapters/saml/jakarta-servlet-filter/pom.xml b/adapters/saml/jakarta-servlet-filter/pom.xml
new file mode 100755
index 0000000000..ba65ff19ec
--- /dev/null
+++ b/adapters/saml/jakarta-servlet-filter/pom.xml
@@ -0,0 +1,141 @@
+
+
+
+
+
+ keycloak-parent
+ org.keycloak
+ 999.0.0-SNAPSHOT
+ ../../../pom.xml
+
+ 4.0.0
+
+ keycloak-saml-jakarta-servlet-filter-adapter
+ Keycloak SAML Jakarta Servlet Filter
+
+
+
+
+ ${project.basedir}/../servlet-filter/src
+ ${project.basedir}/src
+
+
+
+
+ org.jboss.logging
+ jboss-logging
+
+
+ org.keycloak
+ keycloak-common
+
+
+ org.keycloak
+ keycloak-adapter-spi
+
+
+ org.keycloak
+ keycloak-jakarta-servlet-adapter-spi
+
+
+ org.bouncycastle
+ bcprov-jdk15on
+
+
+ org.keycloak
+ keycloak-saml-core
+
+
+ org.keycloak
+ keycloak-saml-adapter-api-public
+
+
+ org.keycloak
+ keycloak-saml-adapter-core
+
+
+ org.keycloak
+ keycloak-crypto-default
+
+
+ jakarta.servlet
+ jakarta.servlet-api
+ provided
+
+
+ junit
+ junit
+ test
+
+
+
+
+
+
+ maven-antrun-plugin
+ 3.0.0
+
+
+ transform
+ initialize
+
+ run
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ org.eclipse.transformer
+ org.eclipse.transformer.cli
+ 0.2.0
+
+
+ ant-contrib
+ ant-contrib
+ 1.0b3
+
+
+ ant
+ ant
+
+
+
+
+
+
+
+
+
diff --git a/adapters/saml/pom.xml b/adapters/saml/pom.xml
index 54d2f20864..f941cc0876 100755
--- a/adapters/saml/pom.xml
+++ b/adapters/saml/pom.xml
@@ -38,6 +38,8 @@
tomcat
wildfly
servlet-filter
+ jakarta-servlet-filter
wildfly-elytron
+ wildfly-elytron-jakarta
diff --git a/adapters/saml/wildfly-elytron-jakarta/pom.xml b/adapters/saml/wildfly-elytron-jakarta/pom.xml
new file mode 100755
index 0000000000..c6b6ff388d
--- /dev/null
+++ b/adapters/saml/wildfly-elytron-jakarta/pom.xml
@@ -0,0 +1,157 @@
+
+
+
+
+
+ keycloak-parent
+ org.keycloak
+ 999.0.0-SNAPSHOT
+ ../../../pom.xml
+
+ 4.0.0
+
+ keycloak-saml-wildfly-elytron-jakarta-adapter
+ Keycloak WildFly Elytron Jakarta SAML Adapter
+
+
+
+
+ ${project.basedir}/../wildfly-elytron/src
+ ${project.basedir}/src
+
+
+
+
+ org.keycloak
+ keycloak-adapter-core
+ provided
+
+
+ org.keycloak
+ keycloak-saml-core
+ provided
+
+
+ org.keycloak
+ keycloak-adapter-spi
+ provided
+
+
+ org.keycloak
+ keycloak-common
+ provided
+
+
+ org.keycloak
+ keycloak-saml-adapter-api-public
+ provided
+
+
+ org.keycloak
+ keycloak-saml-adapter-core
+ provided
+
+
+ org.jboss.logging
+ jboss-logging
+ provided
+
+
+ jakarta.servlet
+ jakarta.servlet-api
+ provided
+
+
+ org.wildfly.security
+ wildfly-elytron
+
+
+ org.wildfly.security.elytron-web
+ undertow-server
+ provided
+
+
+ org.infinispan
+ infinispan-core
+
+
+ org.infinispan
+ infinispan-cachestore-remote
+
+
+ junit
+ junit
+ test
+
+
+
+
+
+
+ maven-antrun-plugin
+ 3.0.0
+
+
+ transform
+ initialize
+
+ run
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ org.eclipse.transformer
+ org.eclipse.transformer.cli
+ 0.2.0
+
+
+ ant-contrib
+ ant-contrib
+ 1.0b3
+
+
+ ant
+ ant
+
+
+
+
+
+
+
+
+
diff --git a/adapters/saml/wildfly/pom.xml b/adapters/saml/wildfly/pom.xml
index f1b3048e71..02f49d8307 100755
--- a/adapters/saml/wildfly/pom.xml
+++ b/adapters/saml/wildfly/pom.xml
@@ -32,5 +32,6 @@
wildfly-subsystem
+ wildfly-jakarta-subsystem
diff --git a/adapters/saml/wildfly/wildfly-jakarta-subsystem/pom.xml b/adapters/saml/wildfly/wildfly-jakarta-subsystem/pom.xml
new file mode 100755
index 0000000000..5d511c8e71
--- /dev/null
+++ b/adapters/saml/wildfly/wildfly-jakarta-subsystem/pom.xml
@@ -0,0 +1,164 @@
+
+
+
+ 4.0.0
+
+
+ org.keycloak
+ keycloak-parent
+ 999.0.0-SNAPSHOT
+ ../../../../pom.xml
+
+
+ keycloak-saml-wildfly-jakarta-subsystem
+ Keycloak Wildfly Jakarta SAML Adapter Subsystem
+
+ jar
+
+
+
+ ${project.basedir}/../wildfly-subsystem/src
+ ${project.basedir}/src
+
+
+
+
+
+ maven-antrun-plugin
+ 3.0.0
+
+
+ transform
+ initialize
+
+ run
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ org.eclipse.transformer
+ org.eclipse.transformer.cli
+ 0.2.0
+
+
+ ant-contrib
+ ant-contrib
+ 1.0b3
+
+
+ ant
+ ant
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+ false
+ true
+
+
+ jboss.home
+ ${jboss.home}
+
+
+
+ **/*TestCase.java
+
+
+
+
+
+
+
+
+ org.wildfly.core
+ wildfly-controller
+ provided
+
+
+ org.wildfly.core
+ wildfly-server
+ provided
+
+
+ org.wildfly
+ wildfly-web-common
+ provided
+
+
+ org.jboss.logging
+ jboss-logging-annotations
+
+ provided
+ true
+
+
+
+ org.jboss.logging
+ jboss-logging-processor
+
+ provided
+ true
+
+
+
+ org.wildfly.core
+ wildfly-subsystem-test-framework
+ test
+
+
+ junit
+ junit
+ test
+
+
+ org.keycloak
+ keycloak-saml-adapter-core
+ ${project.version}
+
+
+ org.keycloak
+ keycloak-saml-wildfly-elytron-jakarta-adapter
+ ${project.version}
+
+
+
diff --git a/adapters/saml/wildfly/wildfly-subsystem/src/main/java/org/keycloak/subsystem/adapter/saml/extension/KeycloakDependencyProcessor.java b/adapters/saml/wildfly/wildfly-subsystem/src/main/java/org/keycloak/subsystem/adapter/saml/extension/KeycloakDependencyProcessor.java
index 2b73069d50..b837afcd6b 100755
--- a/adapters/saml/wildfly/wildfly-subsystem/src/main/java/org/keycloak/subsystem/adapter/saml/extension/KeycloakDependencyProcessor.java
+++ b/adapters/saml/wildfly/wildfly-subsystem/src/main/java/org/keycloak/subsystem/adapter/saml/extension/KeycloakDependencyProcessor.java
@@ -36,7 +36,7 @@ import org.jboss.modules.ModuleLoader;
*/
public abstract class KeycloakDependencyProcessor implements DeploymentUnitProcessor {
- private static final ModuleIdentifier KEYCLOAK_JBOSS_CORE_ADAPTER = ModuleIdentifier.create("org.keycloak.keycloak-jboss-adapter-core");
+ private static final ModuleIdentifier KEYCLOAK_JBOSS_CORE_ADAPTER = KeycloakSubsystemDefinition.KEYCLOAK_JBOSS_CORE_ADAPTER;
private static final ModuleIdentifier KEYCLOAK_CORE_ADAPTER = ModuleIdentifier.create("org.keycloak.keycloak-saml-adapter-core");
private static final ModuleIdentifier KEYCLOAK_API_ADAPTER = ModuleIdentifier.create("org.keycloak.keycloak-saml-adapter-api-public");
private static final ModuleIdentifier KEYCLOAK_COMMON = ModuleIdentifier.create("org.keycloak.keycloak-common");
diff --git a/adapters/saml/wildfly/wildfly-subsystem/src/main/java/org/keycloak/subsystem/adapter/saml/extension/KeycloakDependencyProcessorWildFly.java b/adapters/saml/wildfly/wildfly-subsystem/src/main/java/org/keycloak/subsystem/adapter/saml/extension/KeycloakDependencyProcessorWildFly.java
index 3c432450d6..1565fa47f6 100755
--- a/adapters/saml/wildfly/wildfly-subsystem/src/main/java/org/keycloak/subsystem/adapter/saml/extension/KeycloakDependencyProcessorWildFly.java
+++ b/adapters/saml/wildfly/wildfly-subsystem/src/main/java/org/keycloak/subsystem/adapter/saml/extension/KeycloakDependencyProcessorWildFly.java
@@ -22,6 +22,7 @@ import static org.keycloak.subsystem.adapter.saml.extension.Elytron.isElytronEna
import org.jboss.as.server.deployment.DeploymentPhaseContext;
import org.jboss.as.server.deployment.module.ModuleDependency;
import org.jboss.as.server.deployment.module.ModuleSpecification;
+import org.jboss.modules.ModuleClassLoader;
import org.jboss.modules.ModuleIdentifier;
import org.jboss.modules.ModuleLoader;
@@ -33,11 +34,18 @@ import org.jboss.modules.ModuleLoader;
public class KeycloakDependencyProcessorWildFly extends KeycloakDependencyProcessor {
private static final ModuleIdentifier KEYCLOAK_ELYTRON_ADAPTER = ModuleIdentifier.create("org.keycloak.keycloak-saml-wildfly-elytron-adapter");
+ private static final ModuleIdentifier KEYCLOAK_ELYTRON_JAKARTA_ADAPTER = ModuleIdentifier.create("org.keycloak.keycloak-saml-wildfly-elytron-jakarta-adapter");
@Override
protected void addPlatformSpecificModules(DeploymentPhaseContext phaseContext, ModuleSpecification moduleSpecification, ModuleLoader moduleLoader) {
if (isElytronEnabled(phaseContext)) {
- moduleSpecification.addSystemDependency(new ModuleDependency(moduleLoader, KEYCLOAK_ELYTRON_ADAPTER, true, false, false, false));
+ ClassLoader classLoader = getClass().getClassLoader();
+ String classLoaderName = (classLoader instanceof ModuleClassLoader ? ((ModuleClassLoader)classLoader).getName() : "");
+ if (classLoaderName.contains("jakarta")) {
+ moduleSpecification.addSystemDependency(new ModuleDependency(moduleLoader, KEYCLOAK_ELYTRON_JAKARTA_ADAPTER, true, false, false, false));
+ } else {
+ moduleSpecification.addSystemDependency(new ModuleDependency(moduleLoader, KEYCLOAK_ELYTRON_ADAPTER, true, false, false, false));
+ }
} else {
throw new RuntimeException("Legacy WildFly security layer is no longer supported by the Keycloak WildFly adapter");
}
diff --git a/adapters/saml/wildfly/wildfly-subsystem/src/main/java/org/keycloak/subsystem/adapter/saml/extension/KeycloakSubsystemDefinition.java b/adapters/saml/wildfly/wildfly-subsystem/src/main/java/org/keycloak/subsystem/adapter/saml/extension/KeycloakSubsystemDefinition.java
index 9ed384aac1..ff062d04f6 100755
--- a/adapters/saml/wildfly/wildfly-subsystem/src/main/java/org/keycloak/subsystem/adapter/saml/extension/KeycloakSubsystemDefinition.java
+++ b/adapters/saml/wildfly/wildfly-subsystem/src/main/java/org/keycloak/subsystem/adapter/saml/extension/KeycloakSubsystemDefinition.java
@@ -20,6 +20,8 @@ import org.jboss.as.controller.ReloadRequiredRemoveStepHandler;
import org.jboss.as.controller.SimpleResourceDefinition;
import org.jboss.as.controller.operations.common.GenericSubsystemDescribeHandler;
import org.jboss.as.controller.registry.ManagementResourceRegistration;
+import org.jboss.as.controller.registry.RuntimePackageDependency;
+import org.jboss.modules.ModuleIdentifier;
/**
* Definition of subsystem=keycloak-saml.
@@ -29,6 +31,7 @@ import org.jboss.as.controller.registry.ManagementResourceRegistration;
public class KeycloakSubsystemDefinition extends SimpleResourceDefinition {
static final KeycloakSubsystemDefinition INSTANCE = new KeycloakSubsystemDefinition();
+ static final ModuleIdentifier KEYCLOAK_JBOSS_CORE_ADAPTER = ModuleIdentifier.create("org.keycloak.keycloak-jboss-adapter-core");
private KeycloakSubsystemDefinition() {
super(KeycloakSamlExtension.SUBSYSTEM_PATH,
@@ -43,4 +46,11 @@ public class KeycloakSubsystemDefinition extends SimpleResourceDefinition {
super.registerOperations(resourceRegistration);
resourceRegistration.registerOperationHandler(GenericSubsystemDescribeHandler.DEFINITION, GenericSubsystemDescribeHandler.INSTANCE);
}
+
+ @Override
+ public void registerAdditionalRuntimePackages(ManagementResourceRegistration resourceRegistration) {
+ // This module is required by deployment but not referenced by JBoss modules
+ resourceRegistration.registerAdditionalRuntimePackages(
+ RuntimePackageDependency.required(KEYCLOAK_JBOSS_CORE_ADAPTER.getName()));
+ }
}
diff --git a/adapters/spi/jakarta-servlet-adapter-spi/pom.xml b/adapters/spi/jakarta-servlet-adapter-spi/pom.xml
new file mode 100755
index 0000000000..a5d8d48e47
--- /dev/null
+++ b/adapters/spi/jakarta-servlet-adapter-spi/pom.xml
@@ -0,0 +1,105 @@
+
+
+
+
+
+ keycloak-parent
+ org.keycloak
+ 999.0.0-SNAPSHOT
+ ../../../pom.xml
+
+ 4.0.0
+
+ keycloak-jakarta-servlet-adapter-spi
+ Keycloak Jakarta Servlet Integration
+
+
+
+
+ org.keycloak.adapters.servlet.*
+
+
+ *;resolution:=optional
+
+ ${project.groupId}.keycloak-jakarta-servlet-filter-adapter
+
+
+
+
+ org.jboss.logging
+ jboss-logging
+
+
+ org.keycloak
+ keycloak-adapter-spi
+
+
+ org.keycloak
+ keycloak-common
+
+
+ jakarta.servlet
+ jakarta.servlet-api
+ provided
+
+
+ junit
+ junit
+ test
+
+
+
+
+
+
+ maven-jar-plugin
+
+
+ ${project.build.outputDirectory}/META-INF/MANIFEST.MF
+
+
+
+
+ org.apache.felix
+ maven-bundle-plugin
+ true
+
+
+ bundle-manifest
+ process-classes
+
+ manifest
+
+
+
+
+
+ .
+ ${project.name}
+ ${project.groupId}.${project.artifactId}
+ ${keycloak.osgi.import}
+ ${keycloak.osgi.export}
+ ${keycloak.osgi.fragment}
+
+
+
+
+
+
+
diff --git a/adapters/spi/jakarta-servlet-adapter-spi/src/main/java/org/keycloak/adapters/servlet/FilterSessionStore.java b/adapters/spi/jakarta-servlet-adapter-spi/src/main/java/org/keycloak/adapters/servlet/FilterSessionStore.java
new file mode 100755
index 0000000000..aaa84a82a2
--- /dev/null
+++ b/adapters/spi/jakarta-servlet-adapter-spi/src/main/java/org/keycloak/adapters/servlet/FilterSessionStore.java
@@ -0,0 +1,430 @@
+/*
+ * Copyright 2016 Red Hat, Inc. and/or its affiliates
+ * and other contributors as indicated by the @author tags.
+ *
+ * Licensed 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.keycloak.adapters.servlet;
+
+import org.keycloak.adapters.spi.AdapterSessionStore;
+import org.keycloak.adapters.spi.HttpFacade;
+import org.keycloak.adapters.spi.KeycloakAccount;
+import org.keycloak.common.util.Encode;
+import org.keycloak.common.util.MultivaluedHashMap;
+
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletInputStream;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequestWrapper;
+import jakarta.servlet.http.HttpSession;
+import jakarta.servlet.ReadListener;
+import java.io.BufferedReader;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.security.Principal;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * @author Bill Burke
+ * @version $Revision: 1 $
+ */
+public class FilterSessionStore implements AdapterSessionStore {
+ public static final String REDIRECT_URI = "__REDIRECT_URI";
+ public static final String SAVED_METHOD = "__SAVED_METHOD";
+ public static final String SAVED_HEADERS = "__SAVED_HEADERS";
+ public static final String SAVED_BODY = "__SAVED_BODY";
+ protected final HttpServletRequest request;
+ protected final HttpFacade facade;
+ protected final int maxBuffer;
+ protected byte[] restoredBuffer = null;
+ protected boolean needRequestRestore;
+
+ public FilterSessionStore(HttpServletRequest request, HttpFacade facade, int maxBuffer) {
+ this.request = request;
+ this.facade = facade;
+ this.maxBuffer = maxBuffer;
+ }
+
+ public void clearSavedRequest(HttpSession session) {
+ session.removeAttribute(REDIRECT_URI);
+ session.removeAttribute(SAVED_METHOD);
+ session.removeAttribute(SAVED_HEADERS);
+ session.removeAttribute(SAVED_BODY);
+ }
+
+ public void servletRequestLogout() {
+
+ }
+
+ public static String getCharsetFromContentType(String contentType) {
+
+ if (contentType == null)
+ return (null);
+ int start = contentType.indexOf("charset=");
+ if (start < 0)
+ return (null);
+ String encoding = contentType.substring(start + 8);
+ int end = encoding.indexOf(';');
+ if (end >= 0)
+ encoding = encoding.substring(0, end);
+ encoding = encoding.trim();
+ if ((encoding.length() > 2) && (encoding.startsWith("\""))
+ && (encoding.endsWith("\"")))
+ encoding = encoding.substring(1, encoding.length() - 1);
+ return (encoding.trim());
+
+ }
+
+
+ public HttpServletRequestWrapper buildWrapper(HttpSession session, final KeycloakAccount account) {
+ if (needRequestRestore) {
+ final String method = (String)session.getAttribute(SAVED_METHOD);
+ final byte[] body = (byte[])session.getAttribute(SAVED_BODY);
+ final MultivaluedHashMap headers = (MultivaluedHashMap)session.getAttribute(SAVED_HEADERS);
+ clearSavedRequest(session);
+ HttpServletRequestWrapper wrapper = new HttpServletRequestWrapper(request) {
+ protected MultivaluedHashMap parameters;
+
+ MultivaluedHashMap getParams() {
+ if (parameters != null) return parameters;
+
+ if (body == null) return new MultivaluedHashMap();
+
+ String contentType = getContentType();
+ if (contentType != null && contentType.toLowerCase().startsWith("application/x-www-form-urlencoded")) {
+ ByteArrayInputStream is = new ByteArrayInputStream(body);
+ try {
+ parameters = parseForm(is);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ return parameters;
+
+ }
+ @Override
+ public boolean isUserInRole(String role) {
+ return account.getRoles().contains(role);
+ }
+
+ @Override
+ public Principal getUserPrincipal() {
+ return account.getPrincipal();
+ }
+
+ @Override
+ public String getMethod() {
+ if (needRequestRestore) {
+ return method;
+ } else {
+ return super.getMethod();
+
+ }
+ }
+
+ @Override
+ public String getHeader(String name) {
+ if (needRequestRestore && headers != null) {
+ return headers.getFirst(name.toLowerCase());
+ }
+ return super.getHeader(name);
+ }
+
+ @Override
+ public Enumeration getHeaders(String name) {
+ if (needRequestRestore && headers != null) {
+ List values = headers.getList(name.toLowerCase());
+ if (values == null) return Collections.emptyEnumeration();
+ else return Collections.enumeration(values);
+ }
+ return super.getHeaders(name);
+ }
+
+ @Override
+ public Enumeration getHeaderNames() {
+ if (needRequestRestore && headers != null) {
+ return Collections.enumeration(headers.keySet());
+ }
+ return super.getHeaderNames();
+ }
+
+ @Override
+ public ServletInputStream getInputStream() throws IOException {
+
+ if (needRequestRestore && body != null) {
+ final ByteArrayInputStream is = new ByteArrayInputStream(body);
+ return new ServletInputStream() {
+ @Override
+ public int read() throws IOException {
+ return is.read();
+ }
+ @Override
+ public boolean isFinished() {
+ return isFinished();
+ }
+ @Override
+ public boolean isReady() {
+ return isReady();
+ }
+ public void setReadListener(ReadListener readListener) {
+ throw new UnsupportedOperationException();
+ }
+ };
+ }
+ return super.getInputStream();
+ }
+
+ @Override
+ public void logout() throws ServletException {
+ servletRequestLogout();
+ }
+
+ @Override
+ public long getDateHeader(String name) {
+ if (!needRequestRestore) return super.getDateHeader(name);
+ return -1;
+ }
+
+ @Override
+ public int getIntHeader(String name) {
+ if (!needRequestRestore) return super.getIntHeader(name);
+ String value = getHeader(name);
+ if (value == null) return -1;
+ return Integer.valueOf(value);
+
+ }
+
+ @Override
+ public String[] getParameterValues(String name) {
+ if (!needRequestRestore) return super.getParameterValues(name);
+ MultivaluedHashMap formParams = getParams();
+ if (formParams == null) {
+ return super.getParameterValues(name);
+ }
+ String[] values = request.getParameterValues(name);
+ List list = new LinkedList<>();
+ if (values != null) {
+ for (String val : values) list.add(val);
+ }
+ List vals = formParams.get(name);
+ if (vals != null) list.addAll(vals);
+ return list.toArray(new String[list.size()]);
+ }
+
+ @Override
+ public Enumeration getParameterNames() {
+ if (!needRequestRestore) return super.getParameterNames();
+ MultivaluedHashMap formParams = getParams();
+ if (formParams == null) {
+ return super.getParameterNames();
+ }
+ Set names = new HashSet<>();
+ Enumeration qnames = super.getParameterNames();
+ while (qnames.hasMoreElements()) names.add(qnames.nextElement());
+ names.addAll(formParams.keySet());
+ return Collections.enumeration(names);
+
+ }
+
+ @Override
+ public Map getParameterMap() {
+ if (!needRequestRestore) return super.getParameterMap();
+ MultivaluedHashMap formParams = getParams();
+ if (formParams == null) {
+ return super.getParameterMap();
+ }
+ Map map = new HashMap<>();
+ Enumeration names = getParameterNames();
+ while (names.hasMoreElements()) {
+ String name = names.nextElement();
+ String[] values = getParameterValues(name);
+ if (values != null) {
+ map.put(name, values);
+ }
+ }
+ return map;
+ }
+
+ @Override
+ public String getParameter(String name) {
+ if (!needRequestRestore) return super.getParameter(name);
+ String param = super.getParameter(name);
+ if (param != null) return param;
+ MultivaluedHashMap formParams = getParams();
+ if (formParams == null) {
+ return null;
+ }
+ return formParams.getFirst(name);
+
+ }
+
+ @Override
+ public BufferedReader getReader() throws IOException {
+ if (!needRequestRestore) return super.getReader();
+ return new BufferedReader(new InputStreamReader(getInputStream()));
+ }
+
+ @Override
+ public int getContentLength() {
+ if (!needRequestRestore) return super.getContentLength();
+ String header = getHeader("content-length");
+ if (header == null) return -1;
+ return Integer.valueOf(header);
+ }
+
+ @Override
+ public String getContentType() {
+ if (!needRequestRestore) return super.getContentType();
+ return getHeader("content-type");
+ }
+
+ @Override
+ public String getCharacterEncoding() {
+ if (!needRequestRestore) return super.getCharacterEncoding();
+ return getCharsetFromContentType(getContentType());
+ }
+
+ };
+ return wrapper;
+ } else {
+ return new HttpServletRequestWrapper(request) {
+ @Override
+ public boolean isUserInRole(String role) {
+ return account.getRoles().contains(role);
+ }
+
+ @Override
+ public Principal getUserPrincipal() {
+ if (account == null) return null;
+ return account.getPrincipal();
+ }
+
+ @Override
+ public void logout() throws ServletException {
+ servletRequestLogout();
+ }
+
+
+ };
+ }
+ }
+
+ public String getRedirectUri() {
+ HttpSession session = request.getSession(true);
+ return (String)session.getAttribute(REDIRECT_URI);
+ }
+
+ @Override
+ public boolean restoreRequest() {
+ HttpSession session = request.getSession(false);
+ if (session == null) return false;
+ return session.getAttribute(REDIRECT_URI) != null;
+ }
+
+ public static MultivaluedHashMap parseForm(InputStream entityStream)
+ throws IOException
+ {
+ char[] buffer = new char[100];
+ StringBuffer buf = new StringBuffer();
+ BufferedReader reader = new BufferedReader(new InputStreamReader(entityStream));
+
+ int wasRead = 0;
+ do
+ {
+ wasRead = reader.read(buffer, 0, 100);
+ if (wasRead > 0) buf.append(buffer, 0, wasRead);
+ } while (wasRead > -1);
+
+ String form = buf.toString();
+
+ MultivaluedHashMap formData = new MultivaluedHashMap();
+ if ("".equals(form)) return formData;
+
+ String[] params = form.split("&");
+
+ for (String param : params)
+ {
+ if (param.indexOf('=') >= 0)
+ {
+ String[] nv = param.split("=");
+ String val = nv.length > 1 ? nv[1] : "";
+ formData.add(Encode.decode(nv[0]), Encode.decode(val));
+ }
+ else
+ {
+ formData.add(Encode.decode(param), "");
+ }
+ }
+ return formData;
+ }
+
+
+
+ @Override
+ public void saveRequest() {
+ HttpSession session = request.getSession(true);
+ session.setAttribute(REDIRECT_URI, facade.getRequest().getURI());
+ session.setAttribute(SAVED_METHOD, request.getMethod());
+ MultivaluedHashMap headers = new MultivaluedHashMap<>();
+ Enumeration names = request.getHeaderNames();
+ while (names.hasMoreElements()) {
+ String name = names.nextElement();
+ Enumeration values = request.getHeaders(name);
+ while (values.hasMoreElements()) {
+ headers.add(name.toLowerCase(), values.nextElement());
+ }
+ }
+ session.setAttribute(SAVED_HEADERS, headers);
+ if (request.getMethod().equalsIgnoreCase("GET")) {
+ return;
+ }
+ ByteArrayOutputStream os = new ByteArrayOutputStream();
+
+ byte[] buffer = new byte[4096];
+ int bytesRead;
+ int totalRead = 0;
+ try {
+ InputStream is = request.getInputStream();
+
+ while ( (bytesRead = is.read(buffer) ) >= 0) {
+ os.write(buffer, 0, bytesRead);
+ totalRead += bytesRead;
+ if (totalRead > maxBuffer) {
+ throw new RuntimeException("max buffer reached on a saved request");
+ }
+
+ }
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ byte[] body = os.toByteArray();
+ // Only save the request body if there is something to save
+ if (body.length > 0) {
+ session.setAttribute(SAVED_BODY, body);
+ }
+
+
+ }
+
+}
diff --git a/adapters/spi/jakarta-servlet-adapter-spi/src/main/java/org/keycloak/adapters/servlet/ServletHttpFacade.java b/adapters/spi/jakarta-servlet-adapter-spi/src/main/java/org/keycloak/adapters/servlet/ServletHttpFacade.java
new file mode 100755
index 0000000000..b3d30f45b0
--- /dev/null
+++ b/adapters/spi/jakarta-servlet-adapter-spi/src/main/java/org/keycloak/adapters/servlet/ServletHttpFacade.java
@@ -0,0 +1,268 @@
+/*
+ * Copyright 2016 Red Hat, Inc. and/or its affiliates
+ * and other contributors as indicated by the @author tags.
+ *
+ * Licensed 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.keycloak.adapters.servlet;
+
+import org.keycloak.adapters.spi.AuthenticationError;
+import org.keycloak.adapters.spi.HttpFacade;
+import org.keycloak.adapters.spi.LogoutError;
+import org.keycloak.common.util.MultivaluedHashMap;
+import org.keycloak.common.util.ServerCookie;
+import org.keycloak.common.util.UriUtils;
+
+import javax.security.cert.X509Certificate;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+
+import java.io.BufferedInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.Enumeration;
+import java.util.LinkedList;
+import java.util.List;
+
+/**
+ * @author Bill Burke
+ * @version $Revision: 1 $
+ */
+public class ServletHttpFacade implements HttpFacade {
+ protected final RequestFacade requestFacade = new RequestFacade();
+ protected final ResponseFacade responseFacade = new ResponseFacade();
+ protected HttpServletRequest request;
+ protected HttpServletResponse response;
+ protected MultivaluedHashMap queryParameters;
+
+ public ServletHttpFacade(HttpServletRequest request, HttpServletResponse response) {
+ this.request = request;
+ this.response = response;
+ }
+
+ protected class RequestFacade implements Request {
+
+ private InputStream inputStream;
+
+ @Override
+ public String getMethod() {
+ return request.getMethod();
+ }
+
+ @Override
+ public String getURI() {
+ StringBuffer buf = request.getRequestURL();
+ if (request.getQueryString() != null) {
+ buf.append('?').append(request.getQueryString());
+ }
+ return buf.toString();
+ }
+
+ @Override
+ public String getRelativePath() {
+ String uri = request.getRequestURI();
+ String contextPath = request.getContextPath();
+ String servletPath = uri.substring(uri.indexOf(contextPath) + contextPath.length());
+
+ if ("".equals(servletPath)) {
+ servletPath = "/";
+ }
+
+ return servletPath;
+ }
+
+ @Override
+ public boolean isSecure() {
+ return request.isSecure();
+ }
+
+ @Override
+ public String getFirstParam(String param) {
+ return request.getParameter(param);
+ }
+
+ @Override
+ public String getQueryParamValue(String param) {
+ if (queryParameters == null) {
+ queryParameters = UriUtils.decodeQueryString(request.getQueryString());
+ }
+ return queryParameters.getFirst(param);
+ }
+
+ public MultivaluedHashMap getQueryParameters() {
+ if (queryParameters == null) {
+ queryParameters = UriUtils.decodeQueryString(request.getQueryString());
+ }
+ return queryParameters;
+ }
+
+ @Override
+ public Cookie getCookie(String cookieName) {
+ if (request.getCookies() == null) return null;
+ jakarta.servlet.http.Cookie cookie = null;
+ for (jakarta.servlet.http.Cookie c : request.getCookies()) {
+ if (c.getName().equals(cookieName)) {
+ cookie = c;
+ break;
+ }
+ }
+ if (cookie == null) return null;
+ return new Cookie(cookie.getName(), cookie.getValue(), cookie.getVersion(), cookie.getDomain(), cookie.getPath());
+ }
+
+ @Override
+ public String getHeader(String name) {
+ return request.getHeader(name);
+ }
+
+ @Override
+ public List getHeaders(String name) {
+ Enumeration values = request.getHeaders(name);
+ List list = new LinkedList<>();
+ while (values.hasMoreElements()) list.add(values.nextElement());
+ return list;
+ }
+
+ @Override
+ public InputStream getInputStream() {
+ return getInputStream(false);
+ }
+
+ @Override
+ public InputStream getInputStream(boolean buffered) {
+ if (inputStream != null) {
+ return inputStream;
+ }
+
+ if (buffered) {
+ try {
+ return inputStream = new BufferedInputStream(request.getInputStream());
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ try {
+ return request.getInputStream();
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ @Override
+ public String getRemoteAddr() {
+ return request.getRemoteAddr();
+ }
+
+
+ @Override
+ public void setError(AuthenticationError error) {
+ request.setAttribute(AuthenticationError.class.getName(), error);
+
+ }
+
+ @Override
+ public void setError(LogoutError error) {
+ request.setAttribute(LogoutError.class.getName(), error);
+ }
+ }
+ public boolean isEnded() {
+ return responseFacade.isEnded();
+ }
+
+ protected class ResponseFacade implements Response {
+ protected boolean ended;
+
+ @Override
+ public void setStatus(int status) {
+ response.setStatus(status);
+ }
+
+ @Override
+ public void addHeader(String name, String value) {
+ response.addHeader(name, value);
+ }
+
+ @Override
+ public void setHeader(String name, String value) {
+ response.setHeader(name, value);
+ }
+
+ @Override
+ public void resetCookie(String name, String path) {
+ setCookie(name, "", path, null, 0, false, false);
+ }
+
+ @Override
+ public void setCookie(String name, String value, String path, String domain, int maxAge, boolean secure, boolean httpOnly) {
+ StringBuilder cookieBuf = new StringBuilder();
+ ServerCookie.appendCookieValue(cookieBuf, 1, name, value, path, domain, null, maxAge, secure, httpOnly, null);
+ String cookie = cookieBuf.toString();
+ response.addHeader("Set-Cookie", cookie);
+ }
+
+ @Override
+ public OutputStream getOutputStream() {
+ try {
+ return response.getOutputStream();
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ @Override
+ public void sendError(int code) {
+ try {
+ response.sendError(code);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ @Override
+ public void sendError(int code, String message) {
+ try {
+ response.sendError(code, message);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ @Override
+ public void end() {
+ ended = true;
+ }
+
+ public boolean isEnded() {
+ return ended;
+ }
+ }
+
+
+ @Override
+ public Request getRequest() {
+ return requestFacade;
+ }
+
+ @Override
+ public Response getResponse() {
+ return responseFacade;
+ }
+
+ @Override
+ public X509Certificate[] getCertificateChain() {
+ throw new IllegalStateException("Not supported yet");
+ }
+}
diff --git a/adapters/spi/pom.xml b/adapters/spi/pom.xml
index 3d033775ac..6bd05d9b41 100755
--- a/adapters/spi/pom.xml
+++ b/adapters/spi/pom.xml
@@ -35,6 +35,7 @@
tomcat-adapter-spi
undertow-adapter-spi
servlet-adapter-spi
+ jakarta-servlet-adapter-spi
jboss-adapter-core
jetty-adapter-spi
diff --git a/distribution/galleon-feature-packs/pom.xml b/distribution/galleon-feature-packs/pom.xml
new file mode 100644
index 0000000000..fcbedba3b0
--- /dev/null
+++ b/distribution/galleon-feature-packs/pom.xml
@@ -0,0 +1,37 @@
+
+
+
+
+ keycloak-distribution-parent
+ org.keycloak
+ 999.0.0-SNAPSHOT
+
+
+ Galleon Feature Pack Builds
+
+ 4.0.0
+
+ galleon-feature-packs-parent
+ pom
+
+
+ saml-adapter-galleon-pack
+
+
+
diff --git a/distribution/galleon-feature-packs/saml-adapter-galleon-pack/pom.xml b/distribution/galleon-feature-packs/saml-adapter-galleon-pack/pom.xml
new file mode 100644
index 0000000000..46c4eb0a60
--- /dev/null
+++ b/distribution/galleon-feature-packs/saml-adapter-galleon-pack/pom.xml
@@ -0,0 +1,264 @@
+
+
+
+
+ org.keycloak
+ galleon-feature-packs-parent
+ 999.0.0-SNAPSHOT
+
+
+ 4.0.0
+
+ org.keycloak
+ keycloak-saml-adapter-galleon-pack
+
+ Keycloak Galleon Feature Pack: SAML Adapter
+ pom
+
+
+ 27.0.0.Final
+ 1.2.13.Final
+ 19.0.0.Final
+
+ ${basedir}/../../saml-adapters/wildfly-adapter/wildfly-jakarta-modules/src/main/resources
+ 6.4.0.Final
+ ${basedir}/src/main/resources/licenses/keycloak/licenses.xml
+ ${basedir}/target/resources/packages/licenses/content/docs/licenses-keycloak
+
+
+
+ org.keycloak
+ keycloak-adapter-spi
+
+
+ *
+ *
+
+
+ provided
+
+
+ org.keycloak
+ keycloak-common
+
+
+ *
+ *
+
+
+ provided
+
+
+ org.keycloak
+ keycloak-core
+
+
+ *
+ *
+
+
+ provided
+
+
+ org.keycloak
+ keycloak-crypto-default
+
+
+ *
+ *
+
+
+ provided
+
+
+ org.keycloak
+ keycloak-jboss-adapter-core
+
+
+ *
+ *
+
+
+ provided
+
+
+ org.keycloak
+ keycloak-saml-adapter-api-public
+
+
+ *
+ *
+
+
+ provided
+
+
+ org.keycloak
+ keycloak-saml-adapter-core
+
+
+ *
+ *
+
+
+ provided
+
+
+ org.keycloak
+ keycloak-saml-core
+
+
+ *
+ *
+
+
+ provided
+
+
+ org.keycloak
+ keycloak-saml-core-public
+
+
+ *
+ *
+
+
+ provided
+
+
+ org.keycloak
+ keycloak-saml-undertow-adapter
+
+
+ *
+ *
+
+
+ provided
+
+
+ org.keycloak
+ keycloak-saml-wildfly-elytron-jakarta-adapter
+
+
+ *
+ *
+
+
+ provided
+
+
+ org.keycloak
+ keycloak-saml-wildfly-jakarta-subsystem
+
+
+ *
+ *
+
+
+ provided
+
+
+ org.keycloak
+ keycloak-undertow-adapter-spi
+
+
+ *
+ *
+
+
+ provided
+
+
+ org.wildfly
+ wildfly-ee-galleon-pack
+ ${wildfly.version}
+ zip
+ provided
+
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-resources-plugin
+
+
+ copy-resources
+ process-resources
+
+ copy-resources
+
+
+ ${basedir}/target/resources
+
+
+ ${basedir}/src/main/resources
+
+
+
+
+
+
+
+ org.wildfly.galleon-plugins
+ wildfly-galleon-maven-plugin
+ ${version.org.wildfly.galleon-plugins}
+
+
+
+ org.wildfly.core
+ wildfly-embedded
+ ${wildfly.core.version}
+
+
+
+ org.wildfly.common
+ wildfly-common
+ ${wildfly.common.version}
+
+
+
+
+ keycloak-saml-adapter-galleon-pack-build
+
+ build-feature-pack
+
+ compile
+
+ REQUIRED
+ true
+ git false
+ false
+
+
+
+
+
+ org.keycloak
+ keycloak-distribution-licenses-maven-plugin
+
+
+
+
\ No newline at end of file
diff --git a/distribution/galleon-feature-packs/saml-adapter-galleon-pack/src/main/resources/layers/standalone/keycloak-client-saml-ejb/layer-spec.xml b/distribution/galleon-feature-packs/saml-adapter-galleon-pack/src/main/resources/layers/standalone/keycloak-client-saml-ejb/layer-spec.xml
new file mode 100644
index 0000000000..e130798553
--- /dev/null
+++ b/distribution/galleon-feature-packs/saml-adapter-galleon-pack/src/main/resources/layers/standalone/keycloak-client-saml-ejb/layer-spec.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/distribution/galleon-feature-packs/saml-adapter-galleon-pack/src/main/resources/layers/standalone/keycloak-client-saml/layer-spec.xml b/distribution/galleon-feature-packs/saml-adapter-galleon-pack/src/main/resources/layers/standalone/keycloak-client-saml/layer-spec.xml
new file mode 100644
index 0000000000..00f1c159b9
--- /dev/null
+++ b/distribution/galleon-feature-packs/saml-adapter-galleon-pack/src/main/resources/layers/standalone/keycloak-client-saml/layer-spec.xml
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/distribution/galleon-feature-packs/saml-adapter-galleon-pack/src/main/resources/layers/standalone/keycloak-saml/layer-spec.xml b/distribution/galleon-feature-packs/saml-adapter-galleon-pack/src/main/resources/layers/standalone/keycloak-saml/layer-spec.xml
new file mode 100644
index 0000000000..4de96d950d
--- /dev/null
+++ b/distribution/galleon-feature-packs/saml-adapter-galleon-pack/src/main/resources/layers/standalone/keycloak-saml/layer-spec.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/distribution/galleon-feature-packs/saml-adapter-galleon-pack/src/main/resources/licenses/keycloak/licenses.xml b/distribution/galleon-feature-packs/saml-adapter-galleon-pack/src/main/resources/licenses/keycloak/licenses.xml
new file mode 100644
index 0000000000..938a11b5cc
--- /dev/null
+++ b/distribution/galleon-feature-packs/saml-adapter-galleon-pack/src/main/resources/licenses/keycloak/licenses.xml
@@ -0,0 +1,136 @@
+
+
+
+
+ org.keycloak
+ keycloak-adapter-spi
+
+
+ Apache Software License 2.0
+ https://raw.githubusercontent.com/keycloak/keycloak/999-SNAPSHOT/LICENSE.txt
+
+
+
+
+ org.keycloak
+ keycloak-undertow-adapter-spi
+
+
+ Apache Software License 2.0
+ https://raw.githubusercontent.com/keycloak/keycloak/999-SNAPSHOT/LICENSE.txt
+
+
+
+
+ org.keycloak
+ keycloak-common
+
+
+ Apache Software License 2.0
+ https://raw.githubusercontent.com/keycloak/keycloak/999-SNAPSHOT/LICENSE.txt
+
+
+
+
+ org.keycloak
+ keycloak-core
+
+
+ Apache Software License 2.0
+ https://raw.githubusercontent.com/keycloak/keycloak/999-SNAPSHOT/LICENSE.txt
+
+
+
+
+ org.keycloak
+ keycloak-crypto-default
+
+
+ Apache Software License 2.0
+ https://raw.githubusercontent.com/keycloak/keycloak/999-SNAPSHOT/LICENSE.txt
+
+
+
+
+ org.keycloak
+ keycloak-jboss-adapter-core
+
+
+ Apache Software License 2.0
+ https://raw.githubusercontent.com/keycloak/keycloak/999-SNAPSHOT/LICENSE.txt
+
+
+
+
+ org.keycloak
+ keycloak-saml-adapter-api-public
+
+
+ Apache Software License 2.0
+ https://raw.githubusercontent.com/keycloak/keycloak/999-SNAPSHOT/LICENSE.txt
+
+
+
+
+ org.keycloak
+ keycloak-saml-adapter-core
+
+
+ Apache Software License 2.0
+ https://raw.githubusercontent.com/keycloak/keycloak/999-SNAPSHOT/LICENSE.txt
+
+
+
+
+ org.keycloak
+ keycloak-saml-core
+
+
+ Apache Software License 2.0
+ https://raw.githubusercontent.com/keycloak/keycloak/999-SNAPSHOT/LICENSE.txt
+
+
+
+
+ org.keycloak
+ keycloak-saml-core-public
+
+
+ Apache Software License 2.0
+ https://raw.githubusercontent.com/keycloak/keycloak/999-SNAPSHOT/LICENSE.txt
+
+
+
+
+ org.keycloak
+ keycloak-saml-undertow-adapter
+
+
+ Apache Software License 2.0
+ https://raw.githubusercontent.com/keycloak/keycloak/999-SNAPSHOT/LICENSE.txt
+
+
+
+
+ org.keycloak
+ keycloak-saml-wildfly-elytron-adapter
+
+
+ Apache Software License 2.0
+ https://raw.githubusercontent.com/keycloak/keycloak/999-SNAPSHOT/LICENSE.txt
+
+
+
+
+ org.keycloak
+ keycloak-saml-wildfly-subsystem
+
+
+ Apache Software License 2.0
+ https://raw.githubusercontent.com/keycloak/keycloak/999-SNAPSHOT/LICENSE.txt
+
+
+
+
+
+
diff --git a/distribution/galleon-feature-packs/saml-adapter-galleon-pack/src/main/resources/modules/system/add-ons/keycloak/org/keycloak/keycloak-adapter-spi/main/module.xml b/distribution/galleon-feature-packs/saml-adapter-galleon-pack/src/main/resources/modules/system/add-ons/keycloak/org/keycloak/keycloak-adapter-spi/main/module.xml
new file mode 100755
index 0000000000..f995f6b8b9
--- /dev/null
+++ b/distribution/galleon-feature-packs/saml-adapter-galleon-pack/src/main/resources/modules/system/add-ons/keycloak/org/keycloak/keycloak-adapter-spi/main/module.xml
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/distribution/galleon-feature-packs/saml-adapter-galleon-pack/src/main/resources/modules/system/add-ons/keycloak/org/keycloak/keycloak-common/main/module.xml b/distribution/galleon-feature-packs/saml-adapter-galleon-pack/src/main/resources/modules/system/add-ons/keycloak/org/keycloak/keycloak-common/main/module.xml
new file mode 100755
index 0000000000..0570285cee
--- /dev/null
+++ b/distribution/galleon-feature-packs/saml-adapter-galleon-pack/src/main/resources/modules/system/add-ons/keycloak/org/keycloak/keycloak-common/main/module.xml
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/distribution/galleon-feature-packs/saml-adapter-galleon-pack/src/main/resources/modules/system/add-ons/keycloak/org/keycloak/keycloak-core/main/module.xml b/distribution/galleon-feature-packs/saml-adapter-galleon-pack/src/main/resources/modules/system/add-ons/keycloak/org/keycloak/keycloak-core/main/module.xml
new file mode 100755
index 0000000000..ae472c9dba
--- /dev/null
+++ b/distribution/galleon-feature-packs/saml-adapter-galleon-pack/src/main/resources/modules/system/add-ons/keycloak/org/keycloak/keycloak-core/main/module.xml
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/distribution/galleon-feature-packs/saml-adapter-galleon-pack/src/main/resources/modules/system/add-ons/keycloak/org/keycloak/keycloak-crypto-default/main/module.xml b/distribution/galleon-feature-packs/saml-adapter-galleon-pack/src/main/resources/modules/system/add-ons/keycloak/org/keycloak/keycloak-crypto-default/main/module.xml
new file mode 100644
index 0000000000..341f074123
--- /dev/null
+++ b/distribution/galleon-feature-packs/saml-adapter-galleon-pack/src/main/resources/modules/system/add-ons/keycloak/org/keycloak/keycloak-crypto-default/main/module.xml
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/distribution/galleon-feature-packs/saml-adapter-galleon-pack/src/main/resources/modules/system/add-ons/keycloak/org/keycloak/keycloak-jboss-adapter-core/main/module.xml b/distribution/galleon-feature-packs/saml-adapter-galleon-pack/src/main/resources/modules/system/add-ons/keycloak/org/keycloak/keycloak-jboss-adapter-core/main/module.xml
new file mode 100755
index 0000000000..614a35e3aa
--- /dev/null
+++ b/distribution/galleon-feature-packs/saml-adapter-galleon-pack/src/main/resources/modules/system/add-ons/keycloak/org/keycloak/keycloak-jboss-adapter-core/main/module.xml
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/distribution/galleon-feature-packs/saml-adapter-galleon-pack/src/main/resources/modules/system/add-ons/keycloak/org/keycloak/keycloak-saml-adapter-api-public/main/module.xml b/distribution/galleon-feature-packs/saml-adapter-galleon-pack/src/main/resources/modules/system/add-ons/keycloak/org/keycloak/keycloak-saml-adapter-api-public/main/module.xml
new file mode 100755
index 0000000000..779cf599f3
--- /dev/null
+++ b/distribution/galleon-feature-packs/saml-adapter-galleon-pack/src/main/resources/modules/system/add-ons/keycloak/org/keycloak/keycloak-saml-adapter-api-public/main/module.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/distribution/galleon-feature-packs/saml-adapter-galleon-pack/src/main/resources/modules/system/add-ons/keycloak/org/keycloak/keycloak-saml-adapter-core/main/module.xml b/distribution/galleon-feature-packs/saml-adapter-galleon-pack/src/main/resources/modules/system/add-ons/keycloak/org/keycloak/keycloak-saml-adapter-core/main/module.xml
new file mode 100755
index 0000000000..6048c0bf4a
--- /dev/null
+++ b/distribution/galleon-feature-packs/saml-adapter-galleon-pack/src/main/resources/modules/system/add-ons/keycloak/org/keycloak/keycloak-saml-adapter-core/main/module.xml
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/distribution/galleon-feature-packs/saml-adapter-galleon-pack/src/main/resources/modules/system/add-ons/keycloak/org/keycloak/keycloak-saml-adapter-subsystem/main/module.xml b/distribution/galleon-feature-packs/saml-adapter-galleon-pack/src/main/resources/modules/system/add-ons/keycloak/org/keycloak/keycloak-saml-adapter-subsystem/main/module.xml
new file mode 100755
index 0000000000..b48b7a19bb
--- /dev/null
+++ b/distribution/galleon-feature-packs/saml-adapter-galleon-pack/src/main/resources/modules/system/add-ons/keycloak/org/keycloak/keycloak-saml-adapter-subsystem/main/module.xml
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/distribution/galleon-feature-packs/saml-adapter-galleon-pack/src/main/resources/modules/system/add-ons/keycloak/org/keycloak/keycloak-saml-core-public/main/module.xml b/distribution/galleon-feature-packs/saml-adapter-galleon-pack/src/main/resources/modules/system/add-ons/keycloak/org/keycloak/keycloak-saml-core-public/main/module.xml
new file mode 100755
index 0000000000..7f12afc6ce
--- /dev/null
+++ b/distribution/galleon-feature-packs/saml-adapter-galleon-pack/src/main/resources/modules/system/add-ons/keycloak/org/keycloak/keycloak-saml-core-public/main/module.xml
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/distribution/galleon-feature-packs/saml-adapter-galleon-pack/src/main/resources/modules/system/add-ons/keycloak/org/keycloak/keycloak-saml-core/main/module.xml b/distribution/galleon-feature-packs/saml-adapter-galleon-pack/src/main/resources/modules/system/add-ons/keycloak/org/keycloak/keycloak-saml-core/main/module.xml
new file mode 100755
index 0000000000..73d2b398e3
--- /dev/null
+++ b/distribution/galleon-feature-packs/saml-adapter-galleon-pack/src/main/resources/modules/system/add-ons/keycloak/org/keycloak/keycloak-saml-core/main/module.xml
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/distribution/galleon-feature-packs/saml-adapter-galleon-pack/src/main/resources/modules/system/add-ons/keycloak/org/keycloak/keycloak-saml-undertow-adapter/main/module.xml b/distribution/galleon-feature-packs/saml-adapter-galleon-pack/src/main/resources/modules/system/add-ons/keycloak/org/keycloak/keycloak-saml-undertow-adapter/main/module.xml
new file mode 100755
index 0000000000..0aa94c746a
--- /dev/null
+++ b/distribution/galleon-feature-packs/saml-adapter-galleon-pack/src/main/resources/modules/system/add-ons/keycloak/org/keycloak/keycloak-saml-undertow-adapter/main/module.xml
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/distribution/galleon-feature-packs/saml-adapter-galleon-pack/src/main/resources/modules/system/add-ons/keycloak/org/keycloak/keycloak-saml-wildfly-elytron-jakarta-adapter/main/module.xml b/distribution/galleon-feature-packs/saml-adapter-galleon-pack/src/main/resources/modules/system/add-ons/keycloak/org/keycloak/keycloak-saml-wildfly-elytron-jakarta-adapter/main/module.xml
new file mode 100755
index 0000000000..5c449c9202
--- /dev/null
+++ b/distribution/galleon-feature-packs/saml-adapter-galleon-pack/src/main/resources/modules/system/add-ons/keycloak/org/keycloak/keycloak-saml-wildfly-elytron-jakarta-adapter/main/module.xml
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/distribution/galleon-feature-packs/saml-adapter-galleon-pack/src/main/resources/modules/system/add-ons/keycloak/org/keycloak/keycloak-saml-wildfly-jakarta-subsystem/main/module.xml b/distribution/galleon-feature-packs/saml-adapter-galleon-pack/src/main/resources/modules/system/add-ons/keycloak/org/keycloak/keycloak-saml-wildfly-jakarta-subsystem/main/module.xml
new file mode 100755
index 0000000000..11f364eaf4
--- /dev/null
+++ b/distribution/galleon-feature-packs/saml-adapter-galleon-pack/src/main/resources/modules/system/add-ons/keycloak/org/keycloak/keycloak-saml-wildfly-jakarta-subsystem/main/module.xml
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/distribution/galleon-feature-packs/saml-adapter-galleon-pack/src/main/resources/packages/licenses/package.xml b/distribution/galleon-feature-packs/saml-adapter-galleon-pack/src/main/resources/packages/licenses/package.xml
new file mode 100644
index 0000000000..9c0660065e
--- /dev/null
+++ b/distribution/galleon-feature-packs/saml-adapter-galleon-pack/src/main/resources/packages/licenses/package.xml
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/distribution/galleon-feature-packs/saml-adapter-galleon-pack/wildfly-feature-pack-build.xml b/distribution/galleon-feature-packs/saml-adapter-galleon-pack/wildfly-feature-pack-build.xml
new file mode 100644
index 0000000000..e5f03489e2
--- /dev/null
+++ b/distribution/galleon-feature-packs/saml-adapter-galleon-pack/wildfly-feature-pack-build.xml
@@ -0,0 +1,38 @@
+
+
+
+
+
+ org.wildfly:wildfly-ee-galleon-pack
+
+
+
+
+
+
+
+
+
+
+
+
+
+ org.keycloak.keycloak-saml-adapter-subsystem
+
+
+
+
\ No newline at end of file
diff --git a/distribution/pom.xml b/distribution/pom.xml
index e8f4487a58..dfb13bdb9b 100755
--- a/distribution/pom.xml
+++ b/distribution/pom.xml
@@ -39,6 +39,7 @@
adapters
saml-adapters
feature-packs
+ galleon-feature-packs
licenses-common
maven-plugins
diff --git a/distribution/saml-adapters/wildfly-adapter/pom.xml b/distribution/saml-adapters/wildfly-adapter/pom.xml
index c11f3c683a..ab52d865da 100755
--- a/distribution/saml-adapters/wildfly-adapter/pom.xml
+++ b/distribution/saml-adapters/wildfly-adapter/pom.xml
@@ -32,6 +32,37 @@
wildfly-modules
- wildfly-adapter-zip
+ wildfly-jakarta-modules
+
+
+
+
+ wildfly-saml-adapter-jakarta-build
+
+
+
+ !todo-wildfly.jakarta.adapters
+
+
+
+ wildfly-adapter-jakarta-zip
+
+
+
+
+ wildfly-saml-adapter-build
+
+
+ !wildfly.jakarta.adapters
+
+
+
+ wildfly-adapter-zip
+
+
+
+
diff --git a/distribution/saml-adapters/wildfly-adapter/wildfly-adapter-jakarta-zip/assembly.xml b/distribution/saml-adapters/wildfly-adapter/wildfly-adapter-jakarta-zip/assembly.xml
new file mode 100755
index 0000000000..e4b01db9e1
--- /dev/null
+++ b/distribution/saml-adapters/wildfly-adapter/wildfly-adapter-jakarta-zip/assembly.xml
@@ -0,0 +1,58 @@
+
+
+
+ war-dist
+
+
+ zip
+ tar.gz
+
+ false
+
+
+
+ ${project.build.directory}/unpacked/modules
+
+ **/**
+
+ modules/system/add-ons/keycloak
+
+
+ ${project.build.directory}/unpacked/licenses
+ docs/licenses-keycloak
+
+
+
+
+
+ bin
+
+
+
+ bin
+
+
+
+ bin
+
+
+
+ bin
+
+
+
diff --git a/distribution/saml-adapters/wildfly-adapter/wildfly-adapter-jakarta-zip/pom.xml b/distribution/saml-adapters/wildfly-adapter/wildfly-adapter-jakarta-zip/pom.xml
new file mode 100755
index 0000000000..794389bd16
--- /dev/null
+++ b/distribution/saml-adapters/wildfly-adapter/wildfly-adapter-jakarta-zip/pom.xml
@@ -0,0 +1,118 @@
+
+
+
+ 4.0.0
+
+ keycloak-parent
+ org.keycloak
+ 999.0.0-SNAPSHOT
+ ../../../../pom.xml
+
+
+ keycloak-saml-wildfly-adapter-jakarta-dist
+ pom
+ Keycloak SAML Wildfly Adapter Jakarta Distro
+
+
+
+
+ org.keycloak
+ keycloak-saml-wildfly-jakarta-modules
+ zip
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-dependency-plugin
+
+
+ unpack
+ prepare-package
+
+ unpack
+
+
+
+
+ org.keycloak
+ keycloak-saml-wildfly-jakarta-modules
+ zip
+ ${project.build.directory}/unpacked
+
+
+
+
+
+
+
+ maven-antrun-plugin
+
+
+ generate-jakarta-cli
+ prepare-package
+
+
+
+
+
+
+
+
+
+
+
+
+ run
+
+
+
+
+
+ maven-assembly-plugin
+
+
+ assemble
+ package
+
+ single
+
+
+
+ assembly.xml
+
+
+ target
+
+
+ target/assembly/work
+
+ false
+
+
+
+
+
+
+
diff --git a/distribution/saml-adapters/wildfly-adapter/wildfly-adapter-zip/pom.xml b/distribution/saml-adapters/wildfly-adapter/wildfly-adapter-zip/pom.xml
index f3517385cf..d503885a0f 100755
--- a/distribution/saml-adapters/wildfly-adapter/wildfly-adapter-zip/pom.xml
+++ b/distribution/saml-adapters/wildfly-adapter/wildfly-adapter-zip/pom.xml
@@ -61,6 +61,7 @@
+
diff --git a/distribution/saml-adapters/wildfly-adapter/wildfly-jakarta-modules/assembly.xml b/distribution/saml-adapters/wildfly-adapter/wildfly-jakarta-modules/assembly.xml
new file mode 100755
index 0000000000..9d38002cfe
--- /dev/null
+++ b/distribution/saml-adapters/wildfly-adapter/wildfly-jakarta-modules/assembly.xml
@@ -0,0 +1,43 @@
+
+
+
+ dist
+
+
+ zip
+
+ false
+
+
+
+ src/main/resources/licenses/keycloak
+ licenses
+
+ licenses.xml
+
+
+
+ ${project.build.directory}/licenses
+ licenses
+
+
+ ${project.build.directory}/modules
+ modules
+
+
+
diff --git a/distribution/saml-adapters/wildfly-adapter/wildfly-jakarta-modules/build.xml b/distribution/saml-adapters/wildfly-adapter/wildfly-jakarta-modules/build.xml
new file mode 100755
index 0000000000..6668467207
--- /dev/null
+++ b/distribution/saml-adapters/wildfly-adapter/wildfly-jakarta-modules/build.xml
@@ -0,0 +1,97 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/distribution/saml-adapters/wildfly-adapter/wildfly-jakarta-modules/lib.xml b/distribution/saml-adapters/wildfly-adapter/wildfly-jakarta-modules/lib.xml
new file mode 100755
index 0000000000..5794c22ec0
--- /dev/null
+++ b/distribution/saml-adapters/wildfly-adapter/wildfly-jakarta-modules/lib.xml
@@ -0,0 +1,277 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ";
+ project.setProperty("current.maven.root", root);
+ ]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ";
+ if(path.indexOf('${') != -1) {
+ throw "Module resource root not found, make sure it is listed in build/pom.xml" + path;
+ }
+ if(attributes.get("jandex") == "true" ) {
+ root = root + "\n\t";
+ }
+ project.setProperty("current.resource.root", root);
+ ]]>
+
+
+
diff --git a/distribution/saml-adapters/wildfly-adapter/wildfly-jakarta-modules/pom.xml b/distribution/saml-adapters/wildfly-adapter/wildfly-jakarta-modules/pom.xml
new file mode 100755
index 0000000000..db6047180c
--- /dev/null
+++ b/distribution/saml-adapters/wildfly-adapter/wildfly-jakarta-modules/pom.xml
@@ -0,0 +1,278 @@
+
+
+
+
+
+ 4.0.0
+
+
+ keycloak-parent
+ org.keycloak
+ 999.0.0-SNAPSHOT
+ ../../../../pom.xml
+
+
+ keycloak-saml-wildfly-jakarta-modules
+
+ Keycloak SAML Wildfly Jakarta Modules
+ pom
+
+
+ org.keycloak
+ keycloak-common
+
+
+ *
+ *
+
+
+
+
+ org.keycloak
+ keycloak-core
+
+
+ *
+ *
+
+
+
+
+ org.keycloak
+ keycloak-crypto-default
+
+
+ *
+ *
+
+
+
+
+ org.keycloak
+ keycloak-adapter-spi
+
+
+ *
+ *
+
+
+
+
+ org.keycloak
+ keycloak-undertow-adapter-spi
+
+
+ *
+ *
+
+
+
+
+ org.keycloak
+ keycloak-saml-core
+
+
+ *
+ *
+
+
+
+
+ org.keycloak
+ keycloak-saml-adapter-api-public
+
+
+ *
+ *
+
+
+
+
+ org.keycloak
+ keycloak-saml-adapter-core
+
+
+ *
+ *
+
+
+
+
+ org.keycloak
+ keycloak-jboss-adapter-core
+
+
+ *
+ *
+
+
+
+
+ org.keycloak
+ keycloak-saml-undertow-adapter
+
+
+ *
+ *
+
+
+
+
+ org.keycloak
+ keycloak-saml-core-public
+
+
+ *
+ *
+
+
+
+
+ org.keycloak
+ keycloak-saml-wildfly-elytron-jakarta-adapter
+
+
+ *
+ *
+
+
+
+
+ org.keycloak
+ keycloak-saml-wildfly-jakarta-subsystem
+
+
+ *
+ *
+
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-antrun-plugin
+ false
+
+
+ build-dist
+
+ run
+
+ compile
+
+
+
+
+
+
+
+
+
+
+
+ org.jboss
+ jandex
+ 1.0.3.Final
+
+
+ ant-contrib
+ ant-contrib
+ 1.0b3
+
+
+ ant
+ ant
+
+
+
+
+ org.apache.ant
+ ant-apache-bsf
+ 1.9.3
+
+
+ org.apache.bsf
+ bsf-api
+ 3.1
+
+
+ rhino
+ js
+ 1.7R2
+
+
+
+
+ maven-assembly-plugin
+
+
+ assemble
+ package
+
+ single
+
+
+
+ assembly.xml
+
+
+ target
+
+
+ target/assembly/work
+
+ false
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-resources-plugin
+
+
+ copy-resources
+
+ validate
+
+ copy-resources
+
+
+ ${project.build.directory}/modules/org/keycloak/keycloak-saml-adapter-subsystem
+
+
+ src/main/resources/modules/org/keycloak/keycloak-saml-adapter-subsystem
+ true
+
+
+
+
+
+
+
+ org.keycloak
+ keycloak-distribution-licenses-maven-plugin
+
+
+
+
diff --git a/distribution/saml-adapters/wildfly-adapter/wildfly-jakarta-modules/src/main/resources/licenses/keycloak/licenses.xml b/distribution/saml-adapters/wildfly-adapter/wildfly-jakarta-modules/src/main/resources/licenses/keycloak/licenses.xml
new file mode 100644
index 0000000000..bac7cdfbcc
--- /dev/null
+++ b/distribution/saml-adapters/wildfly-adapter/wildfly-jakarta-modules/src/main/resources/licenses/keycloak/licenses.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/distribution/saml-adapters/wildfly-adapter/wildfly-jakarta-modules/src/main/resources/licenses/rh-sso/licenses.xml b/distribution/saml-adapters/wildfly-adapter/wildfly-jakarta-modules/src/main/resources/licenses/rh-sso/licenses.xml
new file mode 100644
index 0000000000..bac7cdfbcc
--- /dev/null
+++ b/distribution/saml-adapters/wildfly-adapter/wildfly-jakarta-modules/src/main/resources/licenses/rh-sso/licenses.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/distribution/saml-adapters/wildfly-adapter/wildfly-jakarta-modules/src/main/resources/modules/org/keycloak/keycloak-adapter-spi/main/module.xml b/distribution/saml-adapters/wildfly-adapter/wildfly-jakarta-modules/src/main/resources/modules/org/keycloak/keycloak-adapter-spi/main/module.xml
new file mode 100644
index 0000000000..25ae4fb1fa
--- /dev/null
+++ b/distribution/saml-adapters/wildfly-adapter/wildfly-jakarta-modules/src/main/resources/modules/org/keycloak/keycloak-adapter-spi/main/module.xml
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/distribution/saml-adapters/wildfly-adapter/wildfly-jakarta-modules/src/main/resources/modules/org/keycloak/keycloak-common/main/module.xml b/distribution/saml-adapters/wildfly-adapter/wildfly-jakarta-modules/src/main/resources/modules/org/keycloak/keycloak-common/main/module.xml
new file mode 100644
index 0000000000..2c81303fed
--- /dev/null
+++ b/distribution/saml-adapters/wildfly-adapter/wildfly-jakarta-modules/src/main/resources/modules/org/keycloak/keycloak-common/main/module.xml
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/distribution/saml-adapters/wildfly-adapter/wildfly-jakarta-modules/src/main/resources/modules/org/keycloak/keycloak-core/main/module.xml b/distribution/saml-adapters/wildfly-adapter/wildfly-jakarta-modules/src/main/resources/modules/org/keycloak/keycloak-core/main/module.xml
new file mode 100644
index 0000000000..438d779945
--- /dev/null
+++ b/distribution/saml-adapters/wildfly-adapter/wildfly-jakarta-modules/src/main/resources/modules/org/keycloak/keycloak-core/main/module.xml
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/distribution/saml-adapters/wildfly-adapter/wildfly-jakarta-modules/src/main/resources/modules/org/keycloak/keycloak-crypto-default/main/module.xml b/distribution/saml-adapters/wildfly-adapter/wildfly-jakarta-modules/src/main/resources/modules/org/keycloak/keycloak-crypto-default/main/module.xml
new file mode 100644
index 0000000000..2bc2bfdad1
--- /dev/null
+++ b/distribution/saml-adapters/wildfly-adapter/wildfly-jakarta-modules/src/main/resources/modules/org/keycloak/keycloak-crypto-default/main/module.xml
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/distribution/saml-adapters/wildfly-adapter/wildfly-jakarta-modules/src/main/resources/modules/org/keycloak/keycloak-jboss-adapter-core/main/module.xml b/distribution/saml-adapters/wildfly-adapter/wildfly-jakarta-modules/src/main/resources/modules/org/keycloak/keycloak-jboss-adapter-core/main/module.xml
new file mode 100644
index 0000000000..5f23b1b49e
--- /dev/null
+++ b/distribution/saml-adapters/wildfly-adapter/wildfly-jakarta-modules/src/main/resources/modules/org/keycloak/keycloak-jboss-adapter-core/main/module.xml
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/distribution/saml-adapters/wildfly-adapter/wildfly-jakarta-modules/src/main/resources/modules/org/keycloak/keycloak-saml-adapter-api-public/main/module.xml b/distribution/saml-adapters/wildfly-adapter/wildfly-jakarta-modules/src/main/resources/modules/org/keycloak/keycloak-saml-adapter-api-public/main/module.xml
new file mode 100644
index 0000000000..1438ed9869
--- /dev/null
+++ b/distribution/saml-adapters/wildfly-adapter/wildfly-jakarta-modules/src/main/resources/modules/org/keycloak/keycloak-saml-adapter-api-public/main/module.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/distribution/saml-adapters/wildfly-adapter/wildfly-jakarta-modules/src/main/resources/modules/org/keycloak/keycloak-saml-adapter-core/main/module.xml b/distribution/saml-adapters/wildfly-adapter/wildfly-jakarta-modules/src/main/resources/modules/org/keycloak/keycloak-saml-adapter-core/main/module.xml
new file mode 100644
index 0000000000..eb19ef5866
--- /dev/null
+++ b/distribution/saml-adapters/wildfly-adapter/wildfly-jakarta-modules/src/main/resources/modules/org/keycloak/keycloak-saml-adapter-core/main/module.xml
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/distribution/saml-adapters/wildfly-adapter/wildfly-jakarta-modules/src/main/resources/modules/org/keycloak/keycloak-saml-adapter-subsystem/main/module.xml b/distribution/saml-adapters/wildfly-adapter/wildfly-jakarta-modules/src/main/resources/modules/org/keycloak/keycloak-saml-adapter-subsystem/main/module.xml
new file mode 100644
index 0000000000..7fe1bfad52
--- /dev/null
+++ b/distribution/saml-adapters/wildfly-adapter/wildfly-jakarta-modules/src/main/resources/modules/org/keycloak/keycloak-saml-adapter-subsystem/main/module.xml
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/distribution/saml-adapters/wildfly-adapter/wildfly-jakarta-modules/src/main/resources/modules/org/keycloak/keycloak-saml-core-public/main/module.xml b/distribution/saml-adapters/wildfly-adapter/wildfly-jakarta-modules/src/main/resources/modules/org/keycloak/keycloak-saml-core-public/main/module.xml
new file mode 100644
index 0000000000..563763513d
--- /dev/null
+++ b/distribution/saml-adapters/wildfly-adapter/wildfly-jakarta-modules/src/main/resources/modules/org/keycloak/keycloak-saml-core-public/main/module.xml
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/distribution/saml-adapters/wildfly-adapter/wildfly-jakarta-modules/src/main/resources/modules/org/keycloak/keycloak-saml-core/main/module.xml b/distribution/saml-adapters/wildfly-adapter/wildfly-jakarta-modules/src/main/resources/modules/org/keycloak/keycloak-saml-core/main/module.xml
new file mode 100644
index 0000000000..65d1a02389
--- /dev/null
+++ b/distribution/saml-adapters/wildfly-adapter/wildfly-jakarta-modules/src/main/resources/modules/org/keycloak/keycloak-saml-core/main/module.xml
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/distribution/saml-adapters/wildfly-adapter/wildfly-jakarta-modules/src/main/resources/modules/org/keycloak/keycloak-saml-undertow-adapter/main/module.xml b/distribution/saml-adapters/wildfly-adapter/wildfly-jakarta-modules/src/main/resources/modules/org/keycloak/keycloak-saml-undertow-adapter/main/module.xml
new file mode 100644
index 0000000000..6a380d651b
--- /dev/null
+++ b/distribution/saml-adapters/wildfly-adapter/wildfly-jakarta-modules/src/main/resources/modules/org/keycloak/keycloak-saml-undertow-adapter/main/module.xml
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/distribution/saml-adapters/wildfly-adapter/wildfly-jakarta-modules/src/main/resources/modules/org/keycloak/keycloak-saml-wildfly-elytron-jakarta-adapter/main/module.xml b/distribution/saml-adapters/wildfly-adapter/wildfly-jakarta-modules/src/main/resources/modules/org/keycloak/keycloak-saml-wildfly-elytron-jakarta-adapter/main/module.xml
new file mode 100644
index 0000000000..f56f0e5992
--- /dev/null
+++ b/distribution/saml-adapters/wildfly-adapter/wildfly-jakarta-modules/src/main/resources/modules/org/keycloak/keycloak-saml-wildfly-elytron-jakarta-adapter/main/module.xml
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/distribution/saml-adapters/wildfly-adapter/wildfly-jakarta-modules/src/main/resources/modules/org/keycloak/keycloak-saml-wildfly-jakarta-subsystem/main/module.xml b/distribution/saml-adapters/wildfly-adapter/wildfly-jakarta-modules/src/main/resources/modules/org/keycloak/keycloak-saml-wildfly-jakarta-subsystem/main/module.xml
new file mode 100644
index 0000000000..6ee84301a7
--- /dev/null
+++ b/distribution/saml-adapters/wildfly-adapter/wildfly-jakarta-modules/src/main/resources/modules/org/keycloak/keycloak-saml-wildfly-jakarta-subsystem/main/module.xml
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pom.xml b/pom.xml
index 2832c5a38b..755e8841f8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -48,6 +48,7 @@
26.1.1.Final
1.2.13.Final
18.1.1.Final
+ true
4.5.2
4.4.4
org.wildfly
@@ -77,6 +78,7 @@
2.1.3
2.1.214
2.2.3
+ 6.0.0
5.6.14.Final
${hibernate-orm.version}
14.0.7.Final
@@ -595,6 +597,11 @@
jakarta.persistence-api
${jakarta.persistence.version}
+
+ jakarta.servlet
+ jakarta.servlet-api
+ ${jakarta.servlet.jakarta-servlet-api.version}
+
com.h2database
h2
@@ -1160,6 +1167,11 @@
keycloak-servlet-adapter-spi
${project.version}
+
+ org.keycloak
+ keycloak-jakarta-servlet-adapter-spi
+ ${project.version}
+
org.keycloak
keycloak-adapter-core
@@ -1260,11 +1272,21 @@
keycloak-saml-servlet-filter-adapter
${project.version}
+
+ org.keycloak
+ keycloak-saml-jakarta-servlet-filter-adapter
+ ${project.version}
+
org.keycloak
keycloak-servlet-filter-adapter
${project.version}
+
+ org.keycloak
+ keycloak-jakarta-servlet-filter-adapter
+ ${project.version}
+
org.keycloak
keycloak-saml-as7-adapter
@@ -1305,6 +1327,11 @@
keycloak-saml-wildfly-elytron-adapter
${project.version}
+
+ org.keycloak
+ keycloak-saml-wildfly-elytron-jakarta-adapter
+ ${project.version}
+
org.keycloak
keycloak-wildfly-adduser
@@ -1415,6 +1442,11 @@
keycloak-saml-wildfly-subsystem
${project.version}
+
+ org.keycloak
+ keycloak-saml-wildfly-jakarta-subsystem
+ ${project.version}
+
org.keycloak
keycloak-saml-jetty94-adapter
@@ -1516,6 +1548,12 @@
${project.version}
zip
+
+ org.keycloak
+ keycloak-saml-wildfly-jakarta-modules
+ ${project.version}
+ zip
+
org.keycloak
keycloak-fuse-adapter-dist