From 44968e867a0d8d7b7fc5e62732676889acf27070 Mon Sep 17 00:00:00 2001 From: "lucio.lelii" Date: Wed, 28 Sep 2016 14:00:32 +0000 Subject: [PATCH] git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/Common/authorization-common-client@131990 82a268e6-3cf1-43bd-a215-b396298e98cf --- .../client/proxy/DefaultAuthorizationProxy.java | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) 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 3fb0ae5..2d5ccec 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 @@ -15,6 +15,8 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import javax.net.ssl.HttpsURLConnection; + import org.gcube.common.authorization.client.Binder; import org.gcube.common.authorization.client.Constants; import org.gcube.common.authorization.client.exceptions.ObjectNotFound; @@ -46,8 +48,9 @@ public class DefaultAuthorizationProxy implements AuthorizationProxy { } private String getInternalEnpoint(int infrastructureHash){ - StringBuilder endpoint = new StringBuilder("http://").append(getEndpoint(infrastructureHash).getHost()).append(":") - .append(getEndpoint(infrastructureHash).getPort()).append("/authorization-service/gcube/service"); + AuthorizationEndpoint ae = getEndpoint(infrastructureHash); + StringBuilder endpoint = new StringBuilder(ae.isSecureConnection()?"https://":"http://").append(ae.getHost()).append(":") + .append(ae.getPort()).append("/authorization-service/gcube/service"); return endpoint.toString(); } @@ -134,6 +137,8 @@ public class DefaultAuthorizationProxy implements AuthorizationProxy { URL url = new URL(callUrl.toString()); HttpURLConnection connection = makeRequest(url, "PUT", true); connection.setDoInput(true); + connection.setDoOutput(true); + connection.setFixedLengthStreamingMode(0); connection.setRequestProperty("Content-type", "application/xml"); @@ -235,6 +240,7 @@ public class DefaultAuthorizationProxy implements AuthorizationProxy { URL url = new URL(callUrl.toString()); HttpURLConnection connection = makeRequest(url, "GET", false); connection.setDoInput(true); + if (connection.getResponseCode()==404) throw new ObjectNotFound("token "+maskedToken+" not found"); if (connection.getResponseCode()!=200) throw new Exception("error contacting authorization service (error code is "+connection.getResponseCode()+")"); if (connection.getContentLengthLong()<=0) return null; @@ -299,7 +305,11 @@ public class DefaultAuthorizationProxy implements AuthorizationProxy { } private HttpURLConnection makeRequest(URL url, String method, boolean includeTokenInHeader) throws Exception{ - HttpURLConnection connection = (HttpURLConnection)url.openConnection(); + HttpURLConnection connection; + if (url.toString().startsWith("https://")) + connection = (HttpsURLConnection)url.openConnection(); + else connection = (HttpURLConnection)url.openConnection(); + if (includeTokenInHeader){ if (SecurityTokenProvider.instance.get()==null) throw new RuntimeException("null token passed"); connection.setRequestProperty(Constants.TOKEN_HEADER_ENTRY,Utils.getRealToken(SecurityTokenProvider.instance.get()));