You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
common-gcube-calls/src/main/java/org/gcube/common/calls/interceptors/AuthorizationInterceptor.java

49 lines
1.6 KiB
Java

package org.gcube.common.calls.interceptors;
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;
public class AuthorizationInterceptor implements Interceptor {
private Logger logger = LoggerFactory.getLogger(AuthorizationInterceptor.class);
public static final String token_header="gcube-token";
public static final String uma_token_header="Authorization";
@Override
public void handleRequest(Request request, Call call) {
String token = SecurityTokenProvider.instance.get();
String umaToken = UmaJWTProvider.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);
}
} else logger.trace("uma token is not set");
if (token==null)
logger.warn("security token is not set");
else{
request.addHeader(token_header, token);
logger.trace("security token set in the header is "+token);
}
}
@Override
public void handleResponse(Response context, Call callContext) {}
}