diff --git a/.gitignore b/.gitignore
index 3b5cc6f..6f98db4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,4 +4,6 @@ target/
.project
.classpath
-dependency-reduced-pom.xml
\ No newline at end of file
+dependency-reduced-pom.xml
+alfresco.log
+share.log
\ No newline at end of file
diff --git a/README.md b/README.md
index 059cf69..b81bd79 100644
--- a/README.md
+++ b/README.md
@@ -107,9 +107,10 @@ This module depends on the following projects / libraries:
- keycloak-servlet-adapter-spi
- keycloak-servlet-filter-adapter
- keycloak-authz-client
+- [JBoss Logging](https://github.com/jboss-logging/jboss-logging) (Apache License, Version 2.0)
- Acosix Alfresco Utility (Apache License, Version 2.0) - core extension
-All Keycloak dependencies are aggregated into single uber-JAR / shaded dependency library for the Repository and Share respectively. This aggregation is handled via the sub-modules `repository-dependencies` and `share-dependencies`. This has been done to isolate this addon from whatever version of Keycloak libraries Alfresco pre-packages to support its `identity-service` authentication subsystem. These aggregated libraries are included in the respective AMPs of this project and only need to be installed separately if the simple JAR deployment method is used to install the modules of this addon.
+All Keycloak and JBoss dependencies are aggregated (shaded) directly into the module library for Repository and Share respectively. This has been done to isolate this addon from whatever version of Keycloak libraries Alfresco pre-packages to support its `identity-service` authentication subsystem.
The Acosix Alfresco Utility project provides the core extension for Alfresco Content Services as a separate artifact from the full module, which needs to be installed in Alfresco Content Services before the AMP of this project can be installed.
diff --git a/pom.xml b/pom.xml
index 2413c1c..9e9373d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -21,7 +21,7 @@
de.acosix.alfresco.maven
de.acosix.alfresco.maven.project.parent-6.0.7
- 1.3.3
+ 1.3.4-SNAPSHOT
de.acosix.alfresco.keycloak
@@ -71,7 +71,7 @@
1.8
1.8
- 3.2.1
+ 3.2.4
11.0.2
3.13.0.Final
@@ -272,9 +272,7 @@
- repository-dependencies
repository
- share-dependencies
share
\ No newline at end of file
diff --git a/repository-dependencies/pom.xml b/repository-dependencies/pom.xml
deleted file mode 100644
index 007e7f6..0000000
--- a/repository-dependencies/pom.xml
+++ /dev/null
@@ -1,196 +0,0 @@
-
-
-
- 4.0.0
-
-
- de.acosix.alfresco.keycloak
- de.acosix.alfresco.keycloak.parent
- 1.1.0-rc5-SNAPSHOT
-
-
- de.acosix.alfresco.keycloak.repo.deps
- Acosix Alfresco Keycloak - Repository Dependencies Module
- Aggregate (Uber-)JAR of all dependencies for the Acosix Alfresco Keycloak Repository Module
-
-
-
- org.keycloak
- keycloak-adapter-core
-
-
-
- com.sun.activation
- *
-
-
- org.bouncycastle
- *
-
-
- com.fasterxml.jackson.core
- *
-
-
-
-
-
- org.keycloak
- keycloak-servlet-adapter-spi
-
-
-
- com.sun.activation
- *
-
-
- org.bouncycastle
- *
-
-
- com.fasterxml.jackson.core
- *
-
-
-
- org.apache.httpcomponents
- httpcomponents-client
-
-
-
-
-
- org.keycloak
- keycloak-servlet-filter-adapter
-
-
-
- com.sun.activation
- *
-
-
- org.bouncycastle
- *
-
-
- com.fasterxml.jackson.core
- *
-
-
- org.apache.httpcomponents
- *
-
-
-
-
-
-
-
-
-
- maven-shade-plugin
-
-
- package
-
- shade
-
-
- true
- true
-
-
- org.keycloak
- de.acosix.alfresco.keycloak.repo.deps.keycloak
-
-
- org.jboss.logging
- de.acosix.alfresco.keycloak.repo.deps.jboss.logging
-
-
-
-
-
-
- false
-
-
-
-
-
-
-
-
-
-
-
-
- maven-enforcer-plugin
-
-
-
- maven-dependency-plugin
-
-
-
- maven-resources-plugin
-
-
-
- maven-compiler-plugin
-
-
-
- maven-source-plugin
-
-
-
- maven-jar-plugin
-
-
-
- maven-javadoc-plugin
-
-
-
- maven-toolchains-plugin
-
-
-
- maven-shade-plugin
-
-
-
- org.codehaus.mojo
- findbugs-maven-plugin
-
-
-
- maven-surefire-plugin
-
-
-
- maven-failsafe-plugin
-
-
-
-
-
\ No newline at end of file
diff --git a/repository/pom.xml b/repository/pom.xml
index 25ce528..ab270b7 100644
--- a/repository/pom.xml
+++ b/repository/pom.xml
@@ -50,12 +50,20 @@
- ${project.groupId}
- ${project.artifactId}.deps
- ${project.version}
+ org.keycloak
+ keycloak-adapter-core
+
- org.keycloak
+ com.sun.activation
+ *
+
+
+ org.bouncycastle
+ *
+
+
+ com.fasterxml.jackson.core
*
@@ -65,6 +73,63 @@
+
+ org.keycloak
+ keycloak-servlet-adapter-spi
+
+
+
+ com.sun.activation
+ *
+
+
+ org.bouncycastle
+ *
+
+
+ com.fasterxml.jackson.core
+ *
+
+
+ org.jboss.resteasy
+ *
+
+
+
+ org.apache.httpcomponents
+ httpcomponents-client
+
+
+
+
+
+ org.keycloak
+ keycloak-servlet-filter-adapter
+
+
+
+ com.sun.activation
+ *
+
+
+ org.bouncycastle
+ *
+
+
+ com.fasterxml.jackson.core
+ *
+
+
+ org.jboss.resteasy
+ *
+
+
+ org.apache.httpcomponents
+ *
+
+
+
+
de.acosix.alfresco.utility
de.acosix.alfresco.utility.core.repo
@@ -156,6 +221,91 @@
+
+ maven-shade-plugin
+
+
+ package
+
+ shade
+
+
+ true
+ true
+ false
+
+
+ org.keycloak:*
+ org.jboss.logging:*
+
+
+
+
+ org.keycloak
+ de.acosix.alfresco.keycloak.deps.keycloak
+
+
+ org.jboss.logging
+ de.acosix.alfresco.keycloak.deps.jboss.logging
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+ maven-dependency-plugin
+
+
+ unpack-shaded-jar
+ package
+
+ unpack
+
+
+
+
+ ${project.groupId}
+ ${project.artifactId}
+ ${project.version}
+
+
+ ${project.build.outputDirectory}
+
+
+
+
+
+
+
+ de.thetaphi
+ forbiddenapis
+
+
+ de/acosix/alfresco/keycloak/deps/**/*.class
+
+
+
+
+
+ org.codehaus.mojo
+ findbugs-maven-plugin
+
+ de.acosix.alfresco.keycloak.repo.*
+
+
+
@@ -166,6 +316,19 @@
docker-maven-plugin
+
+ maven-shade-plugin
+
+
+
+ maven-dependency-plugin
+
+
+
+
+ maven-assembly-plugin
+
+
\ No newline at end of file
diff --git a/repository/src/main/assembly/amp.xml b/repository/src/main/assembly/amp.xml
deleted file mode 100644
index 76210b3..0000000
--- a/repository/src/main/assembly/amp.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-
-
-
- amp
-
- amp
-
- false
-
- assemblies/amp-lib-component.xml
- assemblies/amp-config-component.xml
- assemblies/amp-messages-component.xml
- assemblies/amp-repo-webscript-component.xml
- assemblies/amp-surf-webscript-component.xml
- assemblies/amp-templates-component.xml
- assemblies/amp-webapp-component.xml
-
-
-
- ${project.basedir}
-
-
- *.properties
-
- true
- crlf
-
-
-
-
- lib
-
- ${project.groupId}:${project.artifactId}.deps:*
-
- compile
-
-
-
diff --git a/repository/src/main/java/de/acosix/alfresco/keycloak/repo/authentication/AuthorityExtractor.java b/repository/src/main/java/de/acosix/alfresco/keycloak/repo/authentication/AuthorityExtractor.java
index 64b2e33..cb4363e 100644
--- a/repository/src/main/java/de/acosix/alfresco/keycloak/repo/authentication/AuthorityExtractor.java
+++ b/repository/src/main/java/de/acosix/alfresco/keycloak/repo/authentication/AuthorityExtractor.java
@@ -19,8 +19,7 @@ import java.util.Set;
import org.alfresco.service.cmr.security.AuthorityService;
import org.alfresco.service.cmr.security.AuthorityType;
-
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.representations.AccessToken;
+import org.keycloak.representations.AccessToken;
/**
* Instances of this interface are used to map / extract authorities for an authenticated user from Keycloak authenticated users for use as
diff --git a/repository/src/main/java/de/acosix/alfresco/keycloak/repo/authentication/DefaultAuthorityExtractor.java b/repository/src/main/java/de/acosix/alfresco/keycloak/repo/authentication/DefaultAuthorityExtractor.java
index afecc7b..31d8a5c 100644
--- a/repository/src/main/java/de/acosix/alfresco/keycloak/repo/authentication/DefaultAuthorityExtractor.java
+++ b/repository/src/main/java/de/acosix/alfresco/keycloak/repo/authentication/DefaultAuthorityExtractor.java
@@ -27,13 +27,13 @@ import java.util.stream.Stream;
import org.alfresco.service.cmr.security.AuthorityType;
import org.alfresco.util.ParameterCheck;
import org.alfresco.util.PropertyCheck;
+import org.keycloak.representations.AccessToken;
+import org.keycloak.representations.AccessToken.Access;
+import org.keycloak.representations.adapters.config.AdapterConfig;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.InitializingBean;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.representations.AccessToken;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.representations.AccessToken.Access;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.representations.adapters.config.AdapterConfig;
import de.acosix.alfresco.keycloak.repo.roles.RoleNameFilter;
import de.acosix.alfresco.keycloak.repo.roles.RoleNameMapper;
diff --git a/repository/src/main/java/de/acosix/alfresco/keycloak/repo/authentication/DefaultPersonProcessor.java b/repository/src/main/java/de/acosix/alfresco/keycloak/repo/authentication/DefaultPersonProcessor.java
index 3110314..254e9f7 100644
--- a/repository/src/main/java/de/acosix/alfresco/keycloak/repo/authentication/DefaultPersonProcessor.java
+++ b/repository/src/main/java/de/acosix/alfresco/keycloak/repo/authentication/DefaultPersonProcessor.java
@@ -20,9 +20,8 @@ import java.util.Map;
import org.alfresco.model.ContentModel;
import org.alfresco.service.namespace.QName;
-
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.representations.AccessToken;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.representations.IDToken;
+import org.keycloak.representations.AccessToken;
+import org.keycloak.representations.IDToken;
/**
* This user authentication mapping processor maps the default Alfresco person properties from an authenticated Keycloak user.
diff --git a/repository/src/main/java/de/acosix/alfresco/keycloak/repo/authentication/KeycloakAuthenticationComponent.java b/repository/src/main/java/de/acosix/alfresco/keycloak/repo/authentication/KeycloakAuthenticationComponent.java
index fd04f85..883f0d4 100644
--- a/repository/src/main/java/de/acosix/alfresco/keycloak/repo/authentication/KeycloakAuthenticationComponent.java
+++ b/repository/src/main/java/de/acosix/alfresco/keycloak/repo/authentication/KeycloakAuthenticationComponent.java
@@ -46,25 +46,25 @@ import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
+import org.keycloak.OAuth2Constants;
+import org.keycloak.adapters.KeycloakDeployment;
+import org.keycloak.adapters.ServerRequest;
+import org.keycloak.adapters.authentication.ClientCredentialsProviderUtils;
+import org.keycloak.adapters.rotation.AdapterTokenVerifier;
+import org.keycloak.adapters.rotation.AdapterTokenVerifier.VerifiedTokens;
+import org.keycloak.common.VerificationException;
+import org.keycloak.common.util.KeycloakUriBuilder;
+import org.keycloak.constants.ServiceUrlConstants;
+import org.keycloak.representations.AccessToken;
+import org.keycloak.representations.AccessTokenResponse;
+import org.keycloak.representations.IDToken;
+import org.keycloak.util.JsonSerialization;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.OAuth2Constants;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.adapters.KeycloakDeployment;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.adapters.ServerRequest;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.adapters.authentication.ClientCredentialsProviderUtils;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.adapters.rotation.AdapterTokenVerifier;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.adapters.rotation.AdapterTokenVerifier.VerifiedTokens;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.common.VerificationException;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.common.util.KeycloakUriBuilder;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.constants.ServiceUrlConstants;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.representations.AccessToken;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.representations.AccessTokenResponse;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.representations.IDToken;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.util.JsonSerialization;
import de.acosix.alfresco.keycloak.repo.util.AlfrescoCompatibilityUtil;
import de.acosix.alfresco.keycloak.repo.util.RefreshableAccessTokenHolder;
import net.sf.acegisecurity.Authentication;
diff --git a/repository/src/main/java/de/acosix/alfresco/keycloak/repo/authentication/KeycloakAuthenticationFilter.java b/repository/src/main/java/de/acosix/alfresco/keycloak/repo/authentication/KeycloakAuthenticationFilter.java
index b64da14..846028e 100644
--- a/repository/src/main/java/de/acosix/alfresco/keycloak/repo/authentication/KeycloakAuthenticationFilter.java
+++ b/repository/src/main/java/de/acosix/alfresco/keycloak/repo/authentication/KeycloakAuthenticationFilter.java
@@ -49,6 +49,23 @@ import org.alfresco.util.PropertyCheck;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.keycloak.KeycloakSecurityContext;
+import org.keycloak.adapters.AdapterDeploymentContext;
+import org.keycloak.adapters.AuthenticatedActionsHandler;
+import org.keycloak.adapters.KeycloakDeployment;
+import org.keycloak.adapters.OidcKeycloakAccount;
+import org.keycloak.adapters.PreAuthActionsHandler;
+import org.keycloak.adapters.RefreshableKeycloakSecurityContext;
+import org.keycloak.adapters.servlet.FilterRequestAuthenticator;
+import org.keycloak.adapters.servlet.OIDCFilterSessionStore;
+import org.keycloak.adapters.servlet.OIDCServletHttpFacade;
+import org.keycloak.adapters.spi.AuthOutcome;
+import org.keycloak.adapters.spi.AuthenticationError;
+import org.keycloak.adapters.spi.KeycloakAccount;
+import org.keycloak.adapters.spi.SessionIdMapper;
+import org.keycloak.adapters.spi.UserSessionManagement;
+import org.keycloak.common.util.KeycloakUriBuilder;
+import org.keycloak.representations.AccessToken;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.InitializingBean;
@@ -56,23 +73,6 @@ import org.springframework.extensions.webscripts.Description.RequiredAuthenticat
import org.springframework.extensions.webscripts.Match;
import org.springframework.extensions.webscripts.RuntimeContainer;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.KeycloakSecurityContext;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.adapters.AdapterDeploymentContext;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.adapters.AuthenticatedActionsHandler;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.adapters.KeycloakDeployment;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.adapters.OidcKeycloakAccount;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.adapters.PreAuthActionsHandler;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.adapters.RefreshableKeycloakSecurityContext;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.adapters.servlet.FilterRequestAuthenticator;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.adapters.servlet.OIDCFilterSessionStore;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.adapters.servlet.OIDCServletHttpFacade;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.adapters.spi.AuthOutcome;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.adapters.spi.AuthenticationError;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.adapters.spi.KeycloakAccount;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.adapters.spi.SessionIdMapper;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.adapters.spi.UserSessionManagement;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.common.util.KeycloakUriBuilder;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.representations.AccessToken;
import de.acosix.alfresco.keycloak.repo.util.AlfrescoCompatibilityUtil;
import de.acosix.alfresco.keycloak.repo.util.RefreshableAccessTokenHolder;
diff --git a/repository/src/main/java/de/acosix/alfresco/keycloak/repo/authentication/KeycloakCredentials.java b/repository/src/main/java/de/acosix/alfresco/keycloak/repo/authentication/KeycloakCredentials.java
index f1791b0..218912c 100644
--- a/repository/src/main/java/de/acosix/alfresco/keycloak/repo/authentication/KeycloakCredentials.java
+++ b/repository/src/main/java/de/acosix/alfresco/keycloak/repo/authentication/KeycloakCredentials.java
@@ -17,8 +17,7 @@ package de.acosix.alfresco.keycloak.repo.authentication;
import org.alfresco.repo.web.auth.WebCredentials;
import org.alfresco.util.ParameterCheck;
-
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.representations.AccessToken;
+import org.keycloak.representations.AccessToken;
/**
* @author Axel Faust
diff --git a/repository/src/main/java/de/acosix/alfresco/keycloak/repo/authentication/KeycloakRemoteUserMapper.java b/repository/src/main/java/de/acosix/alfresco/keycloak/repo/authentication/KeycloakRemoteUserMapper.java
index 8c68ebe..5a52792 100644
--- a/repository/src/main/java/de/acosix/alfresco/keycloak/repo/authentication/KeycloakRemoteUserMapper.java
+++ b/repository/src/main/java/de/acosix/alfresco/keycloak/repo/authentication/KeycloakRemoteUserMapper.java
@@ -26,15 +26,14 @@ import org.alfresco.repo.security.authentication.AuthenticationUtil;
import org.alfresco.repo.security.authentication.external.RemoteUserMapper;
import org.alfresco.service.cmr.security.PersonService;
import org.alfresco.util.PropertyCheck;
+import org.keycloak.adapters.BearerTokenRequestAuthenticator;
+import org.keycloak.adapters.KeycloakDeployment;
+import org.keycloak.adapters.spi.AuthOutcome;
+import org.keycloak.representations.AccessToken;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.InitializingBean;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.adapters.BearerTokenRequestAuthenticator;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.adapters.KeycloakDeployment;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.adapters.spi.AuthOutcome;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.representations.AccessToken;
-
/**
* @author Axel Faust
*/
diff --git a/repository/src/main/java/de/acosix/alfresco/keycloak/repo/authentication/ResponseHeaderCookieCaptureServletHttpFacade.java b/repository/src/main/java/de/acosix/alfresco/keycloak/repo/authentication/ResponseHeaderCookieCaptureServletHttpFacade.java
index 79029e9..ba16b17 100644
--- a/repository/src/main/java/de/acosix/alfresco/keycloak/repo/authentication/ResponseHeaderCookieCaptureServletHttpFacade.java
+++ b/repository/src/main/java/de/acosix/alfresco/keycloak/repo/authentication/ResponseHeaderCookieCaptureServletHttpFacade.java
@@ -26,9 +26,8 @@ import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.alfresco.util.Pair;
-
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.adapters.servlet.ServletHttpFacade;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.adapters.spi.HttpFacade;
+import org.keycloak.adapters.servlet.ServletHttpFacade;
+import org.keycloak.adapters.spi.HttpFacade;
/**
* This {@link HttpFacade} wraps servlet requests and responses in such a way that any response headers / cookies being set by Keycloak
diff --git a/repository/src/main/java/de/acosix/alfresco/keycloak/repo/authentication/SimpleCacheBackedSessionIdMapper.java b/repository/src/main/java/de/acosix/alfresco/keycloak/repo/authentication/SimpleCacheBackedSessionIdMapper.java
index 9ffb8eb..addc9cd 100644
--- a/repository/src/main/java/de/acosix/alfresco/keycloak/repo/authentication/SimpleCacheBackedSessionIdMapper.java
+++ b/repository/src/main/java/de/acosix/alfresco/keycloak/repo/authentication/SimpleCacheBackedSessionIdMapper.java
@@ -21,10 +21,9 @@ import java.util.Set;
import org.alfresco.repo.cache.SimpleCache;
import org.alfresco.util.PropertyCheck;
+import org.keycloak.adapters.spi.SessionIdMapper;
import org.springframework.beans.factory.InitializingBean;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.adapters.spi.SessionIdMapper;
-
/**
* @author Axel Faust
*/
diff --git a/repository/src/main/java/de/acosix/alfresco/keycloak/repo/authentication/UserProcessor.java b/repository/src/main/java/de/acosix/alfresco/keycloak/repo/authentication/UserProcessor.java
index ea89fb9..f7b5170 100644
--- a/repository/src/main/java/de/acosix/alfresco/keycloak/repo/authentication/UserProcessor.java
+++ b/repository/src/main/java/de/acosix/alfresco/keycloak/repo/authentication/UserProcessor.java
@@ -19,9 +19,8 @@ import java.io.Serializable;
import java.util.Map;
import org.alfresco.service.namespace.QName;
-
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.representations.AccessToken;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.representations.IDToken;
+import org.keycloak.representations.AccessToken;
+import org.keycloak.representations.IDToken;
/**
* Instances of this interface are used to map data from Keycloak authenticated users to the Alfresco person node. All instances of this
diff --git a/repository/src/main/java/de/acosix/alfresco/keycloak/repo/client/IDMClient.java b/repository/src/main/java/de/acosix/alfresco/keycloak/repo/client/IDMClient.java
index 659f7b7..82bad90 100644
--- a/repository/src/main/java/de/acosix/alfresco/keycloak/repo/client/IDMClient.java
+++ b/repository/src/main/java/de/acosix/alfresco/keycloak/repo/client/IDMClient.java
@@ -17,10 +17,10 @@ package de.acosix.alfresco.keycloak.repo.client;
import java.util.function.Consumer;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.representations.idm.ClientRepresentation;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.representations.idm.GroupRepresentation;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.representations.idm.RoleRepresentation;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.representations.idm.UserRepresentation;
+import org.keycloak.representations.idm.ClientRepresentation;
+import org.keycloak.representations.idm.GroupRepresentation;
+import org.keycloak.representations.idm.RoleRepresentation;
+import org.keycloak.representations.idm.UserRepresentation;
/**
* Instances of this interface wrap the relevant Keycloak admin ReST API for the synchronisation of users, groups and roles from a Keycloak
diff --git a/repository/src/main/java/de/acosix/alfresco/keycloak/repo/client/IDMClientImpl.java b/repository/src/main/java/de/acosix/alfresco/keycloak/repo/client/IDMClientImpl.java
index c5c4aaf..f8226af 100644
--- a/repository/src/main/java/de/acosix/alfresco/keycloak/repo/client/IDMClientImpl.java
+++ b/repository/src/main/java/de/acosix/alfresco/keycloak/repo/client/IDMClientImpl.java
@@ -15,6 +15,9 @@
*/
package de.acosix.alfresco.keycloak.repo.client;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.MappingIterator;
+
import java.io.IOException;
import java.io.InputStream;
import java.net.URI;
@@ -37,29 +40,26 @@ import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
+import org.keycloak.OAuth2Constants;
+import org.keycloak.adapters.KeycloakDeployment;
+import org.keycloak.adapters.ServerRequest;
+import org.keycloak.adapters.authentication.ClientCredentialsProviderUtils;
+import org.keycloak.adapters.rotation.AdapterTokenVerifier;
+import org.keycloak.common.VerificationException;
+import org.keycloak.common.util.KeycloakUriBuilder;
+import org.keycloak.common.util.Time;
+import org.keycloak.constants.ServiceUrlConstants;
+import org.keycloak.representations.AccessToken;
+import org.keycloak.representations.AccessTokenResponse;
+import org.keycloak.representations.idm.ClientRepresentation;
+import org.keycloak.representations.idm.GroupRepresentation;
+import org.keycloak.representations.idm.RoleRepresentation;
+import org.keycloak.representations.idm.UserRepresentation;
+import org.keycloak.util.JsonSerialization;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.InitializingBean;
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.MappingIterator;
-
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.OAuth2Constants;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.adapters.KeycloakDeployment;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.adapters.ServerRequest;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.adapters.authentication.ClientCredentialsProviderUtils;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.adapters.rotation.AdapterTokenVerifier;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.common.VerificationException;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.common.util.KeycloakUriBuilder;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.common.util.Time;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.constants.ServiceUrlConstants;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.representations.AccessToken;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.representations.AccessTokenResponse;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.representations.idm.ClientRepresentation;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.representations.idm.GroupRepresentation;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.representations.idm.RoleRepresentation;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.representations.idm.UserRepresentation;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.util.JsonSerialization;
import de.acosix.alfresco.keycloak.repo.util.RefreshableAccessTokenHolder;
/**
diff --git a/repository/src/main/java/de/acosix/alfresco/keycloak/repo/roles/RoleServiceImpl.java b/repository/src/main/java/de/acosix/alfresco/keycloak/repo/roles/RoleServiceImpl.java
index 26f081f..6ec074d 100644
--- a/repository/src/main/java/de/acosix/alfresco/keycloak/repo/roles/RoleServiceImpl.java
+++ b/repository/src/main/java/de/acosix/alfresco/keycloak/repo/roles/RoleServiceImpl.java
@@ -28,13 +28,13 @@ import java.util.regex.Pattern;
import org.alfresco.service.cmr.security.AuthorityType;
import org.alfresco.util.ParameterCheck;
import org.alfresco.util.PropertyCheck;
+import org.keycloak.representations.adapters.config.AdapterConfig;
+import org.keycloak.representations.idm.RoleRepresentation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.InitializingBean;
import de.acosix.alfresco.keycloak.repo.client.IDMClient;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.representations.adapters.config.AdapterConfig;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.representations.idm.RoleRepresentation;
public class RoleServiceImpl implements InitializingBean, RoleService
{
diff --git a/repository/src/main/java/de/acosix/alfresco/keycloak/repo/spring/KeycloakAdapterConfigBeanFactory.java b/repository/src/main/java/de/acosix/alfresco/keycloak/repo/spring/KeycloakAdapterConfigBeanFactory.java
index 58cfcbb..ff80e4b 100644
--- a/repository/src/main/java/de/acosix/alfresco/keycloak/repo/spring/KeycloakAdapterConfigBeanFactory.java
+++ b/repository/src/main/java/de/acosix/alfresco/keycloak/repo/spring/KeycloakAdapterConfigBeanFactory.java
@@ -15,6 +15,8 @@
*/
package de.acosix.alfresco.keycloak.repo.spring;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
@@ -31,6 +33,7 @@ import java.util.Set;
import org.alfresco.error.AlfrescoRuntimeException;
import org.alfresco.util.PropertyCheck;
+import org.keycloak.representations.adapters.config.AdapterConfig;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.FactoryBean;
@@ -38,10 +41,6 @@ import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.config.PlaceholderConfigurerSupport;
import org.springframework.util.PropertyPlaceholderHelper;
-import com.fasterxml.jackson.annotation.JsonProperty;
-
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.representations.adapters.config.AdapterConfig;
-
/**
* @author Axel Faust
*/
diff --git a/repository/src/main/java/de/acosix/alfresco/keycloak/repo/spring/KeycloakDeploymentBeanFactory.java b/repository/src/main/java/de/acosix/alfresco/keycloak/repo/spring/KeycloakDeploymentBeanFactory.java
index 3efbb12..1cda611 100644
--- a/repository/src/main/java/de/acosix/alfresco/keycloak/repo/spring/KeycloakDeploymentBeanFactory.java
+++ b/repository/src/main/java/de/acosix/alfresco/keycloak/repo/spring/KeycloakDeploymentBeanFactory.java
@@ -27,14 +27,13 @@ import org.apache.http.conn.params.ConnRoutePNames;
import org.apache.http.conn.params.ConnRouteParams;
import org.apache.http.conn.routing.HttpRoute;
import org.apache.http.params.HttpParams;
+import org.keycloak.adapters.HttpClientBuilder;
+import org.keycloak.adapters.KeycloakDeployment;
+import org.keycloak.adapters.KeycloakDeploymentBuilder;
+import org.keycloak.representations.adapters.config.AdapterConfig;
import org.springframework.beans.factory.FactoryBean;
import org.springframework.beans.factory.InitializingBean;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.adapters.HttpClientBuilder;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.adapters.KeycloakDeployment;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.adapters.KeycloakDeploymentBuilder;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.representations.adapters.config.AdapterConfig;
-
/**
* @author Axel Faust
*/
diff --git a/repository/src/main/java/de/acosix/alfresco/keycloak/repo/sync/DefaultGroupProcessor.java b/repository/src/main/java/de/acosix/alfresco/keycloak/repo/sync/DefaultGroupProcessor.java
index 5068e63..0a1e89f 100644
--- a/repository/src/main/java/de/acosix/alfresco/keycloak/repo/sync/DefaultGroupProcessor.java
+++ b/repository/src/main/java/de/acosix/alfresco/keycloak/repo/sync/DefaultGroupProcessor.java
@@ -19,8 +19,7 @@ import org.alfresco.model.ContentModel;
import org.alfresco.repo.security.sync.NodeDescription;
import org.alfresco.service.cmr.security.AuthorityType;
import org.alfresco.util.PropertyMap;
-
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.representations.idm.GroupRepresentation;
+import org.keycloak.representations.idm.GroupRepresentation;
/**
* This group synchronisation mapping processor maps the default Alfresco authority container properties from a Keycloak group.
diff --git a/repository/src/main/java/de/acosix/alfresco/keycloak/repo/sync/DefaultPersonProcessor.java b/repository/src/main/java/de/acosix/alfresco/keycloak/repo/sync/DefaultPersonProcessor.java
index d92cca3..741856e 100644
--- a/repository/src/main/java/de/acosix/alfresco/keycloak/repo/sync/DefaultPersonProcessor.java
+++ b/repository/src/main/java/de/acosix/alfresco/keycloak/repo/sync/DefaultPersonProcessor.java
@@ -23,8 +23,7 @@ import org.alfresco.model.ContentModel;
import org.alfresco.repo.security.sync.NodeDescription;
import org.alfresco.service.namespace.QName;
import org.alfresco.util.PropertyMap;
-
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.representations.idm.UserRepresentation;
+import org.keycloak.representations.idm.UserRepresentation;
/**
* This user synchronisation mapping processor maps the default Alfresco person properties from a Keycloak user.
diff --git a/repository/src/main/java/de/acosix/alfresco/keycloak/repo/sync/GroupContainmentGroupFilter.java b/repository/src/main/java/de/acosix/alfresco/keycloak/repo/sync/GroupContainmentGroupFilter.java
index db565d4..5732d9a 100644
--- a/repository/src/main/java/de/acosix/alfresco/keycloak/repo/sync/GroupContainmentGroupFilter.java
+++ b/repository/src/main/java/de/acosix/alfresco/keycloak/repo/sync/GroupContainmentGroupFilter.java
@@ -19,11 +19,10 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
+import org.keycloak.representations.idm.GroupRepresentation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.representations.idm.GroupRepresentation;
-
/**
* This class provides filter capabilities for groups to be synchronised based on their parent group and whether they are contained in
* specific groups.
diff --git a/repository/src/main/java/de/acosix/alfresco/keycloak/repo/sync/GroupContainmentUserFilter.java b/repository/src/main/java/de/acosix/alfresco/keycloak/repo/sync/GroupContainmentUserFilter.java
index 1a0f282..11faee3 100644
--- a/repository/src/main/java/de/acosix/alfresco/keycloak/repo/sync/GroupContainmentUserFilter.java
+++ b/repository/src/main/java/de/acosix/alfresco/keycloak/repo/sync/GroupContainmentUserFilter.java
@@ -18,12 +18,11 @@ package de.acosix.alfresco.keycloak.repo.sync;
import java.util.ArrayList;
import java.util.List;
+import org.keycloak.representations.idm.UserRepresentation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.InitializingBean;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.representations.idm.UserRepresentation;
-
/**
* This class provides filter capabilities for users to be synchronised based on the groups they are a member of and whether they are
* contained in specific groups.
diff --git a/repository/src/main/java/de/acosix/alfresco/keycloak/repo/sync/GroupFilter.java b/repository/src/main/java/de/acosix/alfresco/keycloak/repo/sync/GroupFilter.java
index 615092e..b7b9e69 100644
--- a/repository/src/main/java/de/acosix/alfresco/keycloak/repo/sync/GroupFilter.java
+++ b/repository/src/main/java/de/acosix/alfresco/keycloak/repo/sync/GroupFilter.java
@@ -15,7 +15,7 @@
*/
package de.acosix.alfresco.keycloak.repo.sync;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.representations.idm.GroupRepresentation;
+import org.keycloak.representations.idm.GroupRepresentation;
/**
* Instances of this interface are used to determine which groups should be synchronised. All instances of this interface in the Keycloak
diff --git a/repository/src/main/java/de/acosix/alfresco/keycloak/repo/sync/GroupProcessor.java b/repository/src/main/java/de/acosix/alfresco/keycloak/repo/sync/GroupProcessor.java
index 738f32a..30dade7 100644
--- a/repository/src/main/java/de/acosix/alfresco/keycloak/repo/sync/GroupProcessor.java
+++ b/repository/src/main/java/de/acosix/alfresco/keycloak/repo/sync/GroupProcessor.java
@@ -16,8 +16,7 @@
package de.acosix.alfresco.keycloak.repo.sync;
import org.alfresco.repo.security.sync.NodeDescription;
-
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.representations.idm.GroupRepresentation;
+import org.keycloak.representations.idm.GroupRepresentation;
/**
* Instances of this interface are to map data from Keycloak groups to the Alfresco authority container node description. All instances of
diff --git a/repository/src/main/java/de/acosix/alfresco/keycloak/repo/sync/KeycloakUserRegistry.java b/repository/src/main/java/de/acosix/alfresco/keycloak/repo/sync/KeycloakUserRegistry.java
index 1105f19..d891fd9 100644
--- a/repository/src/main/java/de/acosix/alfresco/keycloak/repo/sync/KeycloakUserRegistry.java
+++ b/repository/src/main/java/de/acosix/alfresco/keycloak/repo/sync/KeycloakUserRegistry.java
@@ -36,6 +36,8 @@ import org.alfresco.service.cmr.security.AuthorityType;
import org.alfresco.service.namespace.QName;
import org.alfresco.util.PropertyCheck;
import org.alfresco.util.PropertyMap;
+import org.keycloak.representations.idm.GroupRepresentation;
+import org.keycloak.representations.idm.UserRepresentation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.InitializingBean;
@@ -44,8 +46,6 @@ import org.springframework.context.ApplicationContextAware;
import de.acosix.alfresco.keycloak.repo.client.IDMClient;
import de.acosix.alfresco.keycloak.repo.client.IDMClientImpl;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.representations.idm.GroupRepresentation;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.representations.idm.UserRepresentation;
/**
* This class provides a Keycloak-based user registry to support synchronisation with Keycloak managed users and groups.
diff --git a/repository/src/main/java/de/acosix/alfresco/keycloak/repo/sync/SimpleGroupAttributeProcessor.java b/repository/src/main/java/de/acosix/alfresco/keycloak/repo/sync/SimpleGroupAttributeProcessor.java
index 72e1088..06990d8 100644
--- a/repository/src/main/java/de/acosix/alfresco/keycloak/repo/sync/SimpleGroupAttributeProcessor.java
+++ b/repository/src/main/java/de/acosix/alfresco/keycloak/repo/sync/SimpleGroupAttributeProcessor.java
@@ -16,8 +16,7 @@
package de.acosix.alfresco.keycloak.repo.sync;
import org.alfresco.repo.security.sync.NodeDescription;
-
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.representations.idm.GroupRepresentation;
+import org.keycloak.representations.idm.GroupRepresentation;
/**
* Instances of this class perform simple mappings from Keycloak group attributes to authority container node description properties.
diff --git a/repository/src/main/java/de/acosix/alfresco/keycloak/repo/sync/SimpleUserAttributeProcessor.java b/repository/src/main/java/de/acosix/alfresco/keycloak/repo/sync/SimpleUserAttributeProcessor.java
index 91ec43d..337e660 100644
--- a/repository/src/main/java/de/acosix/alfresco/keycloak/repo/sync/SimpleUserAttributeProcessor.java
+++ b/repository/src/main/java/de/acosix/alfresco/keycloak/repo/sync/SimpleUserAttributeProcessor.java
@@ -21,8 +21,7 @@ import java.util.HashSet;
import org.alfresco.repo.security.sync.NodeDescription;
import org.alfresco.service.namespace.QName;
-
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.representations.idm.UserRepresentation;
+import org.keycloak.representations.idm.UserRepresentation;
/**
* Instances of this class perform simple mappings from Keycloak user attributes to person node description properties.
diff --git a/repository/src/main/java/de/acosix/alfresco/keycloak/repo/sync/UserFilter.java b/repository/src/main/java/de/acosix/alfresco/keycloak/repo/sync/UserFilter.java
index 066dea9..f7c4b5f 100644
--- a/repository/src/main/java/de/acosix/alfresco/keycloak/repo/sync/UserFilter.java
+++ b/repository/src/main/java/de/acosix/alfresco/keycloak/repo/sync/UserFilter.java
@@ -15,7 +15,7 @@
*/
package de.acosix.alfresco.keycloak.repo.sync;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.representations.idm.UserRepresentation;
+import org.keycloak.representations.idm.UserRepresentation;
/**
* Instances of this interface are used to determine which users should be synchronised. All instances of this interface in the Keycloak
diff --git a/repository/src/main/java/de/acosix/alfresco/keycloak/repo/sync/UserProcessor.java b/repository/src/main/java/de/acosix/alfresco/keycloak/repo/sync/UserProcessor.java
index 17b2510..5e9521c 100644
--- a/repository/src/main/java/de/acosix/alfresco/keycloak/repo/sync/UserProcessor.java
+++ b/repository/src/main/java/de/acosix/alfresco/keycloak/repo/sync/UserProcessor.java
@@ -19,8 +19,7 @@ import java.util.Collection;
import org.alfresco.repo.security.sync.NodeDescription;
import org.alfresco.service.namespace.QName;
-
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.representations.idm.UserRepresentation;
+import org.keycloak.representations.idm.UserRepresentation;
/**
* Instances of this interface are used to map data from Keycloak users to the Alfresco person node description. All instances of this
diff --git a/repository/src/main/java/de/acosix/alfresco/keycloak/repo/util/RefreshableAccessTokenHolder.java b/repository/src/main/java/de/acosix/alfresco/keycloak/repo/util/RefreshableAccessTokenHolder.java
index c00d61b..5ce2512 100644
--- a/repository/src/main/java/de/acosix/alfresco/keycloak/repo/util/RefreshableAccessTokenHolder.java
+++ b/repository/src/main/java/de/acosix/alfresco/keycloak/repo/util/RefreshableAccessTokenHolder.java
@@ -18,12 +18,11 @@ package de.acosix.alfresco.keycloak.repo.util;
import java.io.Serializable;
import org.alfresco.util.ParameterCheck;
-
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.adapters.rotation.AdapterTokenVerifier.VerifiedTokens;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.common.util.Time;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.representations.AccessToken;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.representations.AccessTokenResponse;
-import de.acosix.alfresco.keycloak.repo.deps.keycloak.representations.IDToken;
+import org.keycloak.adapters.rotation.AdapterTokenVerifier.VerifiedTokens;
+import org.keycloak.common.util.Time;
+import org.keycloak.representations.AccessToken;
+import org.keycloak.representations.AccessTokenResponse;
+import org.keycloak.representations.IDToken;
/**
* Instances of this class encapsulate a potentially refreshable access token.
diff --git a/share-dependencies/pom.xml b/share-dependencies/pom.xml
deleted file mode 100644
index 5d81d5f..0000000
--- a/share-dependencies/pom.xml
+++ /dev/null
@@ -1,195 +0,0 @@
-
-
-
- 4.0.0
-
-
- de.acosix.alfresco.keycloak
- de.acosix.alfresco.keycloak.parent
- 1.1.0-rc5-SNAPSHOT
-
-
- de.acosix.alfresco.keycloak.share.deps
- Acosix Alfresco Keycloak - Share Dependencies Module
- Aggregate (Uber-)JAR of all dependencies for the Acosix Alfresco Keycloak Share Module (except BouncyCastle)
-
-
-
- org.keycloak
- keycloak-adapter-core
-
-
-
- com.sun.activation
- *
-
-
- org.bouncycastle
- *
-
-
-
-
-
- org.keycloak
- keycloak-servlet-adapter-spi
-
-
-
- com.sun.activation
- *
-
-
- org.bouncycastle
- *
-
-
-
- org.apache.httpcomponents
- httpcomponents-client
-
-
-
-
-
- org.keycloak
- keycloak-servlet-filter-adapter
-
-
-
- com.sun.activation
- *
-
-
- org.bouncycastle
- *
-
-
-
-
-
- org.keycloak
- keycloak-authz-client
-
-
- org.bouncycastle
- *
-
-
-
-
-
-
-
-
-
- maven-shade-plugin
-
-
- package
-
- shade
-
-
- true
- true
-
-
- org.keycloak
- de.acosix.alfresco.keycloak.share.deps.keycloak
-
-
- com.fasterxml.jackson
- de.acosix.alfresco.keycloak.share.deps.jackson
-
-
- org.jboss.logging
- de.acosix.alfresco.keycloak.share.deps.jboss.logging
-
-
-
-
-
-
- false
-
-
-
-
-
-
-
-
-
-
-
-
- maven-enforcer-plugin
-
-
-
- maven-dependency-plugin
-
-
-
- maven-resources-plugin
-
-
-
- maven-compiler-plugin
-
-
-
- maven-source-plugin
-
-
-
- maven-jar-plugin
-
-
-
- maven-javadoc-plugin
-
-
-
- maven-toolchains-plugin
-
-
-
- maven-shade-plugin
-
-
-
- org.codehaus.mojo
- findbugs-maven-plugin
-
-
-
- maven-surefire-plugin
-
-
-
- maven-failsafe-plugin
-
-
-
-
-
\ No newline at end of file
diff --git a/share/pom.xml b/share/pom.xml
index 45d4766..7637ce5 100644
--- a/share/pom.xml
+++ b/share/pom.xml
@@ -65,12 +65,64 @@
- ${project.groupId}
- ${project.artifactId}.deps
- ${project.version}
+ org.keycloak
+ keycloak-adapter-core
+
+
+
+ com.sun.activation
+ *
+
+
+ org.bouncycastle
+ *
+
+
+
+
+
+ org.keycloak
+ keycloak-servlet-adapter-spi
+
+
+
+ com.sun.activation
+ *
+
+
+ org.bouncycastle
+ *
+
+
+
+ org.apache.httpcomponents
+ httpcomponents-client
+
+
+
+
+
+ org.keycloak
+ keycloak-servlet-filter-adapter
+
+
+
+ com.sun.activation
+ *
+
+
+ org.bouncycastle
+ *
+
+
+
+
+
+ org.keycloak
+ keycloak-authz-client
- org.keycloak
+ org.bouncycastle
*
@@ -217,6 +269,96 @@
+
+ maven-shade-plugin
+
+
+ package
+
+ shade
+
+
+ true
+ true
+ false
+
+
+ org.keycloak:*
+ com.fasterxml.jackson.core:*
+ org.jboss.logging:*
+
+
+
+
+ org.keycloak
+ de.acosix.alfresco.keycloak.deps.keycloak
+
+
+ com.fasterxml.jackson
+ de.acosix.alfresco.keycloak.deps.jackson
+
+
+ org.jboss.logging
+ de.acosix.alfresco.keycloak.deps.jboss.logging
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+ maven-dependency-plugin
+
+
+ unpack-shaded-jar
+ package
+
+ unpack
+
+
+
+
+ ${project.groupId}
+ ${project.artifactId}
+ ${project.version}
+
+
+ ${project.build.outputDirectory}
+
+
+
+
+
+
+
+ de.thetaphi
+ forbiddenapis
+
+
+ de/acosix/alfresco/keycloak/deps/**/*.class
+
+
+
+
+
+ org.codehaus.mojo
+ findbugs-maven-plugin
+
+ de.acosix.alfresco.keycloak.share.*
+
+
+
@@ -232,6 +374,19 @@
docker-maven-plugin
+
+ maven-shade-plugin
+
+
+
+ maven-dependency-plugin
+
+
+
+
+ maven-assembly-plugin
+
+
diff --git a/share/src/main/assembly/amp.xml b/share/src/main/assembly/amp.xml
index fe08185..311db00 100644
--- a/share/src/main/assembly/amp.xml
+++ b/share/src/main/assembly/amp.xml
@@ -46,7 +46,6 @@
lib
org.bouncycastle:*
- ${project.groupId}:${project.artifactId}.deps:*
compile
diff --git a/share/src/main/java/de/acosix/alfresco/keycloak/share/config/KeycloakAdapterConfigElement.java b/share/src/main/java/de/acosix/alfresco/keycloak/share/config/KeycloakAdapterConfigElement.java
index ad81c49..6807c7d 100644
--- a/share/src/main/java/de/acosix/alfresco/keycloak/share/config/KeycloakAdapterConfigElement.java
+++ b/share/src/main/java/de/acosix/alfresco/keycloak/share/config/KeycloakAdapterConfigElement.java
@@ -15,6 +15,8 @@
*/
package de.acosix.alfresco.keycloak.share.config;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
@@ -32,12 +34,11 @@ import org.alfresco.error.AlfrescoRuntimeException;
import org.alfresco.util.EqualsHelper;
import org.alfresco.util.ParameterCheck;
import org.alfresco.util.PropertyCheck;
+import org.keycloak.representations.adapters.config.AdapterConfig;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.extensions.config.ConfigElement;
-import de.acosix.alfresco.keycloak.share.deps.jackson.annotation.JsonProperty;
-import de.acosix.alfresco.keycloak.share.deps.keycloak.representations.adapters.config.AdapterConfig;
import de.acosix.alfresco.utility.share.config.BaseCustomConfigElement;
import de.acosix.alfresco.utility.share.config.ConfigValueHolder;
diff --git a/share/src/main/java/de/acosix/alfresco/keycloak/share/remote/AccessTokenAwareSlingshotAlfrescoConnector.java b/share/src/main/java/de/acosix/alfresco/keycloak/share/remote/AccessTokenAwareSlingshotAlfrescoConnector.java
index 6b41df7..1730c00 100644
--- a/share/src/main/java/de/acosix/alfresco/keycloak/share/remote/AccessTokenAwareSlingshotAlfrescoConnector.java
+++ b/share/src/main/java/de/acosix/alfresco/keycloak/share/remote/AccessTokenAwareSlingshotAlfrescoConnector.java
@@ -20,6 +20,9 @@ import java.util.Collections;
import javax.servlet.http.HttpSession;
import org.alfresco.web.site.servlet.SlingshotAlfrescoConnector;
+import org.keycloak.KeycloakSecurityContext;
+import org.keycloak.adapters.OidcKeycloakAccount;
+import org.keycloak.adapters.spi.KeycloakAccount;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.extensions.config.RemoteConfigElement.ConnectorDescriptor;
@@ -27,9 +30,6 @@ import org.springframework.extensions.surf.ServletUtil;
import org.springframework.extensions.webscripts.connector.ConnectorContext;
import org.springframework.extensions.webscripts.connector.RemoteClient;
-import de.acosix.alfresco.keycloak.share.deps.keycloak.KeycloakSecurityContext;
-import de.acosix.alfresco.keycloak.share.deps.keycloak.adapters.OidcKeycloakAccount;
-import de.acosix.alfresco.keycloak.share.deps.keycloak.adapters.spi.KeycloakAccount;
import de.acosix.alfresco.keycloak.share.util.RefreshableAccessTokenHolder;
import de.acosix.alfresco.keycloak.share.web.KeycloakAuthenticationFilter;
import de.acosix.alfresco.utility.share.connector.MutableSlingshotRemoteClient;
diff --git a/share/src/main/java/de/acosix/alfresco/keycloak/share/util/RefreshableAccessTokenHolder.java b/share/src/main/java/de/acosix/alfresco/keycloak/share/util/RefreshableAccessTokenHolder.java
index 7667444..2d9d9f0 100644
--- a/share/src/main/java/de/acosix/alfresco/keycloak/share/util/RefreshableAccessTokenHolder.java
+++ b/share/src/main/java/de/acosix/alfresco/keycloak/share/util/RefreshableAccessTokenHolder.java
@@ -18,12 +18,11 @@ package de.acosix.alfresco.keycloak.share.util;
import java.io.Serializable;
import org.alfresco.util.ParameterCheck;
-
-import de.acosix.alfresco.keycloak.share.deps.keycloak.adapters.rotation.AdapterTokenVerifier.VerifiedTokens;
-import de.acosix.alfresco.keycloak.share.deps.keycloak.common.util.Time;
-import de.acosix.alfresco.keycloak.share.deps.keycloak.representations.AccessToken;
-import de.acosix.alfresco.keycloak.share.deps.keycloak.representations.AccessTokenResponse;
-import de.acosix.alfresco.keycloak.share.deps.keycloak.representations.IDToken;
+import org.keycloak.adapters.rotation.AdapterTokenVerifier.VerifiedTokens;
+import org.keycloak.common.util.Time;
+import org.keycloak.representations.AccessToken;
+import org.keycloak.representations.AccessTokenResponse;
+import org.keycloak.representations.IDToken;
/**
* Instances of this class encapsulate a potentially refreshable access token.
diff --git a/share/src/main/java/de/acosix/alfresco/keycloak/share/web/DefaultSessionIdMapper.java b/share/src/main/java/de/acosix/alfresco/keycloak/share/web/DefaultSessionIdMapper.java
index 9391310..5f9f466 100644
--- a/share/src/main/java/de/acosix/alfresco/keycloak/share/web/DefaultSessionIdMapper.java
+++ b/share/src/main/java/de/acosix/alfresco/keycloak/share/web/DefaultSessionIdMapper.java
@@ -25,18 +25,18 @@ import java.util.Map;
import java.util.Set;
import java.util.concurrent.locks.ReentrantReadWriteLock;
+import org.keycloak.adapters.spi.InMemorySessionIdMapper;
+import org.keycloak.adapters.spi.SessionIdMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.extensions.config.ConfigService;
import de.acosix.alfresco.keycloak.share.config.KeycloakAuthenticationConfigElement;
-import de.acosix.alfresco.keycloak.share.deps.keycloak.adapters.spi.InMemorySessionIdMapper;
-import de.acosix.alfresco.keycloak.share.deps.keycloak.adapters.spi.SessionIdMapper;
/**
* This implementation of a {@link SessionIdMapper Keycloak session ID mapper} is based on the {@link InMemorySessionIdMapper in-memory
- * mapper}, but uses a better model for synchronization and respects configured size limits, ejecting least-recently active sessions first.
+ * mapper}, but uses a better model for synchronisation and respects configured size limits, ejecting least-recently active sessions first.
* Activity of session with regards to being determined the "least-recently active" session is based upon validation calls to
* {@link #hasSession(String) hasSession}.
*
diff --git a/share/src/main/java/de/acosix/alfresco/keycloak/share/web/KeycloakAuthenticationFilter.java b/share/src/main/java/de/acosix/alfresco/keycloak/share/web/KeycloakAuthenticationFilter.java
index 77b3e02..5b184c4 100644
--- a/share/src/main/java/de/acosix/alfresco/keycloak/share/web/KeycloakAuthenticationFilter.java
+++ b/share/src/main/java/de/acosix/alfresco/keycloak/share/web/KeycloakAuthenticationFilter.java
@@ -59,6 +59,39 @@ import org.apache.http.conn.routing.HttpRoute;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.params.HttpParams;
import org.apache.http.util.EntityUtils;
+import org.keycloak.KeycloakSecurityContext;
+import org.keycloak.OAuth2Constants;
+import org.keycloak.TokenVerifier;
+import org.keycloak.adapters.AdapterDeploymentContext;
+import org.keycloak.adapters.AuthenticatedActionsHandler;
+import org.keycloak.adapters.BearerTokenRequestAuthenticator;
+import org.keycloak.adapters.HttpClientBuilder;
+import org.keycloak.adapters.KeycloakDeployment;
+import org.keycloak.adapters.KeycloakDeploymentBuilder;
+import org.keycloak.adapters.OAuthRequestAuthenticator;
+import org.keycloak.adapters.OIDCAuthenticationError;
+import org.keycloak.adapters.OidcKeycloakAccount;
+import org.keycloak.adapters.PreAuthActionsHandler;
+import org.keycloak.adapters.ServerRequest;
+import org.keycloak.adapters.authentication.ClientCredentialsProviderUtils;
+import org.keycloak.adapters.rotation.AdapterTokenVerifier;
+import org.keycloak.adapters.rotation.AdapterTokenVerifier.VerifiedTokens;
+import org.keycloak.adapters.servlet.FilterRequestAuthenticator;
+import org.keycloak.adapters.servlet.OIDCFilterSessionStore;
+import org.keycloak.adapters.servlet.OIDCServletHttpFacade;
+import org.keycloak.adapters.spi.AuthOutcome;
+import org.keycloak.adapters.spi.AuthenticationError;
+import org.keycloak.adapters.spi.KeycloakAccount;
+import org.keycloak.adapters.spi.SessionIdMapper;
+import org.keycloak.adapters.spi.UserSessionManagement;
+import org.keycloak.common.VerificationException;
+import org.keycloak.common.util.KeycloakUriBuilder;
+import org.keycloak.common.util.Time;
+import org.keycloak.constants.ServiceUrlConstants;
+import org.keycloak.representations.AccessToken;
+import org.keycloak.representations.AccessTokenResponse;
+import org.keycloak.representations.adapters.config.AdapterConfig;
+import org.keycloak.util.JsonSerialization;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.InitializingBean;
@@ -89,39 +122,6 @@ import org.springframework.extensions.webscripts.servlet.DependencyInjectedFilte
import de.acosix.alfresco.keycloak.share.config.KeycloakAdapterConfigElement;
import de.acosix.alfresco.keycloak.share.config.KeycloakAuthenticationConfigElement;
import de.acosix.alfresco.keycloak.share.config.KeycloakConfigConstants;
-import de.acosix.alfresco.keycloak.share.deps.keycloak.KeycloakSecurityContext;
-import de.acosix.alfresco.keycloak.share.deps.keycloak.OAuth2Constants;
-import de.acosix.alfresco.keycloak.share.deps.keycloak.TokenVerifier;
-import de.acosix.alfresco.keycloak.share.deps.keycloak.adapters.AdapterDeploymentContext;
-import de.acosix.alfresco.keycloak.share.deps.keycloak.adapters.AuthenticatedActionsHandler;
-import de.acosix.alfresco.keycloak.share.deps.keycloak.adapters.BearerTokenRequestAuthenticator;
-import de.acosix.alfresco.keycloak.share.deps.keycloak.adapters.HttpClientBuilder;
-import de.acosix.alfresco.keycloak.share.deps.keycloak.adapters.KeycloakDeployment;
-import de.acosix.alfresco.keycloak.share.deps.keycloak.adapters.KeycloakDeploymentBuilder;
-import de.acosix.alfresco.keycloak.share.deps.keycloak.adapters.OAuthRequestAuthenticator;
-import de.acosix.alfresco.keycloak.share.deps.keycloak.adapters.OIDCAuthenticationError;
-import de.acosix.alfresco.keycloak.share.deps.keycloak.adapters.OidcKeycloakAccount;
-import de.acosix.alfresco.keycloak.share.deps.keycloak.adapters.PreAuthActionsHandler;
-import de.acosix.alfresco.keycloak.share.deps.keycloak.adapters.ServerRequest;
-import de.acosix.alfresco.keycloak.share.deps.keycloak.adapters.authentication.ClientCredentialsProviderUtils;
-import de.acosix.alfresco.keycloak.share.deps.keycloak.adapters.rotation.AdapterTokenVerifier;
-import de.acosix.alfresco.keycloak.share.deps.keycloak.adapters.rotation.AdapterTokenVerifier.VerifiedTokens;
-import de.acosix.alfresco.keycloak.share.deps.keycloak.adapters.servlet.FilterRequestAuthenticator;
-import de.acosix.alfresco.keycloak.share.deps.keycloak.adapters.servlet.OIDCFilterSessionStore;
-import de.acosix.alfresco.keycloak.share.deps.keycloak.adapters.servlet.OIDCServletHttpFacade;
-import de.acosix.alfresco.keycloak.share.deps.keycloak.adapters.spi.AuthOutcome;
-import de.acosix.alfresco.keycloak.share.deps.keycloak.adapters.spi.AuthenticationError;
-import de.acosix.alfresco.keycloak.share.deps.keycloak.adapters.spi.KeycloakAccount;
-import de.acosix.alfresco.keycloak.share.deps.keycloak.adapters.spi.SessionIdMapper;
-import de.acosix.alfresco.keycloak.share.deps.keycloak.adapters.spi.UserSessionManagement;
-import de.acosix.alfresco.keycloak.share.deps.keycloak.common.VerificationException;
-import de.acosix.alfresco.keycloak.share.deps.keycloak.common.util.KeycloakUriBuilder;
-import de.acosix.alfresco.keycloak.share.deps.keycloak.common.util.Time;
-import de.acosix.alfresco.keycloak.share.deps.keycloak.constants.ServiceUrlConstants;
-import de.acosix.alfresco.keycloak.share.deps.keycloak.representations.AccessToken;
-import de.acosix.alfresco.keycloak.share.deps.keycloak.representations.AccessTokenResponse;
-import de.acosix.alfresco.keycloak.share.deps.keycloak.representations.adapters.config.AdapterConfig;
-import de.acosix.alfresco.keycloak.share.deps.keycloak.util.JsonSerialization;
import de.acosix.alfresco.keycloak.share.remote.AccessTokenAwareSlingshotAlfrescoConnector;
import de.acosix.alfresco.keycloak.share.util.RefreshableAccessTokenHolder;
@@ -1474,6 +1474,10 @@ public class KeycloakAuthenticationFilter implements DependencyInjectedFilter, I
* Checks if the backend requires HTTP Basic or Keycloak authentication for the current request context, which may include an externally
* authenticated user.
*
+ * @param req
+ * the request to check
+ * @param session
+ * the active session managing any persistent access token state
* @return {@code true} if the backend requires HTTP Basic or Keycloak authentication, {@code false} otherwise
*/
protected boolean isBackendRequiringBasicOrKeycloakAuthentication(final HttpServletRequest req, final HttpSession session)
@@ -1678,6 +1682,8 @@ public class KeycloakAuthenticationFilter implements DependencyInjectedFilter, I
* @param session
* the active session managing any persistent access token state
* @return the response to obtaining the access token for the Alfresco backend
+ * @throws IOException
+ * if any error occurs calling Keycloak to exchange the access token
*/
protected AccessTokenResponse getAccessToken(final String alfrescoResourceName, final HttpSession session) throws IOException
{
diff --git a/share/src/main/java/de/acosix/alfresco/keycloak/share/web/ResponseHeaderCookieCaptureServletHttpFacade.java b/share/src/main/java/de/acosix/alfresco/keycloak/share/web/ResponseHeaderCookieCaptureServletHttpFacade.java
index 8c53404..87c7195 100644
--- a/share/src/main/java/de/acosix/alfresco/keycloak/share/web/ResponseHeaderCookieCaptureServletHttpFacade.java
+++ b/share/src/main/java/de/acosix/alfresco/keycloak/share/web/ResponseHeaderCookieCaptureServletHttpFacade.java
@@ -26,9 +26,8 @@ import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.alfresco.util.Pair;
-
-import de.acosix.alfresco.keycloak.share.deps.keycloak.adapters.servlet.ServletHttpFacade;
-import de.acosix.alfresco.keycloak.share.deps.keycloak.adapters.spi.HttpFacade;
+import org.keycloak.adapters.servlet.ServletHttpFacade;
+import org.keycloak.adapters.spi.HttpFacade;
/**
* This {@link HttpFacade} wraps servlet requests and responses in such a way that any response headers / cookies being set by Keycloak
diff --git a/share/src/test/java/de/acosix/alfresco/keycloak/share/config/KeycloakAdapterConfigTest.java b/share/src/test/java/de/acosix/alfresco/keycloak/share/config/KeycloakAdapterConfigTest.java
index 266ece2..efd2fe9 100644
--- a/share/src/test/java/de/acosix/alfresco/keycloak/share/config/KeycloakAdapterConfigTest.java
+++ b/share/src/test/java/de/acosix/alfresco/keycloak/share/config/KeycloakAdapterConfigTest.java
@@ -20,14 +20,13 @@ import java.util.Map;
import org.junit.Assert;
import org.junit.Test;
+import org.keycloak.representations.adapters.config.AdapterConfig;
import org.springframework.extensions.config.Config;
import org.springframework.extensions.config.ConfigElement;
import org.springframework.extensions.config.ConfigSource;
import org.springframework.extensions.config.source.UrlConfigSource;
import org.springframework.extensions.config.xml.XMLConfigService;
-import de.acosix.alfresco.keycloak.share.deps.keycloak.representations.adapters.config.AdapterConfig;
-
/**
* @author Axel Faust
*/