diff --git a/CHANGELOG.md b/CHANGELOG.md
index 9eb5ae1..5eada94 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,9 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
# Changelog for Accounting Service
+## [v2.1.0-SNAPSHOT]
+
+- Added request filter to allow the service to properly run with any Smartgears version
## [v2.0.0]
diff --git a/pom.xml b/pom.xml
index 98e4262..74f1b34 100644
--- a/pom.xml
+++ b/pom.xml
@@ -9,7 +9,7 @@
org.gcube.accounting
accounting-service
- 2.0.0
+ 2.1.0-SNAPSHOT
war
Accounting Service
This service allows any client to publish Accounting data
@@ -48,6 +48,11 @@
slf4j-api
provided
+
+ org.gcube.common
+ authorization-utils
+ [2.2.0, 3.0.0-SNAPSHOT)
+
org.gcube.accounting
accounting-lib
diff --git a/src/main/java/org/gcube/accounting/service/resources/RequestFilter.java b/src/main/java/org/gcube/accounting/service/resources/RequestFilter.java
new file mode 100644
index 0000000..fc013c6
--- /dev/null
+++ b/src/main/java/org/gcube/accounting/service/resources/RequestFilter.java
@@ -0,0 +1,60 @@
+package org.gcube.accounting.service.resources;
+
+import java.io.IOException;
+
+import javax.ws.rs.container.ContainerRequestContext;
+import javax.ws.rs.container.ContainerRequestFilter;
+import javax.ws.rs.container.ContainerResponseContext;
+import javax.ws.rs.container.ContainerResponseFilter;
+import javax.ws.rs.container.PreMatching;
+import javax.ws.rs.ext.Provider;
+
+import org.gcube.common.authorization.library.provider.AccessTokenProvider;
+import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
+import org.gcube.common.authorization.utils.manager.SecretManager;
+import org.gcube.common.authorization.utils.manager.SecretManagerProvider;
+import org.gcube.common.authorization.utils.secret.GCubeSecret;
+import org.gcube.common.authorization.utils.secret.JWTSecret;
+import org.gcube.common.authorization.utils.secret.Secret;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * @author Luca Frosini (ISTI - CNR)
+ */
+@Provider
+@PreMatching
+public class RequestFilter implements ContainerRequestFilter, ContainerResponseFilter {
+
+ private final static Logger logger = LoggerFactory.getLogger(RequestFilter.class);
+
+ @Override
+ public void filter(ContainerRequestContext requestContext) throws IOException {
+ logger.trace("PreMatching RequestFilter");
+
+ SecretManagerProvider.instance.remove();
+ SecretManager secretManager = new SecretManager();
+
+ String token = AccessTokenProvider.instance.get();
+ if(token!=null) {
+ Secret secret = new JWTSecret(token);
+ secretManager.addSecret(secret);
+ }
+
+ token = SecurityTokenProvider.instance.get();
+ if(token!=null) {
+ Secret secret = new GCubeSecret(token);
+ secretManager.addSecret(secret);
+ }
+
+ SecretManagerProvider.instance.set(secretManager);
+ }
+
+ @Override
+ public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext)
+ throws IOException {
+ logger.trace("ResponseFilter");
+ SecretManagerProvider.instance.remove();
+ }
+
+}