diff --git a/.classpath b/.classpath
index e43402f..f9b0575 100644
--- a/.classpath
+++ b/.classpath
@@ -22,11 +22,7 @@
-
-
-
-
-
+
diff --git a/src/main/java/org/gcube/common/authorization/client/proxy/AuthorizationProxy.java b/src/main/java/org/gcube/common/authorization/client/proxy/AuthorizationProxy.java
index 57910ef..282d2d9 100644
--- a/src/main/java/org/gcube/common/authorization/client/proxy/AuthorizationProxy.java
+++ b/src/main/java/org/gcube/common/authorization/client/proxy/AuthorizationProxy.java
@@ -49,5 +49,7 @@ public interface AuthorizationProxy {
throws Exception;
Map retrieveExternalServiceGenerated() throws Exception;
+
+ void removeAllReleatedToken(UserInfo client, String context) throws Exception;
}
diff --git a/src/main/java/org/gcube/common/authorization/client/proxy/DefaultAuthorizationProxy.java b/src/main/java/org/gcube/common/authorization/client/proxy/DefaultAuthorizationProxy.java
index 899a853..afee260 100644
--- a/src/main/java/org/gcube/common/authorization/client/proxy/DefaultAuthorizationProxy.java
+++ b/src/main/java/org/gcube/common/authorization/client/proxy/DefaultAuthorizationProxy.java
@@ -185,6 +185,28 @@ public class DefaultAuthorizationProxy implements AuthorizationProxy {
return Utils.addInfrastructureHashToToken(token, infrastructureHash);
}
+ @Override
+ public void removeAllReleatedToken(UserInfo client, String context) throws Exception{
+ String methodPath = "/token/user";
+ int infrastructureHash = Utils.getInfrastructureHashfromContext(context);
+ StringBuilder callUrl = new StringBuilder(getInternalEnpoint(infrastructureHash)).append(methodPath).append("?")
+ .append(CONTEXT_PARAM).append("=").append(context);
+
+ URL url = new URL(callUrl.toString());
+ HttpURLConnection connection = makeRequest(url, "DELETE", false);
+ connection.setDoOutput(true);
+ connection.setDoInput(true);
+ connection.setRequestProperty("Content-type", "application/xml");
+
+ try(OutputStream os = new BufferedOutputStream(connection.getOutputStream())){
+ Binder.getContext().createMarshaller().marshal(client, os);
+ }
+
+ log.debug("response code for "+callUrl.toString()+" is "+connection.getResponseCode()+" "+connection.getResponseMessage());
+
+ if (connection.getResponseCode()!=200) throw new Exception("error contacting authorization service");
+
+ }
@Override
public String generateApiKey(String apiQualifier) throws Exception {
diff --git a/src/main/java/org/gcube/common/authorization/client/proxy/Utils.java b/src/main/java/org/gcube/common/authorization/client/proxy/Utils.java
index caa576e..9048554 100644
--- a/src/main/java/org/gcube/common/authorization/client/proxy/Utils.java
+++ b/src/main/java/org/gcube/common/authorization/client/proxy/Utils.java
@@ -11,7 +11,7 @@ public class Utils {
private static final String REAL_TOKEN_REGEXPR ="([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})(-[0-9]+)?";
-
+
protected static int getInfrastructureHashfromContext(String context) {
try{
String infrastructure = context.split("/")[1];
@@ -46,7 +46,7 @@ public class Utils {
String realToken = matcher.group(1);
return realToken;
}catch(Exception e){
- throw new RuntimeException("token required for this method", e);
+ throw new RuntimeException("valid token required for this method", e);
}
}
}