porting to smartgears 4
This commit is contained in:
parent
d0fa2589a7
commit
181d6f80d0
9
pom.xml
9
pom.xml
|
@ -3,7 +3,7 @@
|
|||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>org.gcube.common</groupId>
|
||||
<artifactId>authorization-client</artifactId>
|
||||
<version>2.0.7</version>
|
||||
<version>3.0.0-SNAPSHOT</version>
|
||||
<name>authorization service client library</name>
|
||||
|
||||
<parent>
|
||||
|
@ -11,20 +11,19 @@
|
|||
<groupId>org.gcube.tools</groupId>
|
||||
<version>1.1.0</version>
|
||||
</parent>
|
||||
<!--
|
||||
|
||||
<dependencyManagement>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.gcube.distribution</groupId>
|
||||
<artifactId>gcube-bom</artifactId>
|
||||
<version>1.0.0-SNAPSHOT</version>
|
||||
<version>3.0.0-SNAPSHOT</version>
|
||||
<type>pom</type>
|
||||
<scope>import</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</dependencyManagement>
|
||||
|
||||
-->
|
||||
|
||||
<scm>
|
||||
<connection>scm:git:https://code-repo.d4science.org/gCubeSystem/${project.artifactId}.git</connection>
|
||||
|
@ -41,13 +40,11 @@
|
|||
<dependency>
|
||||
<groupId>org.gcube.common</groupId>
|
||||
<artifactId>common-authorization</artifactId>
|
||||
<version>[2.0.0, 3.0.0-SNAPSHOT)</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.slf4j</groupId>
|
||||
<artifactId>slf4j-api</artifactId>
|
||||
<version>1.7.2</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
|
|
|
@ -1,18 +1,12 @@
|
|||
package org.gcube.common.authorization.client.proxy;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.gcube.common.authorization.client.exceptions.ObjectNotFound;
|
||||
import org.gcube.common.authorization.library.AuthorizationEntry;
|
||||
import org.gcube.common.authorization.library.enpoints.AuthorizationEndpoint;
|
||||
import org.gcube.common.authorization.library.enpoints.EndpointsContainer;
|
||||
import org.gcube.common.authorization.library.policies.Policy;
|
||||
import org.gcube.common.authorization.library.provider.ContainerInfo;
|
||||
import org.gcube.common.authorization.library.provider.ServiceInfo;
|
||||
import org.gcube.common.authorization.library.provider.UserInfo;
|
||||
import org.gcube.common.authorization.library.utils.MultiServiceTokenRequest;
|
||||
|
||||
public interface AuthorizationProxy {
|
||||
|
||||
|
@ -23,39 +17,13 @@ public interface AuthorizationProxy {
|
|||
AuthorizationEntry get(String token) throws ObjectNotFound, Exception;
|
||||
|
||||
List<AuthorizationEntry> get(List<String> tokens) throws ObjectNotFound, Exception;
|
||||
|
||||
void addPolicies(List<Policy> policies) throws Exception;
|
||||
|
||||
void removePolicies(long ... ids) throws Exception;
|
||||
|
||||
List<Policy> getPolicies(String context) throws Exception;
|
||||
|
||||
String generateApiKey(String apiQualifier) throws Exception;
|
||||
|
||||
String generateServiceToken(ServiceInfo client) throws Exception;
|
||||
|
||||
List<String> generateServiceToken(ServiceInfo client, List<String> containerTokens) throws Exception;
|
||||
|
||||
|
||||
String generateUserToken(UserInfo client, String context)
|
||||
throws Exception;
|
||||
|
||||
String requestActivation(ContainerInfo container) throws Exception;
|
||||
|
||||
String requestActivation(ContainerInfo container, String context) throws Exception;
|
||||
|
||||
Map<String, String> retrieveApiKeys() throws Exception;
|
||||
|
||||
File getSymmKey(String filePath) throws Exception;
|
||||
|
||||
String resolveTokenByUserAndContext(String user, String context)
|
||||
throws Exception;
|
||||
|
||||
String generateExternalServiceToken(String serviceId)
|
||||
throws Exception;
|
||||
|
||||
Map<String, String> retrieveExternalServiceGenerated() throws Exception;
|
||||
|
||||
void removeAllReleatedToken(String clientId, String context) throws Exception;
|
||||
|
||||
void setTokenRoles(String token, List<String> roles) throws Exception;
|
||||
|
|
|
@ -1,12 +1,10 @@
|
|||
package org.gcube.common.authorization.client.proxy;
|
||||
|
||||
import static org.gcube.common.authorization.client.Constants.CONTEXT_PARAM;
|
||||
import static org.gcube.common.authorization.client.Constants.CLIENT_ID_PARAM;
|
||||
import static org.gcube.common.authorization.client.Constants.CONTEXT_PARAM;
|
||||
|
||||
import java.io.BufferedOutputStream;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.OutputStream;
|
||||
|
@ -17,29 +15,18 @@ import java.util.Collections;
|
|||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
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;
|
||||
import org.gcube.common.authorization.library.AuthorizationEntry;
|
||||
import org.gcube.common.authorization.library.ExternalServiceList;
|
||||
import org.gcube.common.authorization.library.Policies;
|
||||
import org.gcube.common.authorization.library.QualifiersList;
|
||||
import org.gcube.common.authorization.library.enpoints.AuthorizationEndpoint;
|
||||
import org.gcube.common.authorization.library.enpoints.AuthorizationEndpointScanner;
|
||||
import org.gcube.common.authorization.library.enpoints.EndpointsContainer;
|
||||
import org.gcube.common.authorization.library.policies.Policy;
|
||||
import org.gcube.common.authorization.library.provider.ContainerInfo;
|
||||
import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
|
||||
import org.gcube.common.authorization.library.provider.ServiceInfo;
|
||||
import org.gcube.common.authorization.library.provider.UserInfo;
|
||||
import org.gcube.common.authorization.library.utils.AuthorizationEntryList;
|
||||
import org.gcube.common.authorization.library.utils.ListMapper;
|
||||
import org.gcube.common.authorization.library.utils.MultiServiceTokenRequest;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
|
@ -68,111 +55,7 @@ public class DefaultAuthorizationProxy implements AuthorizationProxy {
|
|||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String generateServiceToken(ServiceInfo client) throws Exception {
|
||||
|
||||
String methodPath = "/token/service";
|
||||
|
||||
int infrastructureHash = Utils.getInfrastructureHashFromToken(SecurityTokenProvider.instance.get(), endpoints.getDefaultInfrastructure());
|
||||
|
||||
StringBuilder callUrl = new StringBuilder(getInternalEnpoint(infrastructureHash)).append(methodPath);
|
||||
|
||||
URL url = new URL(callUrl.toString());
|
||||
HttpURLConnection connection = makeRequest(url, "PUT", true);
|
||||
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");
|
||||
String token= "";
|
||||
try(BufferedReader reader = new BufferedReader(new InputStreamReader((InputStream)connection.getContent()))){
|
||||
StringBuilder result = new StringBuilder();
|
||||
String line;
|
||||
while((line = reader.readLine()) != null)
|
||||
result.append(line);
|
||||
token = result.toString();
|
||||
}
|
||||
|
||||
return Utils.addInfrastructureHashToToken(token, infrastructureHash);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public List<String> generateServiceToken(ServiceInfo client, List<String> containerTokens) throws Exception {
|
||||
|
||||
String methodPath = "/token/service/bunch";
|
||||
|
||||
int infrastructureHash = Utils.getInfrastructureHashFromToken(SecurityTokenProvider.instance.get(), endpoints.getDefaultInfrastructure());
|
||||
|
||||
StringBuilder callUrl = new StringBuilder(getInternalEnpoint(infrastructureHash)).append(methodPath);
|
||||
|
||||
|
||||
|
||||
List<String> realTokens = containerTokens.stream().map(t -> Utils.getRealToken(t)).collect(Collectors.toList());
|
||||
|
||||
URL url = new URL(callUrl.toString());
|
||||
HttpURLConnection connection = makeRequest(url, "PUT", true);
|
||||
connection.setDoOutput(true);
|
||||
connection.setDoInput(true);
|
||||
connection.setRequestProperty("Content-type", "application/xml");
|
||||
|
||||
try(OutputStream os = new BufferedOutputStream(connection.getOutputStream())){
|
||||
Binder.getContext().createMarshaller().marshal(new MultiServiceTokenRequest(realTokens, 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");
|
||||
List<String> tokensToReturn = new ArrayList<String>();
|
||||
|
||||
try(InputStream stream = (InputStream)connection.getContent();){
|
||||
ListMapper entries = (ListMapper)Binder.getContext().createUnmarshaller().unmarshal(stream);
|
||||
|
||||
for (String token: entries.getList())
|
||||
tokensToReturn.add(Utils.addInfrastructureHashToToken(token, infrastructureHash));
|
||||
return tokensToReturn;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String generateExternalServiceToken(String serviceId) throws Exception {
|
||||
|
||||
String methodPath = "/token/external/";
|
||||
|
||||
int infrastructureHash = Utils.getInfrastructureHashFromToken(SecurityTokenProvider.instance.get(), endpoints.getDefaultInfrastructure());
|
||||
|
||||
StringBuilder callUrl = new StringBuilder(getInternalEnpoint(infrastructureHash)).append(methodPath).append(serviceId);
|
||||
|
||||
URL url = new URL(callUrl.toString());
|
||||
HttpURLConnection connection = makeRequest(url, "PUT", true);
|
||||
connection.setDoInput(true);
|
||||
connection.setRequestProperty("Content-type", "application/xml");
|
||||
|
||||
log.debug("response code for "+callUrl.toString()+" is "+connection.getResponseCode()+" "+connection.getResponseMessage());
|
||||
|
||||
if (connection.getResponseCode()!=200) throw new Exception("error contacting authorization service");
|
||||
String token= "";
|
||||
try(BufferedReader reader = new BufferedReader(new InputStreamReader((InputStream)connection.getContent()))){
|
||||
StringBuilder result = new StringBuilder();
|
||||
String line;
|
||||
while((line = reader.readLine()) != null)
|
||||
result.append(line);
|
||||
token = result.toString();
|
||||
}
|
||||
|
||||
return Utils.addInfrastructureHashToToken(token, infrastructureHash);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String resolveTokenByUserAndContext(String user, String context) throws ObjectNotFound, Exception {
|
||||
|
||||
|
@ -183,7 +66,7 @@ public class DefaultAuthorizationProxy implements AuthorizationProxy {
|
|||
StringBuilder callUrl = new StringBuilder(getInternalEnpoint(infrastructureHash)).append(methodPath).append(user).append("?context=").append(context);
|
||||
|
||||
URL url = new URL(callUrl.toString());
|
||||
HttpURLConnection connection = makeRequest(url, "GET", false);
|
||||
HttpURLConnection connection = makeRequest(url, "GET");
|
||||
|
||||
log.debug("response code for "+callUrl.toString()+" is "+connection.getResponseCode()+" "+connection.getResponseMessage());
|
||||
|
||||
|
@ -213,7 +96,7 @@ public class DefaultAuthorizationProxy implements AuthorizationProxy {
|
|||
.append(CONTEXT_PARAM).append("=").append(context);
|
||||
|
||||
URL url = new URL(callUrl.toString());
|
||||
HttpURLConnection connection = makeRequest(url, "PUT", false);
|
||||
HttpURLConnection connection = makeRequest(url, "PUT");
|
||||
connection.setDoOutput(true);
|
||||
connection.setDoInput(true);
|
||||
connection.setRequestProperty("Content-type", "application/xml");
|
||||
|
@ -248,7 +131,7 @@ public class DefaultAuthorizationProxy implements AuthorizationProxy {
|
|||
StringBuilder callUrl = new StringBuilder(getInternalEnpoint(infrastructureHash)).append(methodPath);
|
||||
|
||||
URL url = new URL(callUrl.toString());
|
||||
HttpURLConnection connection = makeRequest(url, "PUT", false);
|
||||
HttpURLConnection connection = makeRequest(url, "PUT");
|
||||
connection.setDoOutput(true);
|
||||
connection.setDoInput(true);
|
||||
connection.setRequestProperty("Content-type", "application/xml");
|
||||
|
@ -274,7 +157,7 @@ public class DefaultAuthorizationProxy implements AuthorizationProxy {
|
|||
.append(CONTEXT_PARAM).append("=").append(context).append("&").append(CLIENT_ID_PARAM).append("=").append(clientId);
|
||||
|
||||
URL url = new URL(callUrl.toString());
|
||||
HttpURLConnection connection = makeRequest(url, "DELETE", false);
|
||||
HttpURLConnection connection = makeRequest(url, "DELETE");
|
||||
//connection.setDoOutput(false);
|
||||
connection.setDoInput(true);
|
||||
|
||||
|
@ -283,181 +166,7 @@ public class DefaultAuthorizationProxy implements AuthorizationProxy {
|
|||
if (connection.getResponseCode()!=200 && connection.getResponseCode()!=204) throw new Exception("error contacting authorization service");
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String generateApiKey(String apiQualifier) throws Exception {
|
||||
|
||||
|
||||
String methodPath = String.format("/apikey?qualifier=%s",apiQualifier);
|
||||
|
||||
int infrastructureHash = Utils.getInfrastructureHashFromToken(SecurityTokenProvider.instance.get(), endpoints.getDefaultInfrastructure());
|
||||
|
||||
StringBuilder callUrl = new StringBuilder(getInternalEnpoint(infrastructureHash)).append(methodPath);
|
||||
|
||||
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");
|
||||
|
||||
|
||||
log.debug("response code for "+callUrl.toString()+" is "+connection.getResponseCode()+" "+connection.getResponseMessage());
|
||||
|
||||
if (connection.getResponseCode()!=200) throw new Exception("error contacting authorization service");
|
||||
String token= "";
|
||||
try(BufferedReader reader = new BufferedReader(new InputStreamReader((InputStream)connection.getContent()))){
|
||||
StringBuilder result = new StringBuilder();
|
||||
String line;
|
||||
while((line = reader.readLine()) != null)
|
||||
result.append(line);
|
||||
token = result.toString();
|
||||
}
|
||||
|
||||
return Utils.addInfrastructureHashToToken(token, infrastructureHash);
|
||||
}
|
||||
|
||||
@Override
|
||||
/**
|
||||
* return a map with key qualifier and value token
|
||||
*/
|
||||
public Map<String, String> retrieveApiKeys() throws Exception{
|
||||
String methodPath = "/apikey/";
|
||||
|
||||
int infrastructureHash = Utils.getInfrastructureHashFromToken(SecurityTokenProvider.instance.get(), endpoints.getDefaultInfrastructure());
|
||||
|
||||
|
||||
StringBuilder callUrl = new StringBuilder(getInternalEnpoint(infrastructureHash)).append(methodPath);
|
||||
|
||||
URL url = new URL(callUrl.toString());
|
||||
HttpURLConnection connection = makeRequest(url, "GET", true);
|
||||
connection.setDoInput(true);
|
||||
connection.setDoOutput(true);
|
||||
|
||||
if (connection.getResponseCode()!=200) throw new Exception("error retrieving keys (error code is "+connection.getResponseCode()+")");
|
||||
if (connection.getContentLengthLong()==0) return Collections.emptyMap();
|
||||
|
||||
Map<String, String> tokensQulifiersMap;
|
||||
try(InputStream stream = (InputStream)connection.getContent();){
|
||||
QualifiersList entries = (QualifiersList)Binder.getContext().createUnmarshaller().unmarshal(stream);
|
||||
tokensQulifiersMap = entries.getQualifiers();
|
||||
}
|
||||
|
||||
if (tokensQulifiersMap!=null && !tokensQulifiersMap.isEmpty()){
|
||||
Map<String, String> toReturnMap = new HashMap<String, String>();
|
||||
for (Entry<String, String> entry: tokensQulifiersMap.entrySet())
|
||||
toReturnMap.put(entry.getKey(), Utils.addInfrastructureHashToToken(entry.getValue(), infrastructureHash));
|
||||
return toReturnMap;
|
||||
} else return Collections.emptyMap();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
/**
|
||||
* return a map with key external service id and value token
|
||||
*/
|
||||
public Map<String, String> retrieveExternalServiceGenerated() throws Exception{
|
||||
String methodPath = "/token/external";
|
||||
|
||||
int infrastructureHash = Utils.getInfrastructureHashFromToken(SecurityTokenProvider.instance.get(), endpoints.getDefaultInfrastructure());
|
||||
|
||||
|
||||
StringBuilder callUrl = new StringBuilder(getInternalEnpoint(infrastructureHash)).append(methodPath);
|
||||
|
||||
URL url = new URL(callUrl.toString());
|
||||
HttpURLConnection connection = makeRequest(url, "GET", true);
|
||||
connection.setDoInput(true);
|
||||
connection.setDoOutput(true);
|
||||
|
||||
if (connection.getResponseCode()!=200) throw new Exception("error retrieving externalServices (error code is "+connection.getResponseCode()+")");
|
||||
if (connection.getContentLengthLong()==0) return Collections.emptyMap();
|
||||
|
||||
Map<String, String> externalServiceMap;
|
||||
try(InputStream stream = (InputStream)connection.getContent();){
|
||||
ExternalServiceList entries = (ExternalServiceList)Binder.getContext().createUnmarshaller().unmarshal(stream);
|
||||
externalServiceMap = entries.getExternalServiceMap();
|
||||
}
|
||||
|
||||
if (externalServiceMap!=null && !externalServiceMap.isEmpty()){
|
||||
Map<String, String> toReturnMap = new HashMap<String, String>();
|
||||
for (Entry<String, String> entry: externalServiceMap.entrySet())
|
||||
toReturnMap.put(entry.getKey(), Utils.addInfrastructureHashToToken(entry.getValue(), infrastructureHash));
|
||||
return toReturnMap;
|
||||
} else return Collections.emptyMap();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String requestActivation(ContainerInfo container, String context) throws Exception {
|
||||
|
||||
String methodPath = "/token/node";
|
||||
|
||||
int infrastructureHash = Utils.getInfrastructureHashfromContext(context);
|
||||
|
||||
StringBuilder callUrl;
|
||||
|
||||
callUrl = new StringBuilder(getInternalEnpoint(infrastructureHash)).append(methodPath).append("?context=").append(context);
|
||||
|
||||
URL url = new URL(callUrl.toString());
|
||||
HttpURLConnection connection = makeRequest(url, "PUT", false);
|
||||
connection.setDoOutput(true);
|
||||
connection.setDoInput(true);
|
||||
connection.setRequestProperty("Content-type", "application/xml");
|
||||
|
||||
try(OutputStream os = new BufferedOutputStream(connection.getOutputStream())){
|
||||
Binder.getContext().createMarshaller().marshal(container, os);
|
||||
}
|
||||
|
||||
log.debug("response code is "+connection.getResponseCode());
|
||||
|
||||
if (connection.getResponseCode()!=200) throw new Exception("error contacting authorization service");
|
||||
String token= "";
|
||||
try(BufferedReader reader = new BufferedReader(new InputStreamReader((InputStream)connection.getContent()))){
|
||||
StringBuilder result = new StringBuilder();
|
||||
String line;
|
||||
while((line = reader.readLine()) != null)
|
||||
result.append(line);
|
||||
token = result.toString();
|
||||
}
|
||||
return Utils.addInfrastructureHashToToken(token, infrastructureHash);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String requestActivation(ContainerInfo container) throws Exception {
|
||||
|
||||
String methodPath = "/token/node";
|
||||
|
||||
int infrastructureHash = Utils.getInfrastructureHashFromToken(SecurityTokenProvider.instance.get(), endpoints.getDefaultInfrastructure());
|
||||
|
||||
StringBuilder callUrl;
|
||||
|
||||
callUrl = new StringBuilder(getInternalEnpoint(infrastructureHash)).append(methodPath);
|
||||
|
||||
URL url = new URL(callUrl.toString());
|
||||
HttpURLConnection connection = makeRequest(url, "PUT", true);
|
||||
connection.setDoOutput(true);
|
||||
connection.setDoInput(true);
|
||||
connection.setRequestProperty("Content-type", "application/xml");
|
||||
|
||||
try(OutputStream os = new BufferedOutputStream(connection.getOutputStream())){
|
||||
Binder.getContext().createMarshaller().marshal(container, os);
|
||||
}
|
||||
|
||||
log.debug("response code is "+connection.getResponseCode());
|
||||
|
||||
if (connection.getResponseCode()!=200) throw new Exception("error contacting authorization service");
|
||||
String token= "";
|
||||
try(BufferedReader reader = new BufferedReader(new InputStreamReader((InputStream)connection.getContent()))){
|
||||
StringBuilder result = new StringBuilder();
|
||||
String line;
|
||||
while((line = reader.readLine()) != null)
|
||||
result.append(line);
|
||||
token = result.toString();
|
||||
}
|
||||
return Utils.addInfrastructureHashToToken(token, infrastructureHash);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AuthorizationEntry get(String token) throws ObjectNotFound, Exception{
|
||||
|
@ -478,7 +187,7 @@ public class DefaultAuthorizationProxy implements AuthorizationProxy {
|
|||
.append(methodPath).append(realToken);
|
||||
|
||||
URL url = new URL(callUrl.toString());
|
||||
HttpURLConnection connection = makeRequest(url, "GET", false);
|
||||
HttpURLConnection connection = makeRequest(url, "GET");
|
||||
connection.setDoInput(true);
|
||||
|
||||
if (connection.getResponseCode()==404) throw new ObjectNotFound("token "+maskedToken+" not found");
|
||||
|
@ -529,7 +238,7 @@ public class DefaultAuthorizationProxy implements AuthorizationProxy {
|
|||
}
|
||||
|
||||
URL url = new URL(callUrl.toString());
|
||||
HttpURLConnection connection = makeRequest(url, "GET", false);
|
||||
HttpURLConnection connection = makeRequest(url, "GET");
|
||||
connection.setDoInput(true);
|
||||
|
||||
if (connection.getResponseCode()==404) throw new ObjectNotFound("token not found");
|
||||
|
@ -543,103 +252,12 @@ public class DefaultAuthorizationProxy implements AuthorizationProxy {
|
|||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void addPolicies(List<Policy> policies) throws Exception {
|
||||
final String methodPath = "/policyManager";
|
||||
|
||||
StringBuilder callUrl = new StringBuilder(getInternalEnpoint(Utils.getInfrastructureHashFromToken(SecurityTokenProvider.instance.get(), endpoints.getDefaultInfrastructure()))).append(methodPath);
|
||||
|
||||
URL url = new URL(callUrl.toString());
|
||||
HttpURLConnection connection = makeRequest(url, "POST", true);
|
||||
connection.setDoOutput(true);
|
||||
connection.setRequestProperty("Content-type", "application/xml");
|
||||
|
||||
try(OutputStream os = new BufferedOutputStream(connection.getOutputStream())){
|
||||
Binder.getContext().createMarshaller().marshal(new Policies(policies), os);
|
||||
}
|
||||
|
||||
if (connection.getResponseCode()!=200) throw new Exception("error adding policies");
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removePolicies(long... ids) throws Exception {
|
||||
final String methodPath = "/policyManager/";
|
||||
StringBuilder callUrl = new StringBuilder(getInternalEnpoint(Utils.getInfrastructureHashFromToken(SecurityTokenProvider.instance.get(), endpoints.getDefaultInfrastructure()))).append(methodPath);
|
||||
List<Long> errorIds = new ArrayList<Long>();
|
||||
for (long id: ids){
|
||||
URL url = new URL(callUrl.toString()+id);
|
||||
HttpURLConnection connection = makeRequest(url, "DELETE", true);
|
||||
if (connection.getResponseCode()!=200) errorIds.add(id);
|
||||
}
|
||||
if (!errorIds.isEmpty())
|
||||
throw new Exception("error removing policies with ids: "+errorIds);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Policy> getPolicies(String context) throws Exception{
|
||||
final String methodPath = "/policyManager/";
|
||||
|
||||
StringBuilder callUrl = new StringBuilder(getInternalEnpoint(Utils.getInfrastructureHashfromContext(context))).append(methodPath).append("?").append(CONTEXT_PARAM).append("=").append(context);
|
||||
|
||||
URL url = new URL(callUrl.toString());
|
||||
HttpURLConnection connection = makeRequest(url, "GET", true);
|
||||
connection.setDoInput(true);
|
||||
if (connection.getResponseCode()!=200){
|
||||
log.info("response code is not 200");
|
||||
throw new Exception("error retrieving policies");
|
||||
}
|
||||
if (connection.getContentLengthLong()==0)
|
||||
return Collections.emptyList();
|
||||
|
||||
try(InputStreamReader stream = new InputStreamReader((InputStream)connection.getContent())){
|
||||
Policies policies = (Policies)Binder.getContext().createUnmarshaller().unmarshal(stream);
|
||||
return policies.getPolicies();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public File getSymmKey(String filePath) throws Exception{
|
||||
final String methodPath = "/symmKey/";
|
||||
|
||||
StringBuilder callUrl = new StringBuilder(getInternalEnpoint(Utils.getInfrastructureHashFromToken(SecurityTokenProvider.instance.get(), endpoints.getDefaultInfrastructure())))
|
||||
.append(methodPath);
|
||||
|
||||
URL url = new URL(callUrl.toString());
|
||||
HttpURLConnection connection = makeRequest(url, "GET", true);
|
||||
connection.setDoInput(true);
|
||||
if (connection.getResponseCode()!=200) throw new Exception("error retrieving key");
|
||||
if (connection.getContentLengthLong()<=0) return null;
|
||||
|
||||
String resourceName = (String)connection.getHeaderField("resource-name");
|
||||
File toReturnFile = new File(filePath+"/"+resourceName);
|
||||
toReturnFile.createNewFile();
|
||||
|
||||
try(InputStream stream = (InputStream)connection.getContent();
|
||||
OutputStream os = new FileOutputStream(toReturnFile)){
|
||||
|
||||
int read = 0;
|
||||
byte[] bytes = new byte[1024];
|
||||
|
||||
while ((read = stream.read(bytes)) != -1) {
|
||||
os.write(bytes, 0, read);
|
||||
}
|
||||
}
|
||||
return toReturnFile;
|
||||
|
||||
}
|
||||
|
||||
private HttpURLConnection makeRequest(URL url, String method, boolean includeTokenInHeader) throws Exception{
|
||||
private HttpURLConnection makeRequest(URL url, String method) throws Exception{
|
||||
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()));
|
||||
}
|
||||
|
||||
connection.setRequestMethod(method);
|
||||
return connection;
|
||||
}
|
||||
|
|
|
@ -2,32 +2,10 @@ package org.gcube.common.authorizationservice.cl;
|
|||
|
||||
import static org.gcube.common.authorization.client.Constants.authorizationService;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.BufferedWriter;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileWriter;
|
||||
import java.io.InputStreamReader;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import org.gcube.common.authorization.client.proxy.AuthorizationProxy;
|
||||
import org.gcube.common.authorization.library.AuthorizationEntry;
|
||||
import org.gcube.common.authorization.library.policies.Action;
|
||||
import org.gcube.common.authorization.library.policies.Policy;
|
||||
import org.gcube.common.authorization.library.policies.ServiceAccess;
|
||||
import org.gcube.common.authorization.library.policies.User2ServicePolicy;
|
||||
import org.gcube.common.authorization.library.policies.Users;
|
||||
import org.gcube.common.authorization.library.provider.ContainerInfo;
|
||||
import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
|
||||
import org.gcube.common.authorization.library.provider.ServiceIdentifier;
|
||||
import org.gcube.common.authorization.library.provider.ServiceInfo;
|
||||
import org.gcube.common.authorization.library.provider.UserInfo;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
|
||||
public class CallTest {
|
||||
|
@ -37,12 +15,11 @@ public class CallTest {
|
|||
System.out.println("pred4s".hashCode() & 0xfffffff);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Test
|
||||
public void getToken() throws Exception {
|
||||
System.out.println(authorizationService().get("a6cec25b-3844-4901-83f3-95eee83319ba-980114272").getClientInfo().getRoles());
|
||||
System.out.println(authorizationService().get("a6cec25b-3844-4901-83f3-95eee83319ba-980114272").getContext());
|
||||
System.out.println(authorizationService().get("2b04d8-2bda-4f5b-a07e-c0468f95ce3e-843339462"));
|
||||
//System.out.println(authorizationService().get("25bd7116-59f3-46dc-8ff3-c5c1a31c95cf-980114272").getContext());
|
||||
//System.out.println(authorizationService().get("b7c80297-e4ed-42ab-ab42-fdc0b8b0eabf-98187548").getMap());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -50,84 +27,11 @@ public class CallTest {
|
|||
authorizationService().removeAllReleatedToken("lucio.lelii", "/gcube/devsec");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void requestExternalServiceToken() throws Exception {
|
||||
SecurityTokenProvider.instance.set(requestTestToken("/gcube"));
|
||||
System.out.println(authorizationService().generateExternalServiceToken("URIResolver"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getExternalServiceToken() throws Exception {
|
||||
SecurityTokenProvider.instance.set(requestTestToken("/gcube/devsec"));
|
||||
System.out.println(authorizationService().retrieveExternalServiceGenerated());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void requestNodeToken() throws Exception {
|
||||
System.out.println(_requestNodeToken());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void addPolicy() throws Exception {
|
||||
SecurityTokenProvider.instance.set(requestTestToken("/gcube/devNext/NextNext"));
|
||||
List<Policy> policies = new ArrayList<Policy>();
|
||||
policies.add(new User2ServicePolicy("/gcube/devNext/NextNext", new ServiceAccess(), Users.one("lucio.lelii"), Action.ACCESS ));
|
||||
authorizationService().addPolicies(policies);
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void getPolicies() throws Exception{
|
||||
SecurityTokenProvider.instance.set(requestTestToken("/gcube/devNext"));
|
||||
List<Policy> policies = authorizationService().getPolicies("/gcube/devsec");
|
||||
for (Policy policy: policies)
|
||||
System.out.println(policy);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void removePolicy() throws Exception {
|
||||
authorizationService().removePolicies(2, 3, 4);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void generateToken() throws Exception{
|
||||
System.out.println(authorizationService().generateUserToken(new UserInfo("guest", new ArrayList<String>()), "/pred4s"));
|
||||
}
|
||||
@Test(expected=RuntimeException.class)
|
||||
public void createKeyWithError() throws Exception {
|
||||
authorizationService().generateApiKey("TEST");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getSymmKey() throws Exception{
|
||||
SecurityTokenProvider.instance.set(_requestNodeToken());
|
||||
authorizationService().getSymmKey("/tmp");
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void createKey() throws Exception {
|
||||
String token = requestTestToken("/gcube");
|
||||
SecurityTokenProvider.instance.set(token);
|
||||
String key = authorizationService().generateApiKey("PIPPO");
|
||||
System.out.println("key : "+key);
|
||||
System.out.println(resolveToken(key));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void retrieveApiKeys() throws Exception {
|
||||
String token = requestTestToken("/gcube/devNext");
|
||||
SecurityTokenProvider.instance.set(token);
|
||||
Map<String, String> keys = authorizationService().retrieveApiKeys();
|
||||
System.out.println("keys : "+keys);
|
||||
|
||||
}
|
||||
|
||||
public String _requestNodeToken() throws Exception {
|
||||
SecurityTokenProvider.instance.set(requestTestToken("/gcube"));
|
||||
String token = authorizationService().requestActivation(new ContainerInfo("workspace-repository1-d.d4science.org",80), "/gcube/devsec");
|
||||
return token;
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createTestToken() throws Exception {
|
||||
|
@ -143,131 +47,5 @@ public class CallTest {
|
|||
return entry;
|
||||
}
|
||||
|
||||
/* List<String> scopes = Arrays.asList("/d4science.research-infrastructures.eu/gCubeApps/TabularDataLab",
|
||||
"/d4science.research-infrastructures.eu/FARM/AquaMaps",
|
||||
"/d4science.research-infrastructures.eu/FARM/WECAFC-FIRMS",
|
||||
"/d4science.research-infrastructures.eu/gCubeApps/PGFA-UFMT",
|
||||
"/d4science.research-infrastructures.eu/FARM",
|
||||
"/d4science.research-infrastructures.eu/gCubeApps/EcologicalModelling",
|
||||
"/d4science.research-infrastructures.eu/gCubeApps/EuBrazilOpenBio",
|
||||
"/d4science.research-infrastructures.eu/gCubeApps/AlieiaVRE",
|
||||
/d4science.research-infrastructures.eu/gCubeApps/ENVRIPlus",
|
||||
/d4science.research-infrastructures.eu/gCubeApps/ENVRI",
|
||||
/d4science.research-infrastructures.eu/gCubeApps/ICES_DASC",
|
||||
/d4science.research-infrastructures.eu/gCubeApps/FAO_TunaAtlas",
|
||||
/d4science.research-infrastructures.eu/SoBigData/ResourceCatalogue",
|
||||
/d4science.research-infrastructures.eu/gCubeApps/StocksAndFisheriesKB",
|
||||
/d4science.research-infrastructures.eu/SoBigData/TagMe",
|
||||
/d4science.research-infrastructures.eu/gCubeApps/BlueCommons",
|
||||
/d4science.research-infrastructures.eu/gCubeApps/ICES_TCSSM",
|
||||
/d4science.research-infrastructures.eu/gCubeApps/OpenIt",
|
||||
/d4science.research-infrastructures.eu/SmartArea/SmartApps",
|
||||
/d4science.research-infrastructures.eu",
|
||||
/d4science.research-infrastructures.eu/gCubeApps/Parthenos",
|
||||
/d4science.research-infrastructures.eu/gCubeApps/AquacultureAtlasGeneration",
|
||||
/d4science.research-infrastructures.eu/gCubeApps/IGDI",
|
||||
/d4science.research-infrastructures.eu/gCubeApps/RStudioLab",
|
||||
/d4science.research-infrastructures.eu/SoBigData",
|
||||
/d4science.research-infrastructures.eu/gCubeApps/BlueBridgeProject",
|
||||
/d4science.research-infrastructures.eu/gCubeApps/rScience",
|
||||
/d4science.research-infrastructures.eu/FARM/VME-DB",
|
||||
/d4science.research-infrastructures.eu/gCubeApps/EllinikaPsariaVRE",
|
||||
/d4science.research-infrastructures.eu/gCubeApps/gCube",
|
||||
/d4science.research-infrastructures.eu/FARM/TBTI_VRE",
|
||||
/d4science.research-infrastructures.eu/FARM/GRSF",
|
||||
/d4science.research-infrastructures.eu/gCubeApps/DocumentsWorkflow",
|
||||
/d4science.research-infrastructures.eu/gCubeApps/ICOS_ETC",
|
||||
/d4science.research-infrastructures.eu/SoBigData/CityOfCitizens",
|
||||
/d4science.research-infrastructures.eu/gCubeApps/SoBigData.eu",
|
||||
/d4science.research-infrastructures.eu/gCubeApps/BiOnym",
|
||||
/d4science.research-infrastructures.eu/gCubeApps/PerformanceEvaluationInAquaculture",
|
||||
/d4science.research-infrastructures.eu/gCubeApps/SmartArea",
|
||||
/d4science.research-infrastructures.eu/gCubeApps/ICES_TCRE",
|
||||
/d4science.research-infrastructures.eu/gCubeApps/CNR_OpenScienceTF",
|
||||
/d4science.research-infrastructures.eu/gCubeApps/BlueBRIDGE-PSC",
|
||||
/d4science.research-infrastructures.eu/gCubeApps/BOBLME_HilsaAWG",
|
||||
/d4science.research-infrastructures.eu/gCubeApps/ScalableDataMining",
|
||||
/d4science.research-infrastructures.eu/gCubeApps/BiodiversityLab",
|
||||
/d4science.research-infrastructures.eu/gCubeApps/DESCRAMBLE",
|
||||
/d4science.research-infrastructures.eu/gCubeApps/ICES_FIACO",
|
||||
/d4science.research-infrastructures.eu/gCubeApps/BlueBRIDGE-EAB",
|
||||
/d4science.research-infrastructures.eu/gCubeApps/ARIADNE",
|
||||
/d4science.research-infrastructures.eu/SmartArea/SmartBuilding",
|
||||
/d4science.research-infrastructures.eu/gCubeApps/ProtectedAreaImpactMaps",
|
||||
/d4science.research-infrastructures.eu/gCubeApps/ForkysVRE",
|
||||
/d4science.research-infrastructures.eu/gCubeApps/EGIEngage",
|
||||
/d4science.research-infrastructures.eu/gCubeApps/ICES_StockAssessmentAdvanced",
|
||||
/d4science.research-infrastructures.eu/FARM/GRSF",
|
||||
/d4science.research-infrastructures.eu/SmartArea",
|
||||
/d4science.research-infrastructures.eu/gCubeApps/RPrototypingLab",
|
||||
/d4science.research-infrastructures.eu/gCubeApps/TCom",
|
||||
/d4science.research-infrastructures.eu/gCubeApps/ICCAT_BFT-E",
|
||||
/d4science.research-infrastructures.eu/gCubeApps/ICES_DALSA",
|
||||
/d4science.research-infrastructures.eu/gCubeApps/SoBigData.it",
|
||||
/d4science.research-infrastructures.eu/gCubeApps/EGIP",
|
||||
/d4science.research-infrastructures.eu/gCubeApps/BlueUptake",
|
||||
/d4science.research-infrastructures.eu/FARM/iMarineBoardVRE",
|
||||
/d4science.research-infrastructures.eu/gCubeApps/KnowledgeBridging",
|
||||
/d4science.research-infrastructures.eu/gCubeApps/EFG",
|
||||
/d4science.research-infrastructures.eu/gCubeApps/StockAssessment",
|
||||
/d4science.research-infrastructures.eu/gCubeApps/iSearch",
|
||||
"/d4science.research-infrastructures.eu/gCubeApps",
|
||||
"/d4science.research-infrastructures.eu/gCubeApps/StrategicInvestmentAnalysis")*/
|
||||
|
||||
@Test
|
||||
public void requestListOfTokenForVREs() throws Exception{
|
||||
SecurityTokenProvider.instance.set(requestTestToken("/d4science.research-infrastructures.eu"));
|
||||
|
||||
String jrNode ="tabulardata.d4science.org";
|
||||
int jrPort =8080;
|
||||
|
||||
AuthorizationProxy proxy = authorizationService();
|
||||
|
||||
try(BufferedReader isr = new BufferedReader(new InputStreamReader(new FileInputStream("./src/test/resources/Scopes.txt")));
|
||||
BufferedWriter bw = new BufferedWriter(new FileWriter("./src/test/resources/tokens-"+jrNode+".txt"))){
|
||||
String line = null;
|
||||
|
||||
|
||||
while ( (line=isr.readLine())!=null){
|
||||
System.out.println(" retrieving token for scope "+line);
|
||||
String token = proxy.requestActivation(new ContainerInfo(jrNode,jrPort), line.trim());
|
||||
bw.write(String.format("<token>%s</token>", token));
|
||||
bw.newLine();
|
||||
}
|
||||
}
|
||||
}
|
||||
@Ignore @Test
|
||||
public void checkDiff() throws Exception{
|
||||
|
||||
|
||||
Set<String> scopes = new HashSet<String>();
|
||||
|
||||
try(BufferedReader isr = new BufferedReader(new InputStreamReader(new FileInputStream("./src/test/resources/Scopes.txt")))){
|
||||
String line = null;
|
||||
|
||||
while ( (line=isr.readLine())!=null){
|
||||
System.out.println(scopes.size()+" "+line);
|
||||
if (scopes.contains(line.trim()))
|
||||
System.out.println("already contians "+line);
|
||||
else scopes.add(line.trim());
|
||||
}
|
||||
}
|
||||
|
||||
System.out.println("initial scope count is "+scopes.size());
|
||||
|
||||
|
||||
try(BufferedReader isr = new BufferedReader(new InputStreamReader(new FileInputStream("./src/test/resources/createdScope.txt")))){
|
||||
String line = null;
|
||||
|
||||
|
||||
while ( (line=isr.readLine())!=null){
|
||||
if (!scopes.remove(line.trim()))
|
||||
System.out.println("cannot remove scope "+line.trim());
|
||||
}
|
||||
}
|
||||
|
||||
System.out.println("final scope count is "+scopes.size());
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue