Compare commits

...

7 Commits

Author SHA1 Message Date
Lucio Lelii cb29bb3883 updated for release 2022-08-01 16:36:18 +02:00
Lucio Lelii 2f5091c517 commit for release 2022-08-01 16:35:11 +02:00
Lucio Lelii e876a4d9dd catches throwable instead of Exception 2022-08-01 16:34:27 +02:00
Lucio Lelii a71108f4ea updated 2022-07-26 17:22:24 +02:00
Lucio Lelii 663b3e7675 added d4s-user Header 2022-07-26 17:21:39 +02:00
lucio.lelii cb135d554a exception removed 2021-07-08 12:23:47 +02:00
lucio.lelii 32452f3c6a Changed UmaTokenProvider with AccessTokenProvider 2021-05-24 16:30:58 +02:00
5 changed files with 55 additions and 25 deletions

View File

@ -21,7 +21,6 @@
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="maven.pomderived" value="true"/>
<attribute name="org.eclipse.jst.component.nondependency" value=""/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">

View File

@ -16,12 +16,12 @@
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.m2e.core.maven2Builder</name>
<name>org.eclipse.wst.validation.validationbuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.wst.validation.validationbuilder</name>
<name>org.eclipse.m2e.core.maven2Builder</name>
<arguments>
</arguments>
</buildCommand>

View File

@ -2,6 +2,15 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
# Changelog for Common Smartgears
## [v1.3.1] - 2020-11-18
- added "d4s-user" as header
## [v1.3.0] - 2020-11-18
- Changed UmaTokenProvider with AccessTokenProvider
## [v1.2.0] - 2020-11-18
- interceptor for UmaToken added

15
pom.xml
View File

@ -11,7 +11,7 @@
<groupId>org.gcube.core</groupId>
<artifactId>common-gcube-calls</artifactId>
<version>1.2.0</version>
<version>1.3.1</version>
<properties>
<distroDirectory>distro</distroDirectory>
@ -29,14 +29,6 @@
<artifactId>common-authorization</artifactId>
<version>[2.0.0-SNAPSHOT,3.0.0-SNAPSHOT)</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
<!-- https://mvnrepository.com/artifact/com.googlecode.json-simple/json-simple -->
<dependency>
<groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>org.gcube.core</groupId>
@ -48,6 +40,11 @@
<artifactId>slf4j-api</artifactId>
<version>1.7.5</version>
</dependency>
<dependency>
<groupId>org.gcube.common</groupId>
<artifactId>gcube-jackson-databind</artifactId>
<version>2.8.11</version>
</dependency>
</dependencies>
<build>

View File

@ -1,13 +1,16 @@
package org.gcube.common.calls.interceptors;
import java.util.Base64;
import org.gcube.com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import org.gcube.com.fasterxml.jackson.annotation.JsonProperty;
import org.gcube.com.fasterxml.jackson.databind.ObjectMapper;
import org.gcube.common.authorization.library.provider.AccessTokenProvider;
import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
import org.gcube.common.authorization.library.provider.UmaJWTProvider;
import org.gcube.common.calls.Call;
import org.gcube.common.calls.Interceptor;
import org.gcube.common.calls.Request;
import org.gcube.common.calls.Response;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -17,21 +20,20 @@ public class AuthorizationInterceptor implements Interceptor {
public static final String token_header="gcube-token";
public static final String uma_token_header="Authorization";
public static final String user_header="d4s-user";
@Override
public void handleRequest(Request request, Call call) {
String token = SecurityTokenProvider.instance.get();
String umaToken = UmaJWTProvider.instance.get();
String accessToken = AccessTokenProvider.instance.get();
if (umaToken!=null) {
try {
JSONParser parser = new JSONParser();
JSONObject jsonObject = (JSONObject) parser.parse(umaToken);
String accesToken = (String) jsonObject.get("access_token");
request.addHeader(uma_token_header, "Bearer "+accesToken);
logger.trace("uma token set");
}catch (Exception e) {
logger.error("error parsing uma token",e);
if (accessToken!=null) {
request.addHeader(uma_token_header, "Bearer "+accessToken);
logger.trace("uma token set");
try {
request.addHeader(user_header, getUserFromToken(accessToken) );
}catch (Throwable e) {
logger.warn("errror setting {} header", user_header );
}
} else logger.warn("uma token is not set");
@ -45,4 +47,27 @@ public class AuthorizationInterceptor implements Interceptor {
@Override
public void handleResponse(Response context, Call callContext) {}
@JsonIgnoreProperties(ignoreUnknown = true)
private static class AccessTokenJSON {
@JsonProperty("preferred_username")
private String username;
public String getUsername() {
return username;
}
}
private static String getUserFromToken(String accessToken) throws Exception {
String realAccessTokenEncoded = accessToken.split("\\.")[1];
String decodedAccessPart = new String(Base64.getDecoder().decode(realAccessTokenEncoded.getBytes()));
ObjectMapper mapper = new ObjectMapper();
AccessTokenJSON tokenMapped = mapper.readValue(decodedAccessPart, AccessTokenJSON.class);
String userName = Base64.getEncoder().encodeToString(tokenMapped.getUsername().getBytes());
return userName;
}
}