KEYCLOAK-9598 Apache Tomcat adapter

This commit is contained in:
vramik 2019-05-23 11:00:57 +02:00 committed by Hynek Mlnařík
parent 12d351ae97
commit d245287320
25 changed files with 98 additions and 95 deletions

View File

@ -57,7 +57,7 @@
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-tomcat8-adapter</artifactId>
<artifactId>keycloak-tomcat-adapter</artifactId>
<scope>provided</scope>
</dependency>
<dependency>

View File

@ -12,7 +12,7 @@
<dependencies>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-tomcat8-adapter</artifactId>
<artifactId>keycloak-tomcat-adapter</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
@ -41,7 +41,7 @@
<configuration>
<artifactSet>
<includes>
<include>org.keycloak:keycloak-tomcat8-adapter</include>
<include>org.keycloak:keycloak-tomcat-adapter</include>
<include>org.keycloak:keycloak-undertow-adapter</include>
<include>org.keycloak:keycloak-jetty93-adapter</include>
<include>org.keycloak:keycloak-tomcat-core-adapter</include>

View File

@ -32,7 +32,7 @@
<modules>
<module>tomcat-core</module>
<module>tomcat8</module>
<module>tomcat</module>
</modules>
<profiles>

View File

@ -26,8 +26,8 @@
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>keycloak-tomcat8-adapter</artifactId>
<name>Keycloak Tomcat 8 Integration</name>
<artifactId>keycloak-tomcat-adapter</artifactId>
<name>Keycloak Tomcat Integration</name>
<properties>
<maven.compiler.target>1.7</maven.compiler.target>
<maven.compiler.source>1.7</maven.compiler.source>

View File

@ -27,8 +27,8 @@ import javax.servlet.http.HttpSession;
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
* @version $Revision: 1 $
*/
public class Tomcat8RequestAuthenticator extends CatalinaRequestAuthenticator {
public Tomcat8RequestAuthenticator(KeycloakDeployment deployment, AdapterTokenStore tokenStore, CatalinaHttpFacade facade, Request request, GenericPrincipalFactory principalFactory) {
public class TomcatRequestAuthenticator extends CatalinaRequestAuthenticator {
public TomcatRequestAuthenticator(KeycloakDeployment deployment, AdapterTokenStore tokenStore, CatalinaHttpFacade facade, Request request, GenericPrincipalFactory principalFactory) {
super(deployment, tokenStore, facade, request, principalFactory);
}

View File

@ -32,7 +32,7 @@
<modules>
<module>tomcat-core</module>
<module>tomcat8</module>
<module>tomcat</module>
</modules>
<profiles>

View File

@ -26,8 +26,8 @@
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>keycloak-saml-tomcat8-adapter</artifactId>
<name>Keycloak Tomcat 8 SAML Integration</name>
<artifactId>keycloak-saml-tomcat-adapter</artifactId>
<name>Keycloak Tomcat SAML Integration</name>
<properties>
<maven.compiler.target>1.7</maven.compiler.target>
<maven.compiler.source>1.7</maven.compiler.source>

View File

@ -44,6 +44,7 @@ public class SamlAuthenticatorValve extends AbstractSamlAuthenticatorValve {
/**
* Method called by Tomcat &lt; 8.5.5
*/
@Override
public boolean authenticate(Request request, HttpServletResponse response) throws IOException {
return authenticateInternal(request, response, request.getContext().getLoginConfig());
}
@ -51,6 +52,7 @@ public class SamlAuthenticatorValve extends AbstractSamlAuthenticatorValve {
/**
* Method called by Tomcat &gt;= 8.5.5
*/
@Override
protected boolean doAuthenticate(Request request, HttpServletResponse response) throws IOException {
return this.authenticate(request, response);
}
@ -62,16 +64,7 @@ public class SamlAuthenticatorValve extends AbstractSamlAuthenticatorValve {
if (config.getErrorPage() == null) return false;
// had to do this to get around compiler/IDE issues :(
try {
Method method = null;
/*
for (Method m : getClass().getDeclaredMethods()) {
if (m.getName().equals("forwardToErrorPage")) {
method = m;
break;
}
}
*/
method = FormAuthenticator.class.getDeclaredMethod("forwardToErrorPage", Request.class, HttpServletResponse.class, LoginConfig.class);
Method method = FormAuthenticator.class.getDeclaredMethod("forwardToErrorPage", Request.class, HttpServletResponse.class, LoginConfig.class);
method.setAccessible(true);
method.invoke(this, request, response, config);
} catch (Exception e) {
@ -80,11 +73,13 @@ public class SamlAuthenticatorValve extends AbstractSamlAuthenticatorValve {
return true;
}
@Override
protected void initInternal() {
StandardContext standardContext = (StandardContext) context;
standardContext.addLifecycleListener(this);
}
@Override
public void logout(Request request) {
logoutInternal(request);
}
@ -102,7 +97,7 @@ public class SamlAuthenticatorValve extends AbstractSamlAuthenticatorValve {
@Override
protected SamlSessionStore createSessionStore(Request request, HttpFacade facade, SamlDeployment resolvedDeployment) {
SamlSessionStore store;
store = new Tomcat8SamlSessionStore(userSessionManagement, createPrincipalFactory(), mapper, request, this, facade, resolvedDeployment);
store = new TomcatSamlSessionStore(userSessionManagement, createPrincipalFactory(), mapper, request, this, facade, resolvedDeployment);
return store;
}

View File

@ -32,8 +32,8 @@ import org.keycloak.adapters.tomcat.GenericPrincipalFactory;
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
* @version $Revision: 1 $
*/
public class Tomcat8SamlSessionStore extends CatalinaSamlSessionStore {
public Tomcat8SamlSessionStore(CatalinaUserSessionManagement sessionManagement, GenericPrincipalFactory principalFactory, SessionIdMapper idMapper, Request request, AbstractSamlAuthenticatorValve valve, HttpFacade facade, SamlDeployment deployment) {
public class TomcatSamlSessionStore extends CatalinaSamlSessionStore {
public TomcatSamlSessionStore(CatalinaUserSessionManagement sessionManagement, GenericPrincipalFactory principalFactory, SessionIdMapper idMapper, Request request, AbstractSamlAuthenticatorValve valve, HttpFacade facade, SamlDeployment deployment) {
super(sessionManagement, principalFactory, idMapper, SessionIdMapperUpdater.DIRECT, request, valve, facade, deployment);
}

View File

@ -66,7 +66,7 @@
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-tomcat8-adapter</artifactId>
<artifactId>keycloak-tomcat-adapter</artifactId>
<version>7.0.0-SNAPSHOT</version>
</dependency>
<dependency>

View File

@ -47,8 +47,8 @@
</property>
</activation>
<modules>
<module>tomcat-adapter-zip</module>
<module>tomcat7-adapter-zip</module>
<module>tomcat8-adapter-zip</module>
<module>jetty92-adapter-zip</module>
<module>jetty93-adapter-zip</module>
<module>jetty94-adapter-zip</module>

View File

@ -30,7 +30,7 @@
<useTransitiveDependencies>true</useTransitiveDependencies>
<useTransitiveFiltering>true</useTransitiveFiltering>
<includes>
<include>org.keycloak:keycloak-tomcat8-adapter</include>
<include>org.keycloak:keycloak-tomcat-adapter</include>
</includes>
<excludes>
<exclude>org.apache.tomcat:tomcat-servlet-api</exclude>

View File

@ -25,15 +25,15 @@
<relativePath>../../../pom.xml</relativePath>
</parent>
<artifactId>keycloak-tomcat8-adapter-dist</artifactId>
<artifactId>keycloak-tomcat-adapter-dist</artifactId>
<packaging>pom</packaging>
<name>Keycloak Tomcat 8 Adapter Distro</name>
<name>Keycloak Tomcat Adapter Distro</name>
<description/>
<dependencies>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-tomcat8-adapter</artifactId>
<artifactId>keycloak-tomcat-adapter</artifactId>
</dependency>
</dependencies>
<build>

View File

@ -11,8 +11,8 @@
keycloak-jetty93-adapter-dist
keycloak-jetty94-adapter-dist
keycloak-js-adapter-dist
keycloak-tomcat-adapter-dist
keycloak-tomcat7-adapter-dist
keycloak-tomcat8-adapter-dist
keycloak-wildfly-adapter-dist
keycloak-fuse-adapter-dist
@ -22,6 +22,6 @@
keycloak-saml-jetty92-adapter-dist
keycloak-saml-jetty93-adapter-dist
keycloak-saml-jetty94-adapter-dist
keycloak-saml-tomcat-adapter-dist
keycloak-saml-tomcat7-adapter-dist
keycloak-saml-tomcat8-adapter-dist
keycloak-saml-wildfly-adapter-dist

View File

@ -47,8 +47,8 @@
<module>jetty92-adapter-zip</module>
<module>jetty93-adapter-zip</module>
<module>jetty94-adapter-zip</module>
<module>tomcat-adapter-zip</module>
<module>tomcat7-adapter-zip</module>
<module>tomcat8-adapter-zip</module>
</modules>
</profile>
</profiles>

View File

@ -30,7 +30,7 @@
<useTransitiveDependencies>true</useTransitiveDependencies>
<useTransitiveFiltering>true</useTransitiveFiltering>
<includes>
<include>org.keycloak:keycloak-saml-tomcat8-adapter</include>
<include>org.keycloak:keycloak-saml-tomcat-adapter</include>
</includes>
<excludes>
<exclude>org.apache.tomcat:tomcat-servlet-api</exclude>

View File

@ -25,15 +25,15 @@
<relativePath>../../../pom.xml</relativePath>
</parent>
<artifactId>keycloak-saml-tomcat8-adapter-dist</artifactId>
<artifactId>keycloak-saml-tomcat-adapter-dist</artifactId>
<packaging>pom</packaging>
<name>Keycloak SAML Tomcat 8 Adapter Distro</name>
<name>Keycloak SAML Tomcat Adapter Distro</name>
<description/>
<dependencies>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-saml-tomcat8-adapter</artifactId>
<artifactId>keycloak-saml-tomcat-adapter</artifactId>
</dependency>
</dependencies>
<build>

View File

@ -1006,7 +1006,7 @@
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-saml-tomcat8-adapter</artifactId>
<artifactId>keycloak-saml-tomcat-adapter</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
@ -1016,7 +1016,7 @@
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-tomcat8-adapter</artifactId>
<artifactId>keycloak-tomcat-adapter</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
@ -1260,7 +1260,7 @@
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-tomcat8-adapter-dist</artifactId>
<artifactId>keycloak-tomcat-adapter-dist</artifactId>
<version>${project.version}</version>
<type>zip</type>
</dependency>
@ -1320,7 +1320,7 @@
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-saml-tomcat8-adapter-dist</artifactId>
<artifactId>keycloak-saml-tomcat-adapter-dist</artifactId>
<version>${project.version}</version>
<type>zip</type>
</dependency>

View File

@ -34,13 +34,8 @@
<assembly.xml>${project.parent.basedir}/assembly.xml</assembly.xml>
<app.server.tomcat.home>${containers.home}/${app.server.tomcat.unpacked.folder.name}</app.server.tomcat.home>
<tomcat.resteasy.version>${resteasy.version}</tomcat.resteasy.version>
<skip.dependencies.for.tomcat7>true</skip.dependencies.for.tomcat7>
<skip.dependencies.for.tomcat8>true</skip.dependencies.for.tomcat8>
<skip.dependencies.for.tomcat>false</skip.dependencies.for.tomcat>
<tomcat.scannotation.version>1.0.3</tomcat.scannotation.version>
<tomcat.javassist.version>3.18.2-GA</tomcat.javassist.version>
<tomcat.javaee-api.version>7.0</tomcat.javaee-api.version>
<tomcat.org.glassfish.web.el-impl.version>2.2</tomcat.org.glassfish.web.el-impl.version>
<tomcat.reactive-streams.version>1.0.2</tomcat.reactive-streams.version>
<tomcat.javax.json.bind-api.version>1.0</tomcat.javax.json.bind-api.version>
<tomcat.validation-api.version>1.0.0.GA</tomcat.validation-api.version>
@ -109,46 +104,6 @@
<overWriteIfNewer>true</overWriteIfNewer>
</configuration>
</execution>
<execution>
<id>libs-for-tomcat-7</id>
<phase>generate-test-resources</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<skip>${skip.dependencies.for.tomcat7}</skip>
<artifactItems>
<artifactItem>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
<version>${tomcat.resteasy.version}</version>
</artifactItem>
<artifactItem>
<groupId>org.scannotation</groupId>
<artifactId>scannotation</artifactId>
<version>${tomcat.scannotation.version}</version>
</artifactItem>
<artifactItem>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
<version>${tomcat.javassist.version}</version>
</artifactItem>
<artifactItem>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>${tomcat.javaee-api.version}</version>
</artifactItem>
<artifactItem>
<!-- JSP compilation failed without this -->
<groupId>org.glassfish.web</groupId>
<artifactId>el-impl</artifactId>
<version>${tomcat.org.glassfish.web.el-impl.version}</version>
</artifactItem>
</artifactItems>
<outputDirectory>${app.server.tomcat.home}/lib</outputDirectory>
<overWriteIfNewer>true</overWriteIfNewer>
</configuration>
</execution>
<execution>
<id>libs-for-tomcat-8-and-9</id>
<phase>generate-test-resources</phase>
@ -156,7 +111,7 @@
<goal>copy</goal>
</goals>
<configuration>
<skip>${skip.dependencies.for.tomcat8}</skip>
<skip>${skip.dependencies.for.tomcat}</skip>
<artifactItems>
<artifactItem>
<groupId>org.jboss.spec.javax.ws.rs</groupId>

View File

@ -39,9 +39,14 @@
<app.server.oidc.adapter.artifactId>keycloak-tomcat7-adapter-dist</app.server.oidc.adapter.artifactId>
<app.server.saml.adapter.artifactId>keycloak-saml-tomcat7-adapter-dist</app.server.saml.adapter.artifactId>
<skip.dependencies.for.tomcat>true</skip.dependencies.for.tomcat>
<!-- newer resteasy-jaxrs is not compatible with annotation-api which is provided by Tomcat7 -->
<tomcat.resteasy.version>2.3.1.GA</tomcat.resteasy.version>
<skip.dependencies.for.tomcat7>false</skip.dependencies.for.tomcat7>
<tomcat.scannotation.version>1.0.3</tomcat.scannotation.version>
<tomcat.javassist.version>3.18.2-GA</tomcat.javassist.version>
<tomcat.javaee-api.version>7.0</tomcat.javaee-api.version>
<tomcat.org.glassfish.web.el-impl.version>2.2</tomcat.org.glassfish.web.el-impl.version>
</properties>
<dependencies>
@ -56,4 +61,53 @@
<version>${arquillian-tomcat7-container-version}</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>libs-for-tomcat-7</id>
<phase>generate-test-resources</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
<version>${tomcat.resteasy.version}</version>
</artifactItem>
<artifactItem>
<groupId>org.scannotation</groupId>
<artifactId>scannotation</artifactId>
<version>${tomcat.scannotation.version}</version>
</artifactItem>
<artifactItem>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
<version>${tomcat.javassist.version}</version>
</artifactItem>
<artifactItem>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>${tomcat.javaee-api.version}</version>
</artifactItem>
<artifactItem>
<!-- JSP compilation failed without this -->
<groupId>org.glassfish.web</groupId>
<artifactId>el-impl</artifactId>
<version>${tomcat.org.glassfish.web.el-impl.version}</version>
</artifactItem>
</artifactItems>
<outputDirectory>${app.server.tomcat.home}/lib</outputDirectory>
<overWriteIfNewer>true</overWriteIfNewer>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

View File

@ -36,8 +36,8 @@
<app.server.tomcat.version>${tomcat8.version}</app.server.tomcat.version>
<app.server.tomcat.unpacked.folder.name>apache-tomcat-${tomcat8.version}</app.server.tomcat.unpacked.folder.name>
<app.server.oidc.adapter.artifactId>keycloak-tomcat8-adapter-dist</app.server.oidc.adapter.artifactId>
<app.server.saml.adapter.artifactId>keycloak-saml-tomcat8-adapter-dist</app.server.saml.adapter.artifactId>
<app.server.oidc.adapter.artifactId>keycloak-tomcat-adapter-dist</app.server.oidc.adapter.artifactId>
<app.server.saml.adapter.artifactId>keycloak-saml-tomcat-adapter-dist</app.server.saml.adapter.artifactId>
<skip.dependencies.for.tomcat8>false</skip.dependencies.for.tomcat8>
</properties>

View File

@ -36,9 +36,8 @@
<app.server.tomcat.version>${tomcat9.version}</app.server.tomcat.version>
<app.server.tomcat.unpacked.folder.name>apache-tomcat-${tomcat9.version}</app.server.tomcat.unpacked.folder.name>
<!-- KEYCLOAK-9598 - There are no adapters for Tomcat 9 for now we use adapters for Tomcat 8 -->
<app.server.oidc.adapter.artifactId>keycloak-tomcat8-adapter-dist</app.server.oidc.adapter.artifactId>
<app.server.saml.adapter.artifactId>keycloak-saml-tomcat8-adapter-dist</app.server.saml.adapter.artifactId>
<app.server.oidc.adapter.artifactId>keycloak-tomcat-adapter-dist</app.server.oidc.adapter.artifactId>
<app.server.saml.adapter.artifactId>keycloak-saml-tomcat-adapter-dist</app.server.saml.adapter.artifactId>
<skip.dependencies.for.tomcat8>false</skip.dependencies.for.tomcat8>
</properties>

View File

@ -18,7 +18,7 @@
<jetty.version>${jetty94.version}</jetty.version>
<spring-boot-adapter-jetty>false</spring-boot-adapter-jetty>
<spring.boot.tomcat.adapter.artifactId>keycloak-tomcat8-adapter</spring.boot.tomcat.adapter.artifactId>
<spring.boot.tomcat.adapter.artifactId>keycloak-tomcat-adapter</spring.boot.tomcat.adapter.artifactId>
<jetty.version/>