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); } } }