porting to smartgears 4

This commit is contained in:
Lucio Lelii 2022-06-13 12:07:08 +02:00
parent d0fa2589a7
commit 181d6f80d0
4 changed files with 15 additions and 654 deletions

View File

@ -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>

View File

@ -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;

View File

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

View File

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