git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/Common/authorization-common-client@130412 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
868376896b
commit
af88f9d40f
|
@ -31,4 +31,5 @@ public interface AuthorizationProxy {
|
||||||
List<Policy> getPolicies(String context) throws Exception;
|
List<Policy> getPolicies(String context) throws Exception;
|
||||||
|
|
||||||
String generateApiKey(String apiQualifier) throws Exception;
|
String generateApiKey(String apiQualifier) throws Exception;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -54,7 +54,7 @@ public class DefaultAuthorizationProxy implements AuthorizationProxy {
|
||||||
@Override
|
@Override
|
||||||
public String generateToken(ClientInfo client, String context) throws Exception {
|
public String generateToken(ClientInfo client, String context) throws Exception {
|
||||||
|
|
||||||
String methodPath = "/generate/";
|
String methodPath = "/token/";
|
||||||
|
|
||||||
if (client instanceof UserInfo)
|
if (client instanceof UserInfo)
|
||||||
methodPath+="user";
|
methodPath+="user";
|
||||||
|
@ -90,14 +90,14 @@ public class DefaultAuthorizationProxy implements AuthorizationProxy {
|
||||||
return token;
|
return token;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String generateApiKey(String apiQualifier) throws Exception {
|
public String generateApiKey(String apiQualifier) throws Exception {
|
||||||
|
|
||||||
String methodPath = String.format("/generate/apikey/%s",apiQualifier);
|
|
||||||
|
|
||||||
AuthorizationEntry entry = this.get(SecurityTokenProvider.instance.get());
|
String methodPath = String.format("/apikey?qualifier=%s",apiQualifier);
|
||||||
|
|
||||||
int infrastructureHash = getInfrastructureHashfromContext(entry.getContext());
|
int infrastructureHash = getInfrastructureHashFromToken(SecurityTokenProvider.instance.get());
|
||||||
|
|
||||||
StringBuilder callUrl = new StringBuilder(getInternalEnpoint(infrastructureHash)).append(methodPath);
|
StringBuilder callUrl = new StringBuilder(getInternalEnpoint(infrastructureHash)).append(methodPath);
|
||||||
|
|
||||||
|
@ -133,6 +133,8 @@ public class DefaultAuthorizationProxy implements AuthorizationProxy {
|
||||||
}
|
}
|
||||||
|
|
||||||
private int getInfrastructureHashFromToken(String token) {
|
private int getInfrastructureHashFromToken(String token) {
|
||||||
|
if (token==null)
|
||||||
|
throw new RuntimeException("valid token required for this method");
|
||||||
try{
|
try{
|
||||||
String hashCodeAsString = token.split(TOKEN_SEPARATOR)[1];
|
String hashCodeAsString = token.split(TOKEN_SEPARATOR)[1];
|
||||||
return Integer.parseInt(hashCodeAsString);
|
return Integer.parseInt(hashCodeAsString);
|
||||||
|
@ -182,7 +184,7 @@ public class DefaultAuthorizationProxy implements AuthorizationProxy {
|
||||||
if (cache.containsKey(token) && cache.get(token).isValid())
|
if (cache.containsKey(token) && cache.get(token).isValid())
|
||||||
return cache.get(token).getEntry();
|
return cache.get(token).getEntry();
|
||||||
|
|
||||||
final String methodPath = "/retrieve/";
|
final String methodPath = "/token/";
|
||||||
|
|
||||||
StringBuilder callUrl = new StringBuilder(getInternalEnpoint(getInfrastructureHashFromToken(token))).append(methodPath).append(token);
|
StringBuilder callUrl = new StringBuilder(getInternalEnpoint(getInfrastructureHashFromToken(token))).append(methodPath).append(token);
|
||||||
|
|
||||||
|
@ -190,7 +192,7 @@ public class DefaultAuthorizationProxy implements AuthorizationProxy {
|
||||||
HttpURLConnection connection = makeRequest(url, "GET", false);
|
HttpURLConnection connection = makeRequest(url, "GET", false);
|
||||||
connection.setDoInput(true);
|
connection.setDoInput(true);
|
||||||
if (connection.getResponseCode()==404) throw new ObjectNotFound("token "+token+" not found");
|
if (connection.getResponseCode()==404) throw new ObjectNotFound("token "+token+" not found");
|
||||||
if (connection.getResponseCode()!=200) throw new Exception("error contacting authorization service");
|
if (connection.getResponseCode()!=200) throw new Exception("error contacting authorization service (error code is "+connection.getResponseCode()+")");
|
||||||
if (connection.getContentLengthLong()<=0) return null;
|
if (connection.getContentLengthLong()<=0) return null;
|
||||||
|
|
||||||
try(InputStream stream = (InputStream)connection.getContent();){
|
try(InputStream stream = (InputStream)connection.getContent();){
|
||||||
|
|
|
@ -5,6 +5,8 @@ import static org.gcube.common.authorization.client.Constants.authorizationServi
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import javax.annotation.Generated;
|
||||||
|
|
||||||
import org.gcube.common.authorization.client.exceptions.ObjectNotFound;
|
import org.gcube.common.authorization.client.exceptions.ObjectNotFound;
|
||||||
import org.gcube.common.authorization.library.AuthorizationEntry;
|
import org.gcube.common.authorization.library.AuthorizationEntry;
|
||||||
import org.gcube.common.authorization.library.policies.Action;
|
import org.gcube.common.authorization.library.policies.Action;
|
||||||
|
@ -12,27 +14,15 @@ import org.gcube.common.authorization.library.policies.Policy;
|
||||||
import org.gcube.common.authorization.library.policies.ServiceAccess;
|
import org.gcube.common.authorization.library.policies.ServiceAccess;
|
||||||
import org.gcube.common.authorization.library.policies.User2ServicePolicy;
|
import org.gcube.common.authorization.library.policies.User2ServicePolicy;
|
||||||
import org.gcube.common.authorization.library.policies.Users;
|
import org.gcube.common.authorization.library.policies.Users;
|
||||||
|
import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
|
||||||
import org.gcube.common.authorization.library.provider.UserInfo;
|
import org.gcube.common.authorization.library.provider.UserInfo;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
public class CallTest {
|
public class CallTest {
|
||||||
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void call() throws Exception{
|
|
||||||
try{
|
|
||||||
AuthorizationEntry entry = authorizationService().get("f068c06b-dad9-4007-a3c6-020560116a59|98187548");
|
|
||||||
|
|
||||||
System.out.println(entry);
|
|
||||||
}catch(ObjectNotFound onf){
|
|
||||||
onf.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void requestToken() throws Exception {
|
public void requestToken() throws Exception {
|
||||||
|
System.out.println(requestTestToken("/gcube"));
|
||||||
System.out.println( authorizationService().generateToken(new UserInfo("valentina.marioli", new ArrayList<String>()), "/gcube"));
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -52,4 +42,28 @@ public class CallTest {
|
||||||
public void removePolicy() throws Exception {
|
public void removePolicy() throws Exception {
|
||||||
authorizationService().removePolicies(2, 3, 4);
|
authorizationService().removePolicies(2, 3, 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test(expected=RuntimeException.class)
|
||||||
|
public void createKeyWithError() throws Exception {
|
||||||
|
authorizationService().generateApiKey("TEST");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void createKey() throws Exception {
|
||||||
|
String token = requestTestToken("/gcube");
|
||||||
|
SecurityTokenProvider.instance.set(token);
|
||||||
|
String key = authorizationService().generateApiKey("TEST");
|
||||||
|
System.out.println("key : "+key);
|
||||||
|
System.out.println(resolveToken(key));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private String requestTestToken(String context) throws Exception{
|
||||||
|
return authorizationService().generateToken(new UserInfo("test.token", new ArrayList<String>()), context);
|
||||||
|
}
|
||||||
|
|
||||||
|
private AuthorizationEntry resolveToken(String token) throws Exception{
|
||||||
|
AuthorizationEntry entry = authorizationService().get(token);
|
||||||
|
return entry;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue