diff --git a/pom.xml b/pom.xml index 2fea114..d6265ef 100644 --- a/pom.xml +++ b/pom.xml @@ -2,7 +2,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - com.inteligr8 + com.inteligr8.alfresco activiti-java-enterprise-api 1.0-v1-SNAPSHOT Alfresco Process Services ReST API Client for Java @@ -19,6 +19,7 @@ 5.2.14.RELEASE 2.3.10.RELEASE 2.34 + 3.3.2 @@ -26,27 +27,34 @@ org.springframework spring-context ${spring.version} - provided + + + com.fasterxml.jackson.core + jackson-databind + 2.12.2 + + + jakarta.ws.rs + jakarta.ws.rs-api + 2.1.6 org.glassfish.jersey.core jersey-client ${jersey.version} + test org.glassfish.jersey.inject jersey-hk2 ${jersey.version} + test org.glassfish.jersey.media jersey-media-json-jackson ${jersey.version} - - - org.glassfish.jersey.security - oauth2-client - ${jersey.version} + test org.junit.jupiter diff --git a/src/main/java/com/inteligr8/alfresco/activiti/AccessTokenRequestFilter.java b/src/main/java/com/inteligr8/alfresco/activiti/AccessTokenRequestFilter.java new file mode 100644 index 0000000..0fc2f4d --- /dev/null +++ b/src/main/java/com/inteligr8/alfresco/activiti/AccessTokenRequestFilter.java @@ -0,0 +1,20 @@ +package com.inteligr8.alfresco.activiti; + +import javax.ws.rs.client.ClientRequestContext; +import javax.ws.rs.client.ClientRequestFilter; +import javax.ws.rs.core.HttpHeaders; + +public class AccessTokenRequestFilter implements ClientRequestFilter { + + private final String token; + + public AccessTokenRequestFilter(String token) { + this.token = token; + } + + @Override + public void filter(ClientRequestContext requestContext) { + requestContext.getHeaders().add(HttpHeaders.AUTHORIZATION, "Bearer " + this.token); + } + +} diff --git a/src/main/java/com/inteligr8/alfresco/activiti/ApsClient.java b/src/main/java/com/inteligr8/alfresco/activiti/ApsClient.java index 813fc8b..d5ce59b 100644 --- a/src/main/java/com/inteligr8/alfresco/activiti/ApsClient.java +++ b/src/main/java/com/inteligr8/alfresco/activiti/ApsClient.java @@ -1,7 +1,6 @@ package com.inteligr8.alfresco.activiti; import javax.ws.rs.client.ClientBuilder; -import javax.ws.rs.core.Feature; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -29,10 +28,7 @@ public class ApsClient { javax.ws.rs.client.Client client = ClientBuilder .newClient(); - Feature feature = this.config.getAuthorizationFeature(); - if (feature != null) - client.register(feature); - + this.config.authorize(client); return new EnterpriseAPI(this.config.getBaseUrl() + "/api", client); } diff --git a/src/main/java/com/inteligr8/alfresco/activiti/ApsClientConfiguration.java b/src/main/java/com/inteligr8/alfresco/activiti/ApsClientConfiguration.java index 9c222a8..3ef1e4c 100644 --- a/src/main/java/com/inteligr8/alfresco/activiti/ApsClientConfiguration.java +++ b/src/main/java/com/inteligr8/alfresco/activiti/ApsClientConfiguration.java @@ -1,9 +1,7 @@ package com.inteligr8.alfresco.activiti; -import javax.ws.rs.core.Feature; +import javax.ws.rs.client.Client; -import org.glassfish.jersey.client.authentication.HttpAuthenticationFeature; -import org.glassfish.jersey.client.oauth2.OAuth2ClientSupport; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; @@ -28,14 +26,12 @@ public class ApsClientConfiguration { return this.baseUrl; } - public Feature getAuthorizationFeature() { + public void authorize(Client client) { if (this.basicAuthUsername != null) { - return HttpAuthenticationFeature.basic(this.basicAuthUsername, this.basicAuthPassword); + client.register(new BasicAuthRequestFilter(this.basicAuthUsername, this.basicAuthPassword)); } else if (this.accessToken != null) { - return OAuth2ClientSupport.feature(this.accessToken); + client.register(new AccessTokenRequestFilter(this.accessToken)); } - - return null; } } diff --git a/src/main/java/com/inteligr8/alfresco/activiti/BasicAuthRequestFilter.java b/src/main/java/com/inteligr8/alfresco/activiti/BasicAuthRequestFilter.java new file mode 100644 index 0000000..0743fef --- /dev/null +++ b/src/main/java/com/inteligr8/alfresco/activiti/BasicAuthRequestFilter.java @@ -0,0 +1,28 @@ +package com.inteligr8.alfresco.activiti; + +import java.io.UnsupportedEncodingException; +import java.util.Base64; + +import javax.ws.rs.client.ClientRequestContext; +import javax.ws.rs.client.ClientRequestFilter; +import javax.ws.rs.core.HttpHeaders; + +public class BasicAuthRequestFilter implements ClientRequestFilter { + + private final String username; + private final String password; + + public BasicAuthRequestFilter(String username, String password) { + this.username = username; + this.password = password; + } + + @Override + public void filter(ClientRequestContext requestContext) throws UnsupportedEncodingException { + String userAndPass = this.username + ":" + this.password; + String userAndPassEncoded = Base64.getEncoder().encodeToString(userAndPass.getBytes("utf-8")); + + requestContext.getHeaders().add(HttpHeaders.AUTHORIZATION, "Basic " + userAndPassEncoded); + } + +}