Merge branch 'jenkins_with_weblogic' of ssh://192.168.240.178:18081/eapim/elink-online-common into jenkins_with_weblogic
This commit is contained in:
+342
-311
@@ -319,17 +319,17 @@ public class HttpClient5AdapterServiceRest extends HttpClient5AdapterServiceSupp
|
|||||||
|
|
||||||
Properties properties = AdapterPropManager.getInstance().getProperties(vo.getAdapterName()); // jwhong
|
Properties properties = AdapterPropManager.getInstance().getProperties(vo.getAdapterName()); // jwhong
|
||||||
String encryptAlgorithm = properties.getProperty("ENCRYPT_ALGORITHM"); // jwhong
|
String encryptAlgorithm = properties.getProperty("ENCRYPT_ALGORITHM"); // jwhong
|
||||||
if (useAdapterToken && "AES256-NICEON".equals(encryptAlgorithm)) {
|
if (useAdapterToken && "AES256-NICEON".equals(encryptAlgorithm)) {
|
||||||
String niceToken = accessToken.getAccessToken();
|
String niceToken = accessToken.getAccessToken();
|
||||||
String clientId = JwtClientIdExtractor(niceToken);
|
String clientId = JwtClientIdExtractor(niceToken);
|
||||||
long currentTime = System.currentTimeMillis();
|
long currentTime = System.currentTimeMillis();
|
||||||
auth = niceToken + ":" + currentTime + ":" + clientId ;
|
auth = niceToken + ":" + currentTime + ":" + clientId ;
|
||||||
auth = Base64.getEncoder().encodeToString(auth.getBytes("UTF-8"));
|
auth = Base64.getEncoder().encodeToString(auth.getBytes("UTF-8"));
|
||||||
|
|
||||||
setNiceOnAuthHeaders(method, auth);
|
setNiceOnAuthHeaders(method, auth);
|
||||||
} else {
|
} else {
|
||||||
setAuthHeaders(method, accessToken); // 원래 있던 logic
|
setAuthHeaders(method, accessToken); // 원래 있던 logic
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (logger.isDebug()) {
|
if (logger.isDebug()) {
|
||||||
@@ -367,7 +367,9 @@ public class HttpClient5AdapterServiceRest extends HttpClient5AdapterServiceSupp
|
|||||||
case POST:
|
case POST:
|
||||||
// assignPostBody(dataObject, contentType, vo.getEncode(), method);
|
// assignPostBody(dataObject, contentType, vo.getEncode(), method);
|
||||||
//assignPostBody(dataContent, contentType, vo.getEncode(), method); // jwhong commnet
|
//assignPostBody(dataContent, contentType, vo.getEncode(), method); // jwhong commnet
|
||||||
assignPostBody(dataContent, contentType, vo.getEncode(), method, vo.getAdapterName(), auth);
|
// KJBank API 추적정보를 Header에 제공. jwhong
|
||||||
|
String inboundToken= assignRequestKJHeaders(method, prop, tempProp );
|
||||||
|
assignPostBody(dataContent, contentType, vo.getEncode(), method, vo.getAdapterName(), auth, inboundToken);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@@ -378,14 +380,14 @@ public class HttpClient5AdapterServiceRest extends HttpClient5AdapterServiceSupp
|
|||||||
+ method.getEntity() + "] ");
|
+ method.getEntity() + "] ");
|
||||||
}
|
}
|
||||||
|
|
||||||
// OAuth2AccessToken 원래 있던 위치 JWHONG
|
// OAuth2AccessToken 원래 있던 위치 JWHONG
|
||||||
|
|
||||||
// 전달 header 셋팅
|
// 전달 header 셋팅
|
||||||
// Adapter 레벨 header 보다 data로 넘어온 httpHeader를 우선 적용(header명이 같다면 덮어씀)
|
// Adapter 레벨 header 보다 data로 넘어온 httpHeader를 우선 적용(header명이 같다면 덮어씀)
|
||||||
assignRequestHeaders(method, httpHeader);
|
assignRequestHeaders(method, httpHeader);
|
||||||
|
|
||||||
// KJBank API 추적정보를 Header에 제공. jwhong
|
// KJBank API 추적정보를 Header에 제공. jwhong
|
||||||
assignRequestKJHeaders(method, prop, tempProp );
|
//assignRequestKJHeaders(method, prop, tempProp );
|
||||||
|
|
||||||
int status = -1;
|
int status = -1;
|
||||||
|
|
||||||
@@ -667,7 +669,7 @@ public class HttpClient5AdapterServiceRest extends HttpClient5AdapterServiceSupp
|
|||||||
*/
|
*/
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
private String assignResponseHeaders(HttpUriRequestBase method, byte[] responseMessage, String headerGroupName,
|
private String assignResponseHeaders(HttpUriRequestBase method, byte[] responseMessage, String headerGroupName,
|
||||||
String encode, String messageType, String relayHeaderKeys, int status, Properties responseHeaderProp) throws Exception {
|
String encode, String messageType, String relayHeaderKeys, int status, Properties responseHeaderProp) throws Exception {
|
||||||
if (!MessageType.JSON.equals(messageType) || StringUtils.isBlank(headerGroupName)
|
if (!MessageType.JSON.equals(messageType) || StringUtils.isBlank(headerGroupName)
|
||||||
|| StringUtils.isBlank(relayHeaderKeys)) {
|
|| StringUtils.isBlank(relayHeaderKeys)) {
|
||||||
return new String(responseMessage, encode);
|
return new String(responseMessage, encode);
|
||||||
@@ -718,35 +720,35 @@ public class HttpClient5AdapterServiceRest extends HttpClient5AdapterServiceSupp
|
|||||||
* jwhong 2015-11-04
|
* jwhong 2015-11-04
|
||||||
*/
|
*/
|
||||||
private void setNiceOnAuthHeaders(HttpUriRequestBase method, String auth) throws Exception {
|
private void setNiceOnAuthHeaders(HttpUriRequestBase method, String auth) throws Exception {
|
||||||
method.setHeader("Authorization",
|
method.setHeader("Authorization",
|
||||||
String.format("%s %s", AccessTokenVO.BEARER_TYPE, auth)); // 나이스지키미 format임
|
String.format("%s %s", AccessTokenVO.BEARER_TYPE, auth)); // 나이스지키미 format임
|
||||||
method.setHeader("ProductID", "2303345072");
|
method.setHeader("ProductID", "2303345072");
|
||||||
//method.setHeader("Authorization",
|
//method.setHeader("Authorization",
|
||||||
// String.format("%s %s", AccessTokenVO.BEARER_TYPE, accessToken.getAccessToken()));
|
// String.format("%s %s", AccessTokenVO.BEARER_TYPE, accessToken.getAccessToken()));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* nice clientid 추출을 위하여 추가한 내용임. jwhong
|
/* nice clientid 추출을 위하여 추가한 내용임. jwhong
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
private String JwtClientIdExtractor(String inboundToken) {
|
private String JwtClientIdExtractor(String inboundToken) {
|
||||||
|
|
||||||
String tokenClientId ="";
|
String tokenClientId ="";
|
||||||
try {
|
try {
|
||||||
SignedJWT signedJWT = SignedJWT.parse(inboundToken);
|
SignedJWT signedJWT = SignedJWT.parse(inboundToken);
|
||||||
tokenClientId = (String) signedJWT.getJWTClaimsSet().getClaim(PAYLOAD_PARAM_NAME_CLIENT_ID);
|
tokenClientId = (String) signedJWT.getJWTClaimsSet().getClaim(PAYLOAD_PARAM_NAME_CLIENT_ID);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
logger.error(e.getMessage());
|
logger.error(e.getMessage());
|
||||||
tokenClientId = "";
|
tokenClientId = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.debug("[ NICE Token Client ID ]" + tokenClientId);
|
logger.debug("[ NICE Token Client ID ]" + tokenClientId);
|
||||||
return tokenClientId;
|
return tokenClientId;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private boolean checkTokenRetry(byte[] responseMessage, String tokenErrorCodeKey, String tokenErrorCodeValues,
|
private boolean checkTokenRetry(byte[] responseMessage, String tokenErrorCodeKey, String tokenErrorCodeValues,
|
||||||
String encode) {
|
String encode) {
|
||||||
if (responseMessage == null) {
|
if (responseMessage == null) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -799,55 +801,75 @@ public class HttpClient5AdapterServiceRest extends HttpClient5AdapterServiceSupp
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* KJBank Target System으로 요청 보낼때 header에 clientId(업체정보), APIM거래추적자(UUID), 최초 요청시간 을 보낸다. jwhong
|
* KJBank Target System으로 요청 보낼때 header에 clientId(업체정보), APIM거래추적자(UUID), 최초 요청시간, guid 추가해서 보낸다. jwhong
|
||||||
*/
|
*/
|
||||||
private void assignRequestKJHeaders(HttpUriRequestBase method, Properties prop, Properties tempProp) {
|
private String assignRequestKJHeaders(HttpUriRequestBase method, Properties prop, Properties tempProp){
|
||||||
|
|
||||||
//weblogic 에서는 tempProp.get 이 property로 return 해어 아래처럼 수정함. ClassCastException 발생함.
|
//weblogic 에서는 tempProp.get 이 property로 return 해어 아래처럼 수정함. ClassCastException 발생함.
|
||||||
//Properties inboundHeaders = (Properties) tempProp.get(HttpAdapterServiceKey.INBOUND_HEADER);
|
//Properties inboundHeaders = (Properties) tempProp.get(HttpAdapterServiceKey.INBOUND_HEADER);
|
||||||
Properties inboundHeaders = null;
|
Properties inboundHeaders = null;
|
||||||
|
String authorization ="";
|
||||||
try {
|
try {
|
||||||
Object headerObj = tempProp.get(HttpAdapterServiceKey.INBOUND_HEADER);
|
Object headerObj = tempProp.get(HttpAdapterServiceKey.INBOUND_HEADER);
|
||||||
if (headerObj instanceof Properties) { //tomcat
|
if (headerObj instanceof Properties) { //tomcat
|
||||||
inboundHeaders = (Properties) headerObj;
|
inboundHeaders = (Properties) headerObj;
|
||||||
|
for ( String k : inboundHeaders.stringPropertyNames()) {
|
||||||
|
if(k.equalsIgnoreCase("authorization")) {
|
||||||
|
authorization = inboundHeaders.getProperty(k);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
} else if (headerObj instanceof String) { //weblogic
|
} else if (headerObj instanceof String) { //weblogic
|
||||||
inboundHeaders = new Properties();
|
String str = (String) headerObj;
|
||||||
inboundHeaders.load(new StringReader((String) headerObj));
|
str = str.substring(1, str.length() - 1);
|
||||||
|
// 2. key=value 쌍 분리
|
||||||
|
String[] entries = str.split(",");
|
||||||
|
// map에 담기
|
||||||
|
Map<String, String> map = new HashMap<>();
|
||||||
|
for (String entry : entries) {
|
||||||
|
String[] kv = entry.split("=", 2);
|
||||||
|
if (kv.length == 2) {
|
||||||
|
map.put(kv[0].trim(), kv[1].trim());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (String k : map.keySet()) {
|
||||||
|
if (k.equalsIgnoreCase("authorization")) {
|
||||||
|
authorization = map.get(k);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} catch (IOException e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
||||||
String authorization = inboundHeaders.getProperty("authorization");
|
|
||||||
String jwtToken = "";
|
String jwtToken = "";
|
||||||
|
|
||||||
if (authorization != null && authorization.startsWith("Bearer ")) {
|
if (authorization != null && authorization.startsWith("Bearer ")) {
|
||||||
jwtToken = authorization.substring(7); // "Bearer " 이후의 JWT만 추출
|
jwtToken = authorization.substring(7); // "Bearer " 이후의 JWT만 추출
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 업체정보 */
|
/* 업체정보 */
|
||||||
String clientId = JwtClientIdExtractor(jwtToken);
|
String clientId = JwtClientIdExtractor(jwtToken);
|
||||||
method.setHeader("clientId", clientId);
|
method.setHeader("clientId", clientId);
|
||||||
|
|
||||||
/* APIM 거래추적자 */
|
/* APIM 거래추적자 */
|
||||||
String uuid = tempProp.getProperty(TransactionContextKeys.TRANSACTION_UUID, "");
|
String uuid = tempProp.getProperty(TransactionContextKeys.TRANSACTION_UUID, "");
|
||||||
method.setHeader("traceId", uuid);
|
method.setHeader("traceId", uuid);
|
||||||
|
|
||||||
/*
|
/* GUID */
|
||||||
Set<String> keys = tempProp.stringPropertyNames();
|
String guid = tempProp.getProperty(TransactionContextKeys.GUID, "");
|
||||||
for (String key : keys) {
|
method.setHeader("guid", guid);
|
||||||
String value = tempProp.getProperty(key);
|
|
||||||
logger.debug(key + " = " + value);
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* 최초요청시간 */
|
/* 최초요청시간 */
|
||||||
String receivedTimestamp = tempProp.getProperty(HttpAdapterServiceKey.INBOUND_REQUESTED_TIME, "");
|
String receivedTimestamp = tempProp.getProperty(HttpAdapterServiceKey.INBOUND_REQUESTED_TIME, "");
|
||||||
method.setHeader("receivedTimestamp", receivedTimestamp);
|
method.setHeader("receivedTimestamp", receivedTimestamp);
|
||||||
|
|
||||||
|
return jwtToken;
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
@SuppressWarnings("deprecation")
|
||||||
private void assignPostBody(Object eaiBody, String contentType, String charset, HttpUriRequestBase method, String adapterName, String niceAuth) {
|
private void assignPostBody(Object eaiBody, String contentType, String charset, HttpUriRequestBase method, String adapterName, String niceAuth, String inboundToken) {
|
||||||
if (eaiBody == null) {
|
if (eaiBody == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -858,7 +880,7 @@ public class HttpClient5AdapterServiceRest extends HttpClient5AdapterServiceSupp
|
|||||||
JSONObject jsonObject = (JSONObject) eaiBody;
|
JSONObject jsonObject = (JSONObject) eaiBody;
|
||||||
for (Object key : jsonObject.keySet()) {
|
for (Object key : jsonObject.keySet()) {
|
||||||
//String encryptedValue = encrypt((String) jsonObject.get(key)); // encrypt by jwhong
|
//String encryptedValue = encrypt((String) jsonObject.get(key)); // encrypt by jwhong
|
||||||
//params.add(new BasicNameValuePair((String) key, encryptedValue ));
|
//params.add(new BasicNameValuePair((String) key, encryptedValue ));
|
||||||
params.add(new BasicNameValuePair((String) key, (String) jsonObject.get(key)));
|
params.add(new BasicNameValuePair((String) key, (String) jsonObject.get(key)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -868,8 +890,8 @@ public class HttpClient5AdapterServiceRest extends HttpClient5AdapterServiceSupp
|
|||||||
} else {
|
} else {
|
||||||
ContentType contentTypeObj = ContentType.create(contentType, charset);
|
ContentType contentTypeObj = ContentType.create(contentType, charset);
|
||||||
|
|
||||||
String eaiBodyMessage = doOutboundPreFilter(eaiBody, adapterName, niceAuth); // jwhong
|
String eaiBodyMessage = doOutboundPreFilter(eaiBody, adapterName, niceAuth, inboundToken); // jwhong
|
||||||
StringEntity entity = new StringEntity(eaiBodyMessage, contentTypeObj);
|
StringEntity entity = new StringEntity(eaiBodyMessage, contentTypeObj);
|
||||||
// 요청 본문을 StringEntity 객체로 생성
|
// 요청 본문을 StringEntity 객체로 생성
|
||||||
//StringEntity entity = new StringEntity(eaiBody.toString(), contentTypeObj);
|
//StringEntity entity = new StringEntity(eaiBody.toString(), contentTypeObj);
|
||||||
|
|
||||||
@@ -879,37 +901,43 @@ public class HttpClient5AdapterServiceRest extends HttpClient5AdapterServiceSupp
|
|||||||
}
|
}
|
||||||
|
|
||||||
// from here by jwhong
|
// from here by jwhong
|
||||||
private String doOutboundPreFilter(Object eaiBody, String adapterName, String niceAuth) {
|
private String doOutboundPreFilter(Object eaiBody, String adapterName, String niceAuth, String inboundToken) {
|
||||||
|
|
||||||
Properties properties = AdapterPropManager.getInstance().getProperties(adapterName); // jwhong
|
Properties properties = AdapterPropManager.getInstance().getProperties(adapterName); // jwhong
|
||||||
String encryptAlgorithm = properties.getProperty("ENCRYPT_ALGORITHM",""); // jwhong
|
String encryptAlgorithm = properties.getProperty("ENCRYPT_ALGORITHM",""); // jwhong
|
||||||
//String encryptBaseKeyType = properties.getProperty("ENCRYPT_BASE_TYPE");
|
String encryptBaseKeyType = properties.getProperty("ENCRYPT_BASE_TYPE");
|
||||||
String encryptClientId = properties.getProperty("ENCRYPT_CLIENT_ID");
|
String encryptClientId = properties.getProperty("ENCRYPT_CLIENT_ID");
|
||||||
String encryptAES256Iv = properties.getProperty("ENCRYPT_AES256_IV");
|
String encryptAES256Iv = properties.getProperty("ENCRYPT_AES256_IV");
|
||||||
String encryptAES256Key = properties.getProperty("ENCRYPT_AES256_KEY");
|
String encryptAES256Key = properties.getProperty("ENCRYPT_AES256_KEY");
|
||||||
String certPath = properties.getProperty("ENCRYPT_CERT_PATH");
|
String certPath = properties.getProperty("ENCRYPT_CERT_PATH");
|
||||||
|
|
||||||
// outbound encrypt 는 SecretKey 또는 NICE-auth 가 암호화 key로 사용된다.
|
// outbound encrypt 는 SecretKey 또는 NICE-auth 가 암호화 key로 사용된다.
|
||||||
|
// outbound 알림결과는 SecretKey, NICE-auth, Token을 사용한다.
|
||||||
// 참고로 inbound encrypt 에는 Token 또는 SecretKey 가 암호화 key로 사용된다.
|
// 참고로 inbound encrypt 에는 Token 또는 SecretKey 가 암호화 key로 사용된다.
|
||||||
// 여기에 NICE-auth 뭔지 파악하여 logic 추가해야 한다.
|
// 여기에 NICE-auth logic 추가함 .
|
||||||
OAuth2Manager manager = OAuth2Manager.getInstance();
|
String clientSecret = "";
|
||||||
ClientDetails clientDetail = manager.getClientDeatilsStore().get(encryptClientId);
|
if ("TOKEN".equalsIgnoreCase(encryptBaseKeyType)) {
|
||||||
String clientSecret = "";
|
clientSecret = inboundToken;
|
||||||
if ( clientDetail != null ) { // not null 이라는 것은 APIM Oauth Server에 등록된 client ID 이다.
|
} else if ( "SECRETKEY".equalsIgnoreCase(encryptBaseKeyType)) {
|
||||||
// 이건 KJBank로 Outbound 나가는 것임
|
OAuth2Manager manager = OAuth2Manager.getInstance();
|
||||||
clientSecret = clientDetail.getClientSecret();
|
ClientDetails clientDetail = manager.getClientDeatilsStore().get(encryptClientId);
|
||||||
} else { // 그럼 업체로 Outbound 나가는것은, 업체에서 사용하는 secretkey를 사용한다.
|
if ( clientDetail != null ) { // not null 이라는 것은 APIM Oauth Server에 등록된 client ID 이다.
|
||||||
clientSecret = encryptClientId;
|
// 업체가 우리 OAuth 를 사용하는 경우임
|
||||||
}
|
clientSecret = clientDetail.getClientSecret();
|
||||||
|
} else { // 이경우는 우리 OAuth를 사용안하는 경우임, 업체에서 사용하는 secretkey를 사용한다.
|
||||||
|
clientSecret = encryptClientId;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Nice-auth , token 값을 substring 해서 사용한다. 나이스 지키미는 adapter token에서 추출된 token을 사용한다.
|
// Nice-auth , token 값을 substring 해서 사용한다. 나이스 지키미는 adapter token에서 추출된 token을 사용한다.
|
||||||
if (useAdapterToken && "AES256-NICEON".equals(encryptAlgorithm)) {
|
if (useAdapterToken && "AES256-NICEON".equals(encryptAlgorithm)) {
|
||||||
clientSecret = niceAuth;
|
clientSecret = niceAuth;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 여기서 SECRETY인지 nice-auth 인지 check 하여 clientSecret 값을 정하는 logic 추가하여 넘겨야한다.
|
// 여기서 SECRETY인지 nice-auth 인지 check 하여 clientSecret 값을 정하는 logic 추가하여 넘겨야한다.
|
||||||
|
|
||||||
String responseMessage = doOutboundPreEncrypt(eaiBody, encryptAlgorithm, clientSecret, encryptAES256Iv, encryptAES256Key, certPath);
|
String responseMessage = doOutboundPreEncrypt(eaiBody, encryptAlgorithm, clientSecret, encryptAES256Iv, encryptAES256Key, certPath);
|
||||||
|
logger.debug("outbound pre encrypte value is :"+responseMessage);
|
||||||
return responseMessage;
|
return responseMessage;
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -921,97 +949,98 @@ public class HttpClient5AdapterServiceRest extends HttpClient5AdapterServiceSupp
|
|||||||
encryptedJsonKey = getJsonKey(encryptAlgorithm);
|
encryptedJsonKey = getJsonKey(encryptAlgorithm);
|
||||||
|
|
||||||
switch (encryptAlgorithm) {
|
switch (encryptAlgorithm) {
|
||||||
case "AES":
|
case "AES":
|
||||||
encryptedMessage = encrypt(eaiBody.toString()); // encrypt by jwhong
|
encryptedMessage = encrypt(eaiBody.toString()); // encrypt by jwhong
|
||||||
break;
|
break;
|
||||||
case "AES128-TOSS":
|
case "AES128":
|
||||||
try {
|
case "AES128-TOSS":
|
||||||
String key = clientSecretKey.substring(22,38);
|
try {
|
||||||
encryptedMessage = AESCipher.encrypt(eaiBody.toString(), key);
|
String key = clientSecretKey.substring(22,38);
|
||||||
} catch (Exception e) {
|
encryptedMessage = AESCipher.encrypt(eaiBody.toString(), key);
|
||||||
e.printStackTrace();
|
} catch (Exception e) {
|
||||||
logger.error("HttpClientAdapterServiceRest] AES128 Encryption error=" + e.getMessage());
|
e.printStackTrace();
|
||||||
}
|
logger.error("HttpClientAdapterServiceRest] AES128 Encryption error=" + e.getMessage());
|
||||||
break;
|
}
|
||||||
case "AES128-TOGETHER":
|
break;
|
||||||
try {
|
case "AES128-TOGETHER":
|
||||||
String key = clientSecretKey.substring(44,60);
|
try {
|
||||||
encryptedMessage = AESCipher.encrypt(eaiBody.toString(), key);
|
String key = clientSecretKey.substring(44,60);
|
||||||
} catch (Exception e) {
|
encryptedMessage = AESCipher.encrypt(eaiBody.toString(), key);
|
||||||
e.printStackTrace();
|
} catch (Exception e) {
|
||||||
logger.error("HttpClientAdapterServiceRest] AES128 Encryption error=" + e.getMessage());
|
e.printStackTrace();
|
||||||
}
|
logger.error("HttpClientAdapterServiceRest] AES128 Encryption error=" + e.getMessage());
|
||||||
break;
|
}
|
||||||
case "AES256":
|
break;
|
||||||
try {
|
case "AES256":
|
||||||
String key = clientSecretKey.substring(10,42);
|
try {
|
||||||
encryptedMessage = AES256Cipher.encrypt(eaiBody.toString(), key);
|
String key = clientSecretKey.substring(10,42);
|
||||||
} catch (Exception e) {
|
encryptedMessage = AES256Cipher.encrypt(eaiBody.toString(), key);
|
||||||
e.printStackTrace();
|
} catch (Exception e) {
|
||||||
logger.error("HttpClientAdapterServiceRest] AES256 Encryption error=" + e.getMessage());
|
e.printStackTrace();
|
||||||
}
|
logger.error("HttpClientAdapterServiceRest] AES256 Encryption error=" + e.getMessage());
|
||||||
break;
|
}
|
||||||
case "AES256-KAKAO":
|
break;
|
||||||
try {
|
case "AES256-KAKAO":
|
||||||
encryptedMessage = AES256Cipher.encrypt(eaiBody.toString(), encryptAES256Iv, encryptAES256Key);
|
try {
|
||||||
} catch (Exception e) {
|
encryptedMessage = AES256Cipher.encrypt(eaiBody.toString(), encryptAES256Iv, encryptAES256Key);
|
||||||
e.printStackTrace();
|
} catch (Exception e) {
|
||||||
logger.error("HttpClientAdapterServiceRest] AES256 Encryption error=" + e.getMessage());
|
e.printStackTrace();
|
||||||
}
|
logger.error("HttpClientAdapterServiceRest] AES256 Encryption error=" + e.getMessage());
|
||||||
break;
|
}
|
||||||
case "AES256-TOSS":
|
break;
|
||||||
try {
|
case "AES256-TOSS":
|
||||||
encryptedMessage = AES256Cipher.encrypt(eaiBody.toString(), encryptAES256Iv, encryptAES256Key);
|
try {
|
||||||
} catch (Exception e) {
|
encryptedMessage = AES256Cipher.encrypt(eaiBody.toString(), encryptAES256Iv, encryptAES256Key);
|
||||||
e.printStackTrace();
|
} catch (Exception e) {
|
||||||
logger.error("HttpClientAdapterServiceRest] AES256 Encryption error=" + e.getMessage());
|
e.printStackTrace();
|
||||||
}
|
logger.error("HttpClientAdapterServiceRest] AES256 Encryption error=" + e.getMessage());
|
||||||
break;
|
}
|
||||||
case "AES256-NICEON":
|
break;
|
||||||
try {
|
case "AES256-NICEON":
|
||||||
String key = clientSecretKey.substring(10,42);
|
try {
|
||||||
encryptedMessage = AES256Cipher.encrypt(eaiBody.toString(), key);
|
String key = clientSecretKey.substring(10,42);
|
||||||
} catch (Exception e) {
|
encryptedMessage = AES256Cipher.encrypt(eaiBody.toString(), key);
|
||||||
e.printStackTrace();
|
} catch (Exception e) {
|
||||||
logger.error("HttpClientAdapterServiceRest] AES256 Encryption error=" + e.getMessage());
|
e.printStackTrace();
|
||||||
}
|
logger.error("HttpClientAdapterServiceRest] AES256 Encryption error=" + e.getMessage());
|
||||||
break;
|
}
|
||||||
case "AES256GCM":
|
break;
|
||||||
try {
|
case "AES256GCM":
|
||||||
byte[] key = AES256GCMCipher.generateKey();
|
try {
|
||||||
AES256GCMCipher cipher = new AES256GCMCipher(key);
|
byte[] key = AES256GCMCipher.generateKey();
|
||||||
byte[] aad = "metadata".getBytes();
|
AES256GCMCipher cipher = new AES256GCMCipher(key);
|
||||||
|
byte[] aad = "metadata".getBytes();
|
||||||
|
|
||||||
encryptedMessage = cipher.encrypt(eaiBody.toString(), aad);
|
encryptedMessage = cipher.encrypt(eaiBody.toString(), aad);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
logger.error("HttpClientAdapterServiceRest] AES256GCM Encryption error=" + e.getMessage());
|
logger.error("HttpClientAdapterServiceRest] AES256GCM Encryption error=" + e.getMessage());
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case "ECDHESA256":
|
case "ECDHESA256":
|
||||||
try {
|
try {
|
||||||
ECDHESA256Cipher cipher = new ECDHESA256Cipher();
|
ECDHESA256Cipher cipher = new ECDHESA256Cipher();
|
||||||
|
|
||||||
encryptedMessage = cipher.encrypt(eaiBody.toString());
|
encryptedMessage = cipher.encrypt(eaiBody.toString());
|
||||||
System.out.println("Encrypted JWE: " + encryptedMessage);
|
System.out.println("Encrypted JWE: " + encryptedMessage);
|
||||||
|
|
||||||
String decrypted = cipher.decrypt(encryptedMessage);
|
String decrypted = cipher.decrypt(encryptedMessage);
|
||||||
System.out.println("Decrypted Payload: " + decrypted);
|
System.out.println("Decrypted Payload: " + decrypted);
|
||||||
|
|
||||||
//아래 인증서로 테스트
|
//아래 인증서로 테스트
|
||||||
ECDHESA256Cipher cipherCert = new ECDHESA256Cipher(certPath);
|
ECDHESA256Cipher cipherCert = new ECDHESA256Cipher(certPath);
|
||||||
encryptedMessage = cipherCert.encrypt(eaiBody.toString());
|
encryptedMessage = cipherCert.encrypt(eaiBody.toString());
|
||||||
|
|
||||||
decrypted = cipherCert.decrypt(encryptedMessage);
|
decrypted = cipherCert.decrypt(encryptedMessage);
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
logger.error("HttpClientAdapterServiceRest] AES256GCM Encryption error=" + e.getMessage());
|
logger.error("HttpClientAdapterServiceRest] AES256GCM Encryption error=" + e.getMessage());
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
encryptedMessage = eaiBody.toString();
|
encryptedMessage = eaiBody.toString();
|
||||||
return encryptedMessage;
|
return encryptedMessage;
|
||||||
//break;
|
//break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1038,19 +1067,19 @@ public class HttpClient5AdapterServiceRest extends HttpClient5AdapterServiceSupp
|
|||||||
String encryptAES256Key = properties.getProperty("ENCRYPT_AES256_KEY");
|
String encryptAES256Key = properties.getProperty("ENCRYPT_AES256_KEY");
|
||||||
|
|
||||||
// outbound encrypt 는 SecretKey 또는 NICE-auth 가 암호화 key로 사용된다.
|
// outbound encrypt 는 SecretKey 또는 NICE-auth 가 암호화 key로 사용된다.
|
||||||
OAuth2Manager manager = OAuth2Manager.getInstance();
|
OAuth2Manager manager = OAuth2Manager.getInstance();
|
||||||
ClientDetails clientDetail = manager.getClientDeatilsStore().get(encryptClientId);
|
ClientDetails clientDetail = manager.getClientDeatilsStore().get(encryptClientId);
|
||||||
String clientSecret = "";
|
String clientSecret = "";
|
||||||
if ( clientDetail != null ) {
|
if ( clientDetail != null ) {
|
||||||
clientSecret = clientDetail.getClientSecret();
|
clientSecret = clientDetail.getClientSecret();
|
||||||
} else {
|
} else {
|
||||||
clientSecret = encryptClientId;
|
clientSecret = encryptClientId;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Nice-auth , token 값을 substring 해서 사용한다. 나이스 지키미는 adapter token에서 추출된 token을 사용한다.
|
// Nice-auth , token 값을 substring 해서 사용한다. 나이스 지키미는 adapter token에서 추출된 token을 사용한다.
|
||||||
if (useAdapterToken && "AES256-NICEON".equals(decryptAlgorithm)) {
|
if (useAdapterToken && "AES256-NICEON".equals(decryptAlgorithm)) {
|
||||||
clientSecret = niceAccessToken.getAccessToken();
|
clientSecret = niceAccessToken.getAccessToken();
|
||||||
}
|
}
|
||||||
|
|
||||||
byte[] resPostMessage = doOutboundPostDecrypt(eaiBody, decryptAlgorithm, clientSecret, encryptAES256Iv, encryptAES256Key);
|
byte[] resPostMessage = doOutboundPostDecrypt(eaiBody, decryptAlgorithm, clientSecret, encryptAES256Iv, encryptAES256Key);
|
||||||
return resPostMessage;
|
return resPostMessage;
|
||||||
@@ -1078,95 +1107,96 @@ public class HttpClient5AdapterServiceRest extends HttpClient5AdapterServiceSupp
|
|||||||
|
|
||||||
// Base64 디코딩 테스트
|
// Base64 디코딩 테스트
|
||||||
try {
|
try {
|
||||||
byte[] decoded = Base64.getDecoder().decode(eaiStringBody);
|
byte[] decoded = Base64.getDecoder().decode(eaiStringBody);
|
||||||
logger.debug("[디코딩 성공, 길이: ]" + decoded.length);
|
logger.debug("[디코딩 성공, 길이: ]" + decoded.length);
|
||||||
} catch (IllegalArgumentException e) {
|
} catch (IllegalArgumentException e) {
|
||||||
logger.debug("[Base64 디코딩 실패: ]" + e.getMessage());
|
logger.debug("[Base64 디코딩 실패: ]" + e.getMessage());
|
||||||
}
|
}
|
||||||
// end test source
|
// end test source
|
||||||
|
|
||||||
switch (decryptAlgorithm) {
|
switch (decryptAlgorithm) {
|
||||||
case "AES":
|
case "AES":
|
||||||
decryptedMessage = decrypt(eaiBody); // encrypt by jwhong
|
decryptedMessage = decrypt(eaiBody); // encrypt by jwhong
|
||||||
break;
|
break;
|
||||||
case "AES128-TOSS":
|
case "AES128":
|
||||||
try {
|
case "AES128-TOSS":
|
||||||
String key128 = clientSecretKey.substring(22,38);
|
try {
|
||||||
String decryptedStrMessage = AESCipher.decryptExistException(eaiStringBody, key128);
|
String key128 = clientSecretKey.substring(22,38);
|
||||||
decryptedMessage = decryptedStrMessage.getBytes(StandardCharsets.UTF_8);
|
String decryptedStrMessage = AESCipher.decryptExistException(eaiStringBody, key128);
|
||||||
} catch (Exception e) {
|
decryptedMessage = decryptedStrMessage.getBytes(StandardCharsets.UTF_8);
|
||||||
e.printStackTrace();
|
} catch (Exception e) {
|
||||||
logger.error("HttpClientAdapterServiceRest] AES128 Decryption error=" + e.getMessage());
|
e.printStackTrace();
|
||||||
}
|
logger.error("HttpClientAdapterServiceRest] AES128 Decryption error=" + e.getMessage());
|
||||||
break;
|
}
|
||||||
case "AES128-TOGETHER":
|
break;
|
||||||
try {
|
case "AES128-TOGETHER":
|
||||||
String key128 = clientSecretKey.substring(44,60);
|
try {
|
||||||
String decryptedStrMessage = AESCipher.decryptExistException(eaiStringBody, key128);
|
String key128 = clientSecretKey.substring(44,60);
|
||||||
decryptedMessage = decryptedStrMessage.getBytes(StandardCharsets.UTF_8);
|
String decryptedStrMessage = AESCipher.decryptExistException(eaiStringBody, key128);
|
||||||
} catch (Exception e) {
|
decryptedMessage = decryptedStrMessage.getBytes(StandardCharsets.UTF_8);
|
||||||
e.printStackTrace();
|
} catch (Exception e) {
|
||||||
logger.error("HttpClientAdapterServiceRest] AES128 Decryption error=" + e.getMessage());
|
e.printStackTrace();
|
||||||
}
|
logger.error("HttpClientAdapterServiceRest] AES128 Decryption error=" + e.getMessage());
|
||||||
break;
|
}
|
||||||
case "AES256":
|
break;
|
||||||
try {
|
case "AES256":
|
||||||
String key = clientSecretKey.substring(10,42);
|
try {
|
||||||
String decryptedStrMessage = AES256Cipher.decrypt(eaiStringBody, key);
|
String key = clientSecretKey.substring(10,42);
|
||||||
decryptedMessage = decryptedStrMessage.getBytes(StandardCharsets.UTF_8);
|
String decryptedStrMessage = AES256Cipher.decrypt(eaiStringBody, key);
|
||||||
} catch (Exception e) {
|
decryptedMessage = decryptedStrMessage.getBytes(StandardCharsets.UTF_8);
|
||||||
e.printStackTrace();
|
} catch (Exception e) {
|
||||||
logger.error("HttpClientAdapterServiceRest] AES256 Decryption error=" + e.getMessage());
|
e.printStackTrace();
|
||||||
}
|
logger.error("HttpClientAdapterServiceRest] AES256 Decryption error=" + e.getMessage());
|
||||||
break;
|
}
|
||||||
case "AES256-KAKAO":
|
break;
|
||||||
try {
|
case "AES256-KAKAO":
|
||||||
String decryptedStrMessage = AES256Cipher.decrypt(eaiStringBody, encryptAES256Iv, encryptAES256Key);
|
try {
|
||||||
decryptedMessage = decryptedStrMessage.getBytes(StandardCharsets.UTF_8);
|
String decryptedStrMessage = AES256Cipher.decrypt(eaiStringBody, encryptAES256Iv, encryptAES256Key);
|
||||||
} catch (Exception e) {
|
decryptedMessage = decryptedStrMessage.getBytes(StandardCharsets.UTF_8);
|
||||||
e.printStackTrace();
|
} catch (Exception e) {
|
||||||
logger.error("HttpClientAdapterServiceRest] AES256 Encryption error=" + e.getMessage());
|
e.printStackTrace();
|
||||||
}
|
logger.error("HttpClientAdapterServiceRest] AES256 Encryption error=" + e.getMessage());
|
||||||
break;
|
}
|
||||||
case "AES256-TOSS":
|
break;
|
||||||
try {
|
case "AES256-TOSS":
|
||||||
String decryptedStrMessage = AES256Cipher.decrypt(eaiStringBody, encryptAES256Iv, encryptAES256Key);
|
try {
|
||||||
decryptedMessage = decryptedStrMessage.getBytes(StandardCharsets.UTF_8);
|
String decryptedStrMessage = AES256Cipher.decrypt(eaiStringBody, encryptAES256Iv, encryptAES256Key);
|
||||||
} catch (Exception e) {
|
decryptedMessage = decryptedStrMessage.getBytes(StandardCharsets.UTF_8);
|
||||||
e.printStackTrace();
|
} catch (Exception e) {
|
||||||
logger.error("HttpClientAdapterServiceRest] AES256 Encryption error=" + e.getMessage());
|
e.printStackTrace();
|
||||||
}
|
logger.error("HttpClientAdapterServiceRest] AES256 Encryption error=" + e.getMessage());
|
||||||
break;
|
}
|
||||||
case "AES256-NICEON":
|
break;
|
||||||
try {
|
case "AES256-NICEON":
|
||||||
String key = clientSecretKey.substring(10,42);
|
try {
|
||||||
String decryptedStrMessage = AES256Cipher.decrypt(eaiStringBody, key);
|
String key = clientSecretKey.substring(10,42);
|
||||||
decryptedMessage = decryptedStrMessage.getBytes(StandardCharsets.UTF_8);
|
String decryptedStrMessage = AES256Cipher.decrypt(eaiStringBody, key);
|
||||||
} catch (Exception e) {
|
decryptedMessage = decryptedStrMessage.getBytes(StandardCharsets.UTF_8);
|
||||||
e.printStackTrace();
|
} catch (Exception e) {
|
||||||
logger.error("HttpClientAdapterServiceRest] AES256 Decryption error=" + e.getMessage());
|
e.printStackTrace();
|
||||||
}
|
logger.error("HttpClientAdapterServiceRest] AES256 Decryption error=" + e.getMessage());
|
||||||
break;
|
}
|
||||||
case "AES256GCM":
|
break;
|
||||||
try {
|
case "AES256GCM":
|
||||||
byte[] key = AES256GCMCipher.generateKey();
|
try {
|
||||||
AES256GCMCipher cipher = new AES256GCMCipher(key);
|
byte[] key = AES256GCMCipher.generateKey();
|
||||||
byte[] aad = "metadata".getBytes();
|
AES256GCMCipher cipher = new AES256GCMCipher(key);
|
||||||
String decryptedStrMessage = cipher.decrypt(eaiStringBody, aad);
|
byte[] aad = "metadata".getBytes();
|
||||||
decryptedMessage = decryptedStrMessage.getBytes(StandardCharsets.UTF_8);
|
String decryptedStrMessage = cipher.decrypt(eaiStringBody, aad);
|
||||||
} catch (Exception e) {
|
decryptedMessage = decryptedStrMessage.getBytes(StandardCharsets.UTF_8);
|
||||||
e.printStackTrace();
|
} catch (Exception e) {
|
||||||
logger.error("HttpClientAdapterServiceRest] AES256 Decryption error=" + e.getMessage());
|
e.printStackTrace();
|
||||||
}
|
logger.error("HttpClientAdapterServiceRest] AES256 Decryption error=" + e.getMessage());
|
||||||
break;
|
}
|
||||||
default:
|
break;
|
||||||
try {
|
default:
|
||||||
decryptedMessage = Arrays.copyOf(eaiBody, eaiBody.length);
|
try {
|
||||||
} catch (Exception e) {
|
decryptedMessage = Arrays.copyOf(eaiBody, eaiBody.length);
|
||||||
e.printStackTrace();
|
} catch (Exception e) {
|
||||||
logger.error("HttpClientAdapterServiceRest] doOutboundPostFilter Array copy error=" + e.getMessage());
|
e.printStackTrace();
|
||||||
}
|
logger.error("HttpClientAdapterServiceRest] doOutboundPostFilter Array copy error=" + e.getMessage());
|
||||||
break;
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return decryptedMessage;
|
return decryptedMessage;
|
||||||
@@ -1185,9 +1215,9 @@ public class HttpClient5AdapterServiceRest extends HttpClient5AdapterServiceSupp
|
|||||||
JSONObject jsonObject = (JSONObject) parser.parse(eaiStringBody);
|
JSONObject jsonObject = (JSONObject) parser.parse(eaiStringBody);
|
||||||
decryptedBodyMessage = (String) jsonObject.get(decryptedJsonKey);
|
decryptedBodyMessage = (String) jsonObject.get(decryptedJsonKey);
|
||||||
} catch (ParseException e) {
|
} catch (ParseException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
logger.error("HttpClient5AdapterServiceRest] extractBodyMsg error : " + e.getMessage());
|
logger.error("HttpClient5AdapterServiceRest] extractBodyMsg error : " + e.getMessage());
|
||||||
throw e;
|
throw e;
|
||||||
}
|
}
|
||||||
|
|
||||||
return decryptedBodyMessage;
|
return decryptedBodyMessage;
|
||||||
@@ -1199,73 +1229,74 @@ public class HttpClient5AdapterServiceRest extends HttpClient5AdapterServiceSupp
|
|||||||
String jsonKey = "";
|
String jsonKey = "";
|
||||||
|
|
||||||
switch (Algorithm) {
|
switch (Algorithm) {
|
||||||
case "AES128-TOSS":
|
case "AES128":
|
||||||
jsonKey = "preScreeningRequest";
|
case "AES128-TOSS":
|
||||||
break;
|
jsonKey = "preScreeningRequest";
|
||||||
case "AES128-TOGETHER":
|
break;
|
||||||
jsonKey = "obpTxData";
|
case "AES128-TOGETHER":
|
||||||
break;
|
jsonKey = "obpTxData";
|
||||||
case "AES256":
|
break;
|
||||||
jsonKey = "preScreeningRequest";
|
case "AES256":
|
||||||
break;
|
jsonKey = "preScreeningRequest";
|
||||||
case "AES256-KAKAO":
|
break;
|
||||||
jsonKey = "encrypted_data";
|
case "AES256-KAKAO":
|
||||||
break;
|
jsonKey = "encrypted_data";
|
||||||
case "AES256-TOSS":
|
break;
|
||||||
jsonKey = "encryptedData";
|
case "AES256-TOSS":
|
||||||
break;
|
jsonKey = "encryptedData";
|
||||||
case "AES256-NICEON":
|
break;
|
||||||
jsonKey = "preScreeningRequest";
|
case "AES256-NICEON":
|
||||||
break;
|
jsonKey = "preScreeningRequest";
|
||||||
case "AES256GCM":
|
break;
|
||||||
break;
|
case "AES256GCM":
|
||||||
default:
|
break;
|
||||||
break;
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
return jsonKey;
|
return jsonKey;
|
||||||
}
|
}
|
||||||
// by jwhong
|
// by jwhong
|
||||||
private String encrypt(String plainText) {
|
private String encrypt(String plainText) {
|
||||||
try {
|
try {
|
||||||
SecretKeySpec key = new SecretKeySpec("1234567890123456".getBytes(), "AES");
|
SecretKeySpec key = new SecretKeySpec("1234567890123456".getBytes(), "AES");
|
||||||
Cipher cipher = Cipher.getInstance("AES");
|
Cipher cipher = Cipher.getInstance("AES");
|
||||||
cipher.init(Cipher.ENCRYPT_MODE, key);
|
cipher.init(Cipher.ENCRYPT_MODE, key);
|
||||||
byte[] encrypted = cipher.doFinal(plainText.getBytes(StandardCharsets.UTF_8));
|
byte[] encrypted = cipher.doFinal(plainText.getBytes(StandardCharsets.UTF_8));
|
||||||
return Base64.getEncoder().encodeToString(encrypted);
|
return Base64.getEncoder().encodeToString(encrypted);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
// 예외 로그 출력 또는 사용자 정의 처리
|
// 예외 로그 출력 또는 사용자 정의 처리
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
return null; // 또는 에러 메시지 반환
|
return null; // 또는 에러 메시지 반환
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public static byte[] decrypt(byte[] encryptedBytes) {
|
public static byte[] decrypt(byte[] encryptedBytes) {
|
||||||
try {
|
try {
|
||||||
// byte[] --> Base64 문자열로 변환
|
// byte[] --> Base64 문자열로 변환
|
||||||
String encryptedText = new String(encryptedBytes, StandardCharsets.UTF_8).trim();
|
String encryptedText = new String(encryptedBytes, StandardCharsets.UTF_8).trim();
|
||||||
// 암호화에 사용한 키와 동일한 키 사용
|
// 암호화에 사용한 키와 동일한 키 사용
|
||||||
SecretKeySpec key = new SecretKeySpec("1234567890123456".getBytes(), "AES");
|
SecretKeySpec key = new SecretKeySpec("1234567890123456".getBytes(), "AES");
|
||||||
|
|
||||||
// 암호화와 동일한 알고리즘 설정
|
// 암호화와 동일한 알고리즘 설정
|
||||||
Cipher cipher = Cipher.getInstance("AES");
|
Cipher cipher = Cipher.getInstance("AES");
|
||||||
cipher.init(Cipher.DECRYPT_MODE, key);
|
cipher.init(Cipher.DECRYPT_MODE, key);
|
||||||
|
|
||||||
// Base64로 인코딩된 문자열을 디코딩
|
// Base64로 인코딩된 문자열을 디코딩
|
||||||
byte[] decodedBytes = Base64.getDecoder().decode(encryptedText);
|
byte[] decodedBytes = Base64.getDecoder().decode(encryptedText);
|
||||||
|
|
||||||
// 복호화 수행
|
// 복호화 수행
|
||||||
byte[] decryptedBytes = cipher.doFinal(decodedBytes);
|
byte[] decryptedBytes = cipher.doFinal(decodedBytes);
|
||||||
|
|
||||||
// UTF-8 문자열로 변환하여 반환
|
// UTF-8 문자열로 변환하여 반환
|
||||||
//return new String(decryptedBytes, StandardCharsets.UTF_8);
|
//return new String(decryptedBytes, StandardCharsets.UTF_8);
|
||||||
//복호화된 바이트 배열 반환
|
//복호화된 바이트 배열 반환
|
||||||
return decryptedBytes;
|
return decryptedBytes;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private HashMap<String, String> getParameters(Object message) throws Exception {
|
private HashMap<String, String> getParameters(Object message) throws Exception {
|
||||||
|
|||||||
@@ -78,6 +78,8 @@ public interface HttpAdapterServiceKey {
|
|||||||
static final String ENCRYPT_AES256_IV = "ENCRYPT_AES256_IV"; // jwhong
|
static final String ENCRYPT_AES256_IV = "ENCRYPT_AES256_IV"; // jwhong
|
||||||
static final String ENCRYPT_AES256_KEY = "ENCRYPT_AES256_KEY"; // jwhong
|
static final String ENCRYPT_AES256_KEY = "ENCRYPT_AES256_KEY"; // jwhong
|
||||||
static final String INBOUND_REQUESTED_TIME = "INBOUND_REQUESTED_TIME"; // jwhong
|
static final String INBOUND_REQUESTED_TIME = "INBOUND_REQUESTED_TIME"; // jwhong
|
||||||
|
static final String GUID = "GUID"; // jwhong
|
||||||
|
static final String API_SERVICE_CODE = "API_SERVICE_CODE"; // jwhong
|
||||||
|
|
||||||
//응답 처리 용 표준 전문 오브젝트
|
//응답 처리 용 표준 전문 오브젝트
|
||||||
static final String STANDARD_MESSAGE_OBJECT = "STANDARD_MESSAGE_OBJECT";
|
static final String STANDARD_MESSAGE_OBJECT = "STANDARD_MESSAGE_OBJECT";
|
||||||
|
|||||||
@@ -24,7 +24,9 @@ public class HttpDynamicInAdapterManager implements Lifecycle {
|
|||||||
|
|
||||||
private static HttpDynamicInAdapterManager instance = new HttpDynamicInAdapterManager();
|
private static HttpDynamicInAdapterManager instance = new HttpDynamicInAdapterManager();
|
||||||
|
|
||||||
private ConcurrentHashMap<String, HttpDynamicInAdapterUri> adptUriMap = new ConcurrentHashMap<String, HttpDynamicInAdapterUri>();
|
//private ConcurrentHashMap<String, HttpDynamicInAdapterUri> adptUriMap = new ConcurrentHashMap<String, HttpDynamicInAdapterUri>();
|
||||||
|
public ConcurrentHashMap<String, HttpDynamicInAdapterUri> adptUriMap = new ConcurrentHashMap<String, HttpDynamicInAdapterUri>();
|
||||||
|
|
||||||
|
|
||||||
public static HttpDynamicInAdapterManager getInstance() {
|
public static HttpDynamicInAdapterManager getInstance() {
|
||||||
return instance;
|
return instance;
|
||||||
|
|||||||
+8
-1
@@ -224,17 +224,20 @@ public class HttpClientAccessTokenServiceWithParam implements HttpClientAccessTo
|
|||||||
logger.debug("contentType = [" + contentType + "]");
|
logger.debug("contentType = [" + contentType + "]");
|
||||||
logger.debug("encode = [" + encode + "]");
|
logger.debug("encode = [" + encode + "]");
|
||||||
|
|
||||||
|
OAuth2AccessTokenVO accessToken = new OAuth2AccessTokenVO();
|
||||||
try (CloseableHttpResponse response = httpClient.execute(httpPost)) {
|
try (CloseableHttpResponse response = httpClient.execute(httpPost)) {
|
||||||
if (response.getCode() != 200) {
|
if (response.getCode() != 200) {
|
||||||
|
System.out.println("OAuth token receive status fail value= "+ response.getCode());
|
||||||
throw new Exception("OAuth token receive status fail value= " + response.getCode());
|
throw new Exception("OAuth token receive status fail value= " + response.getCode());
|
||||||
}
|
}
|
||||||
|
System.out.println("OAuth token receive status SUCCESS value= "+ response.getCode());
|
||||||
|
|
||||||
HttpEntity entity = response.getEntity();
|
HttpEntity entity = response.getEntity();
|
||||||
String responseString = EntityUtils.toString(entity, encode);
|
String responseString = EntityUtils.toString(entity, encode);
|
||||||
logger.debug("oauthToken RECV = [" + responseString + "]");
|
logger.debug("oauthToken RECV = [" + responseString + "]");
|
||||||
|
|
||||||
if (StringUtils.isNotBlank(responseString)) {
|
if (StringUtils.isNotBlank(responseString)) {
|
||||||
OAuth2AccessTokenVO accessToken = new OAuth2AccessTokenVO();
|
//OAuth2AccessTokenVO accessToken = new OAuth2AccessTokenVO();
|
||||||
|
|
||||||
ObjectMapper objectMapper = new ObjectMapper();
|
ObjectMapper objectMapper = new ObjectMapper();
|
||||||
JsonNode responseJSON = objectMapper.readTree(responseString);
|
JsonNode responseJSON = objectMapper.readTree(responseString);
|
||||||
@@ -259,6 +262,10 @@ public class HttpClientAccessTokenServiceWithParam implements HttpClientAccessTo
|
|||||||
} else {
|
} else {
|
||||||
throw new Exception("oauth token return null");
|
throw new Exception("oauth token return null");
|
||||||
}
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
logger.error("[HttpClientAccessTokenServiceWithParam] retrieve accessToken exception :" + e.getMessage());
|
||||||
|
return accessToken;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -60,7 +60,6 @@ import com.ext.eai.common.stdmessage.STDMessageKeys;
|
|||||||
// safeDB
|
// safeDB
|
||||||
import com.eactive.ext.kjb.safedb.KjbSafedbWrapper;
|
import com.eactive.ext.kjb.safedb.KjbSafedbWrapper;
|
||||||
import com.eactive.ext.kjb.safedb.Utils;
|
import com.eactive.ext.kjb.safedb.Utils;
|
||||||
// until here
|
|
||||||
|
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
|
|||||||
@@ -2,11 +2,15 @@ package com.eactive.eai.common.logger;
|
|||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
public class HttpAdapterExtraHeaderVo {
|
public class HttpAdapterExtraHeaderVo {
|
||||||
private String name;
|
private String name;
|
||||||
|
|
||||||
private String value;
|
private String value;
|
||||||
|
|
||||||
|
public HttpAdapterExtraHeaderVo() {
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import java.util.List;
|
|||||||
public class HttpAdapterExtraLogVo {
|
public class HttpAdapterExtraLogVo {
|
||||||
private String guid;
|
private String guid;
|
||||||
private int serviceProcessNumber;
|
private int serviceProcessNumber;
|
||||||
|
private String prcsDate;
|
||||||
private String adapterGroupName;
|
private String adapterGroupName;
|
||||||
private String adapterName;
|
private String adapterName;
|
||||||
private String url;
|
private String url;
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package com.eactive.eai.common.logger.async;
|
|||||||
import com.eactive.eai.common.property.PropManager;
|
import com.eactive.eai.common.property.PropManager;
|
||||||
import com.eactive.eai.common.server.EAIServerManager;
|
import com.eactive.eai.common.server.EAIServerManager;
|
||||||
import com.eactive.eai.common.util.LogKeys;
|
import com.eactive.eai.common.util.LogKeys;
|
||||||
import com.eactive.eai.data.entity.onl.logger.HttpAdapterExtraHeader;
|
//import com.eactive.eai.data.entity.onl.logger.HttpAdapterExtraHeader;
|
||||||
import com.eactive.eai.data.entity.onl.logger.HttpAdapterExtraLog;
|
import com.eactive.eai.data.entity.onl.logger.HttpAdapterExtraLog;
|
||||||
import com.zaxxer.hikari.HikariConfig;
|
import com.zaxxer.hikari.HikariConfig;
|
||||||
import com.zaxxer.hikari.HikariDataSource;
|
import com.zaxxer.hikari.HikariDataSource;
|
||||||
@@ -66,7 +66,7 @@ public class HttpAdapterExtraLogH2Factory {
|
|||||||
|
|
||||||
// 엔티티 클래스 추가
|
// 엔티티 클래스 추가
|
||||||
configuration.addAnnotatedClass(HttpAdapterExtraLog.class);
|
configuration.addAnnotatedClass(HttpAdapterExtraLog.class);
|
||||||
configuration.addAnnotatedClass(HttpAdapterExtraHeader.class);
|
// configuration.addAnnotatedClass(HttpAdapterExtraHeader.class);
|
||||||
|
|
||||||
return configuration.buildSessionFactory();
|
return configuration.buildSessionFactory();
|
||||||
} catch (Throwable ex) {
|
} catch (Throwable ex) {
|
||||||
|
|||||||
+22
-22
@@ -1,22 +1,22 @@
|
|||||||
package com.eactive.eai.common.logger.mapper;
|
//package com.eactive.eai.common.logger.mapper;
|
||||||
|
//
|
||||||
import com.eactive.eai.common.logger.HttpAdapterExtraHeaderVo;
|
//import com.eactive.eai.common.logger.HttpAdapterExtraHeaderVo;
|
||||||
import com.eactive.eai.data.entity.onl.logger.HttpAdapterExtraHeader;
|
//import com.eactive.eai.data.entity.onl.logger.HttpAdapterExtraHeader;
|
||||||
import com.eactive.eai.data.mapper.BaseMapperConfig;
|
//import com.eactive.eai.data.mapper.BaseMapperConfig;
|
||||||
import com.eactive.eai.data.mapper.GenericMapper;
|
//import com.eactive.eai.data.mapper.GenericMapper;
|
||||||
|
//
|
||||||
import org.mapstruct.InheritInverseConfiguration;
|
//import org.mapstruct.InheritInverseConfiguration;
|
||||||
import org.mapstruct.Mapper;
|
//import org.mapstruct.Mapper;
|
||||||
import org.mapstruct.Mapping;
|
//import org.mapstruct.Mapping;
|
||||||
|
//
|
||||||
@Mapper(config = BaseMapperConfig.class)
|
//@Mapper(config = BaseMapperConfig.class)
|
||||||
public interface HttpAdapterExtraHeaderMapper extends GenericMapper<HttpAdapterExtraHeaderVo, HttpAdapterExtraHeader> {
|
//public interface HttpAdapterExtraHeaderMapper extends GenericMapper<HttpAdapterExtraHeaderVo, HttpAdapterExtraHeader> {
|
||||||
|
//
|
||||||
@Override
|
// @Override
|
||||||
@Mapping(source = "id.name", target = "name")
|
// @Mapping(source = "id.name", target = "name")
|
||||||
HttpAdapterExtraHeaderVo toVo(HttpAdapterExtraHeader entity);
|
// HttpAdapterExtraHeaderVo toVo(HttpAdapterExtraHeader entity);
|
||||||
|
//
|
||||||
@Override
|
// @Override
|
||||||
@InheritInverseConfiguration
|
// @InheritInverseConfiguration
|
||||||
HttpAdapterExtraHeader toEntity(HttpAdapterExtraHeaderVo vo);
|
// HttpAdapterExtraHeader toEntity(HttpAdapterExtraHeaderVo vo);
|
||||||
}
|
//}
|
||||||
|
|||||||
@@ -1,42 +1,80 @@
|
|||||||
package com.eactive.eai.common.logger.mapper;
|
package com.eactive.eai.common.logger.mapper;
|
||||||
|
|
||||||
|
import com.eactive.eai.common.logger.HttpAdapterExtraHeaderVo;
|
||||||
import com.eactive.eai.common.logger.HttpAdapterExtraLogVo;
|
import com.eactive.eai.common.logger.HttpAdapterExtraLogVo;
|
||||||
import com.eactive.eai.data.entity.onl.logger.HttpAdapterExtraHeaderId;
|
|
||||||
import com.eactive.eai.data.entity.onl.logger.HttpAdapterExtraLog;
|
import com.eactive.eai.data.entity.onl.logger.HttpAdapterExtraLog;
|
||||||
import com.eactive.eai.data.mapper.BaseMapperConfig;
|
import com.eactive.eai.data.mapper.BaseMapperConfig;
|
||||||
import com.eactive.eai.data.mapper.GenericMapper;
|
import com.eactive.eai.data.mapper.GenericMapper;
|
||||||
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
|
import com.fasterxml.jackson.core.type.TypeReference;
|
||||||
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.mapstruct.*;
|
import org.mapstruct.*;
|
||||||
|
|
||||||
import java.time.DayOfWeek;
|
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.util.Optional;
|
import java.time.format.DateTimeFormatter;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@Mapper(config = BaseMapperConfig.class, uses = HttpAdapterExtraHeaderMapper.class)
|
@Slf4j
|
||||||
public interface HttpAdapterExtraLogMapper extends GenericMapper<HttpAdapterExtraLogVo, HttpAdapterExtraLog> {
|
@Mapper(config = BaseMapperConfig.class)
|
||||||
|
public abstract class HttpAdapterExtraLogMapper implements GenericMapper<HttpAdapterExtraLogVo, HttpAdapterExtraLog> {
|
||||||
|
|
||||||
|
private final static ObjectMapper objectMapper = new ObjectMapper();
|
||||||
|
private static final DateTimeFormatter SDF_YYYYMMDD = DateTimeFormatter.ofPattern( "yyyyMMdd");
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Mapping(source = "id.guid", target = "guid")
|
@Mapping(source = "id.guid", target = "guid")
|
||||||
@Mapping(source = "id.serviceProcessNumber", target = "serviceProcessNumber")
|
@Mapping(source = "id.serviceProcessNumber", target = "serviceProcessNumber")
|
||||||
HttpAdapterExtraLogVo toVo(HttpAdapterExtraLog entity);
|
abstract public HttpAdapterExtraLogVo toVo(HttpAdapterExtraLog entity);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@InheritInverseConfiguration
|
@InheritInverseConfiguration
|
||||||
HttpAdapterExtraLog toEntity(HttpAdapterExtraLogVo vo);
|
abstract public HttpAdapterExtraLog toEntity(HttpAdapterExtraLogVo vo);
|
||||||
|
|
||||||
@AfterMapping
|
@AfterMapping
|
||||||
default void setHeaderIdAndWeekday(@MappingTarget HttpAdapterExtraLog entity, HttpAdapterExtraLogVo vo) {
|
public void voToEntity(@MappingTarget HttpAdapterExtraLog entity, HttpAdapterExtraLogVo vo) {
|
||||||
DayOfWeek dayOfWeek = LocalDate.now().getDayOfWeek(); // 현재 요일
|
|
||||||
int dayOfWeekNumber = dayOfWeek.getValue() % 7 + 1; // 1 (일요일)부터 7 (토요일)까지
|
// 1. Set weekday for partition table
|
||||||
entity.getId().setWeekday(dayOfWeekNumber);
|
// DayOfWeek dayOfWeek = LocalDate.now().getDayOfWeek(); // 현재 요일
|
||||||
Optional.ofNullable(entity.getHeaderList())
|
// int dayOfWeekNumber = dayOfWeek.getValue() % 7 + 1; // 1 (일요일)부터 7 (토요일)까지
|
||||||
.ifPresent(headers -> headers.forEach(header -> {
|
// entity.getId().setWeekday(dayOfWeekNumber);
|
||||||
if (header.getId() == null) {
|
|
||||||
header.setId(new HttpAdapterExtraHeaderId());
|
// String prcs_date = SDF_YYYYMMDD.format(ZonedDateTime.now());
|
||||||
}
|
String prcs_date = LocalDate.now().format(SDF_YYYYMMDD);
|
||||||
header.getId().setWeekday(dayOfWeekNumber);
|
entity.getId().setPrcsDate(prcs_date);
|
||||||
header.getId().setGuid(vo.getGuid());
|
|
||||||
header.getId().setServiceProcessNumber(vo.getServiceProcessNumber());
|
// 2. Set Content
|
||||||
}));
|
try {
|
||||||
|
String headerContent = objectMapper.writeValueAsString(vo.getHeaderList());
|
||||||
|
entity.setHeaderContent(headerContent);
|
||||||
|
} catch (JsonProcessingException e) {
|
||||||
|
log.warn("Http Header Json Parse 실패", e);
|
||||||
|
entity.setHeaderContent("[{ \"error\": \"parse error\"}]");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Entity → VO 변환 후 추가 처리
|
||||||
|
*/
|
||||||
|
@AfterMapping
|
||||||
|
protected void entityToVo(@MappingTarget HttpAdapterExtraLogVo vo, HttpAdapterExtraLog entity) {
|
||||||
|
String headerContent = entity.getHeaderContent();
|
||||||
|
if (headerContent == null || headerContent.isEmpty()) {
|
||||||
|
vo.setHeaderList(Collections.emptyList());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
List<HttpAdapterExtraHeaderVo> headerList = objectMapper.readValue(
|
||||||
|
headerContent,
|
||||||
|
new TypeReference<List<HttpAdapterExtraHeaderVo>>() {}
|
||||||
|
);
|
||||||
|
vo.setHeaderList(headerList);
|
||||||
|
} catch (JsonProcessingException e) {
|
||||||
|
log.warn("Http Header 역직렬화 실패", e);
|
||||||
|
vo.setHeaderList(Collections.emptyList());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -101,7 +101,7 @@ public class HttpAdapterExtraLogUtil {
|
|||||||
public static List<HttpAdapterExtraHeaderVo> convertHeaderToListOfHttpAdapterExtraHeaderVo(Header[] headers) {
|
public static List<HttpAdapterExtraHeaderVo> convertHeaderToListOfHttpAdapterExtraHeaderVo(Header[] headers) {
|
||||||
Set<String> seenNames = new HashSet<>();
|
Set<String> seenNames = new HashSet<>();
|
||||||
return Arrays.stream(headers)
|
return Arrays.stream(headers)
|
||||||
.filter(header -> seenNames.add(header.getName())) // 중복된 이름을 스킵
|
// .filter(header -> seenNames.add(header.getName())) // 중복된 이름을 스킵
|
||||||
.map(header -> new HttpAdapterExtraHeaderVo(header.getName(), header.getValue()))
|
.map(header -> new HttpAdapterExtraHeaderVo(header.getName(), header.getValue()))
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -121,7 +121,11 @@ public class RequestProcessor extends RequestProcessorSupport {
|
|||||||
String bidInterface = adptGrpVO.getBidInterface();
|
String bidInterface = adptGrpVO.getBidInterface();
|
||||||
String testMasterYn = adptGrpVO.getTestMasterYn();
|
String testMasterYn = adptGrpVO.getTestMasterYn();
|
||||||
|
|
||||||
// UUID 생성 : UUID = "-" 없는 32자리 UUID(광주은행 요청)
|
// UUID 생성 : UUID에서 - 없는 32자리
|
||||||
|
String uuid = "";
|
||||||
|
uuid = UUIDGenerator.getUUID().toString().replaceAll("-", "");
|
||||||
|
// UUID 생성 : UUID = server구분4자리 + UUID
|
||||||
|
/*
|
||||||
String uuid = "";
|
String uuid = "";
|
||||||
uuid = UUIDGenerator.getUUID().toString().replaceAll("-", "");
|
uuid = UUIDGenerator.getUUID().toString().replaceAll("-", "");
|
||||||
|
|
||||||
@@ -135,6 +139,7 @@ public class RequestProcessor extends RequestProcessorSupport {
|
|||||||
// if (logger.isError()) logger.error(rspErrorMsg);
|
// if (logger.isError()) logger.error(rspErrorMsg);
|
||||||
// throw new RequestProcessorException(rspErrorMsg);
|
// throw new RequestProcessorException(rspErrorMsg);
|
||||||
// }
|
// }
|
||||||
|
*/
|
||||||
|
|
||||||
ProcessVO vo = new ProcessVO();
|
ProcessVO vo = new ProcessVO();
|
||||||
vo.setAdapterGroupName(adapterGroupName);
|
vo.setAdapterGroupName(adapterGroupName);
|
||||||
@@ -337,7 +342,9 @@ public class RequestProcessor extends RequestProcessorSupport {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 3. EAIMessage Object 생성
|
// 3. EAIMessage Object 생성
|
||||||
String eaiSvcCd = mapper.getEaiSvcCode(standardMessage);
|
//String eaiSvcCd = mapper.getEaiSvcCode(standardMessage); // commnet by jwhong
|
||||||
|
String eaiSvcCd = prop.getProperty("API_SERVICE_CODE");
|
||||||
|
System.out.println("***** eaiSvcCd is"+ eaiSvcCd);
|
||||||
String guid = mapper.getGuid(standardMessage);
|
String guid = mapper.getGuid(standardMessage);
|
||||||
String guidSeq = mapper.getGuidSeq(standardMessage);
|
String guidSeq = mapper.getGuidSeq(standardMessage);
|
||||||
String returnType = mapper.getSendRecvDivision(standardMessage); // S|R
|
String returnType = mapper.getSendRecvDivision(standardMessage); // S|R
|
||||||
|
|||||||
@@ -440,6 +440,7 @@ public class RESTProcess extends HTTPProcess {
|
|||||||
PropertiesUtil.copyPropertyIfPresent(this.callProp, this.tempProp, HttpAdapterServiceKey.INBOUND_REMOTE_ADDR);
|
PropertiesUtil.copyPropertyIfPresent(this.callProp, this.tempProp, HttpAdapterServiceKey.INBOUND_REMOTE_ADDR);
|
||||||
PropertiesUtil.copyPropertyIfPresent(this.callProp, this.tempProp, HttpAdapterServiceKey.INBOUND_SCHEME);
|
PropertiesUtil.copyPropertyIfPresent(this.callProp, this.tempProp, HttpAdapterServiceKey.INBOUND_SCHEME);
|
||||||
PropertiesUtil.copyPropertyIfPresent(this.callProp, this.tempProp, HttpAdapterServiceKey.INBOUND_REQUESTED_TIME); // jwhong
|
PropertiesUtil.copyPropertyIfPresent(this.callProp, this.tempProp, HttpAdapterServiceKey.INBOUND_REQUESTED_TIME); // jwhong
|
||||||
|
PropertiesUtil.copyPropertyIfPresent(this.callProp, this.tempProp, HttpAdapterServiceKey.GUID); // jwhong
|
||||||
|
|
||||||
String svcName = getServiceId(this.reqEaiMsg);
|
String svcName = getServiceId(this.reqEaiMsg);
|
||||||
if (svcName == null) {
|
if (svcName == null) {
|
||||||
|
|||||||
Reference in New Issue
Block a user