Supporting new UMA token
This commit is contained in:
parent
60b9690890
commit
a26f583a0e
|
@ -5,6 +5,7 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
|
||||||
|
|
||||||
## [v1.2.0-SNAPSHOT] [r5.0.0] -
|
## [v1.2.0-SNAPSHOT] [r5.0.0] -
|
||||||
|
|
||||||
|
- Managing new UMA token and not only old authz gcube token [#21525]
|
||||||
- Switched JSON management to gcube-jackson [#19737]
|
- Switched JSON management to gcube-jackson [#19737]
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -14,6 +14,7 @@ import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import org.gcube.common.authorization.library.provider.AccessTokenProvider;
|
||||||
import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
|
import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
|
||||||
import org.gcube.common.gxhttp.request.GXHTTPStringRequest;
|
import org.gcube.common.gxhttp.request.GXHTTPStringRequest;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
|
@ -119,16 +120,29 @@ public class GXConnection {
|
||||||
return send(this.buildURL(), method);
|
return send(this.buildURL(), method);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private HttpURLConnection addGCubeAuthorizationToken(HttpURLConnection uConn) throws Exception {
|
||||||
|
if (!this.extCall) {
|
||||||
|
String oldGcubeAuthtoken = SecurityTokenProvider.instance.get();
|
||||||
|
|
||||||
|
if (Objects.isNull(oldGcubeAuthtoken) || oldGcubeAuthtoken.isEmpty()) {
|
||||||
|
String umaToken = AccessTokenProvider.instance.get();
|
||||||
|
if(Objects.isNull(umaToken) || umaToken.isEmpty()) {
|
||||||
|
throw new IllegalStateException("The security token in the current environment is null.");
|
||||||
|
}else {
|
||||||
|
uConn.setRequestProperty("Authorization", "Bearer " + umaToken);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
uConn.setRequestProperty(org.gcube.common.authorization.client.Constants.TOKEN_HEADER_ENTRY, oldGcubeAuthtoken);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return uConn;
|
||||||
|
}
|
||||||
|
|
||||||
private HttpURLConnection send(URL url, HTTPMETHOD method) throws Exception {
|
private HttpURLConnection send(URL url, HTTPMETHOD method) throws Exception {
|
||||||
HttpURLConnection uConn = (HttpURLConnection) url.openConnection();
|
HttpURLConnection uConn = (HttpURLConnection) url.openConnection();
|
||||||
if (!this.extCall) {
|
|
||||||
String token = SecurityTokenProvider.instance.get();
|
uConn = addGCubeAuthorizationToken(uConn);
|
||||||
if (Objects.isNull(token) || token.isEmpty())
|
|
||||||
throw new IllegalStateException("The security token in the current environment is null.");
|
|
||||||
|
|
||||||
uConn.setRequestProperty(org.gcube.common.authorization.client.Constants.TOKEN_HEADER_ENTRY,
|
|
||||||
token);
|
|
||||||
}
|
|
||||||
uConn.setDoOutput(true);
|
uConn.setDoOutput(true);
|
||||||
// uConn.setRequestProperty("Content-type", APPLICATION_JSON_CHARSET_UTF_8);
|
// uConn.setRequestProperty("Content-type", APPLICATION_JSON_CHARSET_UTF_8);
|
||||||
if(this.agent!=null) {
|
if(this.agent!=null) {
|
||||||
|
|
|
@ -5,6 +5,7 @@ import java.net.HttpURLConnection;
|
||||||
import java.net.URLEncoder;
|
import java.net.URLEncoder;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
|
|
||||||
import org.gcube.common.gxhttp.reference.GXConnection.HTTPMETHOD;
|
import org.gcube.common.gxhttp.reference.GXConnection.HTTPMETHOD;
|
||||||
|
@ -15,6 +16,7 @@ import org.slf4j.LoggerFactory;
|
||||||
* Builder for GXHTTP Requests.
|
* Builder for GXHTTP Requests.
|
||||||
*
|
*
|
||||||
* @author Manuele Simi (ISTI CNR)
|
* @author Manuele Simi (ISTI CNR)
|
||||||
|
* @author Luca Frosini (ISTI-CNR)
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public class GXHTTPRequestBuilder {
|
public class GXHTTPRequestBuilder {
|
||||||
|
@ -74,6 +76,8 @@ public class GXHTTPRequestBuilder {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static final String UUID_REGEX = "^([a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}-[a-fA-F0-9]{8,9}){1}$";
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Overrides the default security token.
|
* Overrides the default security token.
|
||||||
|
@ -81,10 +85,15 @@ public class GXHTTPRequestBuilder {
|
||||||
* @param token
|
* @param token
|
||||||
*/
|
*/
|
||||||
public void setSecurityToken(String token) {
|
public void setSecurityToken(String token) {
|
||||||
if (!this.connection.isExtCall())
|
if (!this.connection.isExtCall()) {
|
||||||
this.connection.setProperty(org.gcube.common.authorization.client.Constants.TOKEN_HEADER_ENTRY, token);
|
if(Pattern.matches(UUID_REGEX, token)) {
|
||||||
else
|
this.connection.setProperty(org.gcube.common.authorization.client.Constants.TOKEN_HEADER_ENTRY, token);
|
||||||
|
}else {
|
||||||
|
this.connection.setProperty("Authorization", "Bearer " + token);
|
||||||
|
}
|
||||||
|
}else {
|
||||||
throw new UnsupportedOperationException("Cannot set the security token on an external call");
|
throw new UnsupportedOperationException("Cannot set the security token on an external call");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package org.gcube.common.gxhttp;
|
package org.gcube.common.gxhttp;
|
||||||
|
|
||||||
import static org.junit.Assert.*;
|
import static org.junit.Assert.assertTrue;
|
||||||
|
import static org.junit.Assert.fail;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
|
Loading…
Reference in New Issue