diff --git a/src/main/java/com/eactive/eai/adapter/http/client/impl/HttpClient5AdapterServiceRest.java b/src/main/java/com/eactive/eai/adapter/http/client/impl/HttpClient5AdapterServiceRest.java index 9623ad7..8510867 100644 --- a/src/main/java/com/eactive/eai/adapter/http/client/impl/HttpClient5AdapterServiceRest.java +++ b/src/main/java/com/eactive/eai/adapter/http/client/impl/HttpClient5AdapterServiceRest.java @@ -146,7 +146,8 @@ public class HttpClient5AdapterServiceRest extends HttpClient5AdapterServiceSupp String headerGroupName = prop.getProperty(HEADER_GROUP); String relayResponseHeaderKeys = prop.getProperty(HEADER_KEYS, ""); useAdapterToken = StringUtils.equalsIgnoreCase(prop.getProperty("ADAPTER_TOKEN_USE_YN", "N"), "Y"); - + String authorizationHeaderName = prop.getProperty("ADAPTER_TOKEN_HEADER_NAME", "Authorization"); + boolean useForwardProxy = StringUtils.equalsIgnoreCase(prop.getProperty("FORWARD_PROXY_USE_YN", "N"), "Y"); String forwardProxyUrl = prop.getProperty("FORWARD_PROXY_URL"); @@ -332,8 +333,6 @@ public class HttpClient5AdapterServiceRest extends HttpClient5AdapterServiceSupp // OAuth2AccessToken check 부분을 뒤에서 여기로 위치를 옮김, 나이스지키미 암호화 KEY를 얻기 위해서. JWHONG OAuth2AccessTokenVO accessToken = null; - String auth =""; - Date currentDate = new Date(); if (useAdapterToken) { AccessTokenManagerByDB tokenManager = AccessTokenManagerByDB.getInstance(); accessToken = (OAuth2AccessTokenVO) tokenManager.getAccessTokenVO(vo.getAdapterGroupName()); @@ -351,29 +350,11 @@ public class HttpClient5AdapterServiceRest extends HttpClient5AdapterServiceSupp + accessToken + "]"); } - Properties properties = AdapterPropManager.getInstance().getProperties(vo.getAdapterName()); // jwhong - String encryptAlgorithm = properties.getProperty("ENCRYPT_ALGORITHM"); // jwhong - if (useAdapterToken && "AES256-NICEON".equals(encryptAlgorithm)) { - String niceToken = accessToken.getAccessToken(); - if ( niceToken == null || niceToken == "") { - throw new Exception("NiceOn Token is empty, TOKEN failed to be issued, TOKEN = [" + niceToken + "]"); - } - String clientId = accessToken.getClientId(); // HttpClientAccessTokenServiceWithBase64NiceOn 서 넣어줌 - long currentTime = currentDate.getTime() / 1000; - auth = niceToken + ":" + currentTime + ":" + clientId ; - logger.debug("HttpClientAdapterServiceRest] NiceOn auth = [" + auth + "]"); - auth = Base64.getEncoder().encodeToString(auth.getBytes("UTF-8")); - logger.debug("HttpClientAdapterServiceRest] NiceOn Base64 encoded auth = [" + auth + "]"); - - setNiceOnAuthHeaders(method, auth); - } else { - setAuthHeaders(method, accessToken); // 원래 있던 logic - } - + setAuthHeaders(method, accessToken, authorizationHeaderName); if (logger.isDebug()) { logger.debug("HttpClientAdapterServiceRest] SEND (" + vo.getAdapterGroupName() - + ") RequestHeader [" + method.getHeader("Authorization").getName() + ": " + method.getHeader("Authorization").getValue() + "]"); + + ") RequestHeader [" + method.getHeader(authorizationHeaderName).getName() + ": " + method.getHeader(authorizationHeaderName).getValue() + "]"); } } @@ -390,7 +371,7 @@ public class HttpClient5AdapterServiceRest extends HttpClient5AdapterServiceSupp logger.debug("authToken :::::::::::::::::::::::::::::::::::" + authToken); if(!StringUtils.isBlank(authToken)) { - setAuthHeaders(method, authToken); + setAuthHeaders(method, authToken, authorizationHeaderName); } // 여기 까지 @@ -618,9 +599,8 @@ public class HttpClient5AdapterServiceRest extends HttpClient5AdapterServiceSupp String oldToken = accessToken == null ? null : accessToken.getAccessToken(); OAuth2AccessTokenVO newaccessToken = (OAuth2AccessTokenVO) tokenManager .retryAccessTokenVO(vo.getAdapterGroupName(), prop, oldToken); - method.setHeader("Authorization", newaccessToken.getAuthorization()); - - setAuthHeaders(method, newaccessToken); + + setAuthHeaders(method, accessToken, authorizationHeaderName); if (logger.isDebug() && "N".equals(vo.getTestCallYn())) { logger.debug("HttpClientAdapterServiceRest] SEND (" + vo.getAdapterGroupName() @@ -878,10 +858,20 @@ public class HttpClient5AdapterServiceRest extends HttpClient5AdapterServiceSupp String.format("%s", authorization)); } + protected void setAuthHeaders(HttpUriRequestBase method, String authorization, String authorizationHeaderName) throws Exception { + method.setHeader(authorizationHeaderName, + String.format("%s", authorization)); + } + protected void setAuthHeaders(HttpUriRequestBase method, OAuth2AccessTokenVO accessToken) throws Exception { method.setHeader("Authorization", String.format("%s %s", AccessTokenVO.BEARER_TYPE, accessToken.getAccessToken())); } + + protected void setAuthHeaders(HttpUriRequestBase method, OAuth2AccessTokenVO accessToken, String authorizationHeaderName) throws Exception { + method.setHeader(authorizationHeaderName, + String.format("%s %s", AccessTokenVO.BEARER_TYPE, accessToken.getAccessToken())); + } /* nice on 나이스 지키미 용으로 생성함 * jwhong 2015-11-04 diff --git a/src/main/java/com/eactive/eai/common/authoutbound/AccessTokenManagerByDB.java b/src/main/java/com/eactive/eai/common/authoutbound/AccessTokenManagerByDB.java index 7fe4818..0a2899b 100644 --- a/src/main/java/com/eactive/eai/common/authoutbound/AccessTokenManagerByDB.java +++ b/src/main/java/com/eactive/eai/common/authoutbound/AccessTokenManagerByDB.java @@ -327,12 +327,12 @@ public class AccessTokenManagerByDB implements Lifecycle { logger.warn("No valid adapter configuration found for adapter group: {}", adapterGroupName); } - }catch (Exception e) { - logger.error("Task execution failed for adapter group: {}", adapterGroupName, e); - } - - return accessToken; - + } catch (Exception e) { + logger.error("Task execution failed for adapter group: {}", adapterGroupName, e); + } + + return accessToken; + } public void stopToken(String adapterGroupName) { @@ -474,18 +474,18 @@ public class AccessTokenManagerByDB implements Lifecycle { if (accessToken == null || accessToken.isExpired() || StringUtils.equals(accessToken.getAccessToken(), oldToken)) { - if (isOAuthCredentialRegistered(adapterGroupName) == false) { - throw new Exception( - "There is no OAuthCredentialRegistered information, or whether to use it is 'N'."); - } - String type = properties.getProperty("ADAPTER_TOKEN_ISSUING_CLIENT_TYPE"); - - HttpClientAccessTokenServiceByDB service = HttpClientAccessTokenServiceFactoryByDB.createFactory(type); - OutboundOAuthCredentialVo outboundOAuthCredentialVo = outboundOAuthCredentialVos.get(adapterGroupName); - if (service != null) { - accessToken = (AccessTokenVO) service.execute(adapterGroupName, properties, - outboundOAuthCredentialVo); - } + if (isOAuthCredentialRegistered(adapterGroupName) == false) { + throw new Exception( + "There is no OAuthCredentialRegistered information, or whether to use it is 'N'."); + } + String type = properties.getProperty("ADAPTER_TOKEN_ISSUING_CLIENT_TYPE"); + + HttpClientAccessTokenServiceByDB service = HttpClientAccessTokenServiceFactoryByDB.createFactory(type); + OutboundOAuthCredentialVo outboundOAuthCredentialVo = outboundOAuthCredentialVos.get(adapterGroupName); + if (service != null) { + accessToken = (AccessTokenVO) service.execute(adapterGroupName, properties, + outboundOAuthCredentialVo); + } } return accessToken;