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 + + + + + ../../shared-cli/adapter-install-saml.cli + bin + + + ../../shared-cli/adapter-install-saml-offline.cli + bin + + + ${project.build.directory}/shared-cli/adapter-elytron-install-saml.cli + bin + + + ${project.build.directory}/shared-cli/adapter-elytron-install-saml-offline.cli + 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