added d4s-user Header
This commit is contained in:
parent
cb135d554a
commit
663b3e7675
|
@ -2,6 +2,11 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
|
||||||
|
|
||||||
# Changelog for Common Smartgears
|
# Changelog for Common Smartgears
|
||||||
|
|
||||||
|
## [v1.3.0] - 2020-11-18
|
||||||
|
|
||||||
|
- added d4s-user as header
|
||||||
|
|
||||||
|
|
||||||
## [v1.3.0] - 2020-11-18
|
## [v1.3.0] - 2020-11-18
|
||||||
|
|
||||||
- Changed UmaTokenProvider with AccessTokenProvider
|
- Changed UmaTokenProvider with AccessTokenProvider
|
||||||
|
|
9
pom.xml
9
pom.xml
|
@ -11,7 +11,7 @@
|
||||||
|
|
||||||
<groupId>org.gcube.core</groupId>
|
<groupId>org.gcube.core</groupId>
|
||||||
<artifactId>common-gcube-calls</artifactId>
|
<artifactId>common-gcube-calls</artifactId>
|
||||||
<version>1.3.0</version>
|
<version>1.3.1-SNAPSHOT</version>
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<distroDirectory>distro</distroDirectory>
|
<distroDirectory>distro</distroDirectory>
|
||||||
|
@ -29,7 +29,7 @@
|
||||||
<artifactId>common-authorization</artifactId>
|
<artifactId>common-authorization</artifactId>
|
||||||
<version>[2.0.0-SNAPSHOT,3.0.0-SNAPSHOT)</version>
|
<version>[2.0.0-SNAPSHOT,3.0.0-SNAPSHOT)</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.gcube.core</groupId>
|
<groupId>org.gcube.core</groupId>
|
||||||
<artifactId>common-scope</artifactId>
|
<artifactId>common-scope</artifactId>
|
||||||
|
@ -40,6 +40,11 @@
|
||||||
<artifactId>slf4j-api</artifactId>
|
<artifactId>slf4j-api</artifactId>
|
||||||
<version>1.7.5</version>
|
<version>1.7.5</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.gcube.common</groupId>
|
||||||
|
<artifactId>gcube-jackson-databind</artifactId>
|
||||||
|
<version>2.8.11</version>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
|
|
|
@ -1,5 +1,10 @@
|
||||||
package org.gcube.common.calls.interceptors;
|
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.AccessTokenProvider;
|
||||||
import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
|
import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
|
||||||
import org.gcube.common.calls.Call;
|
import org.gcube.common.calls.Call;
|
||||||
|
@ -15,6 +20,7 @@ public class AuthorizationInterceptor implements Interceptor {
|
||||||
|
|
||||||
public static final String token_header="gcube-token";
|
public static final String token_header="gcube-token";
|
||||||
public static final String uma_token_header="Authorization";
|
public static final String uma_token_header="Authorization";
|
||||||
|
public static final String user_header="d4s-user";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void handleRequest(Request request, Call call) {
|
public void handleRequest(Request request, Call call) {
|
||||||
|
@ -24,6 +30,11 @@ public class AuthorizationInterceptor implements Interceptor {
|
||||||
if (accessToken!=null) {
|
if (accessToken!=null) {
|
||||||
request.addHeader(uma_token_header, "Bearer "+accessToken);
|
request.addHeader(uma_token_header, "Bearer "+accessToken);
|
||||||
logger.trace("uma token set");
|
logger.trace("uma token set");
|
||||||
|
try {
|
||||||
|
request.addHeader(user_header, getUserFromToken(accessToken) );
|
||||||
|
}catch (Exception e) {
|
||||||
|
logger.warn("errror setting {} header", user_header );
|
||||||
|
}
|
||||||
} else logger.warn("uma token is not set");
|
} else logger.warn("uma token is not set");
|
||||||
|
|
||||||
if (token==null)
|
if (token==null)
|
||||||
|
@ -36,4 +47,27 @@ public class AuthorizationInterceptor implements Interceptor {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void handleResponse(Response context, Call callContext) {}
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue