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) {} }