|
@@ -4,6 +4,7 @@ import NiceID.Check.CPClient;
|
|
|
import com.gagaframework.web.parameter.GagaMap;
|
|
import com.gagaframework.web.parameter.GagaMap;
|
|
|
import com.gagaframework.web.util.GagaDateUtil;
|
|
import com.gagaframework.web.util.GagaDateUtil;
|
|
|
import com.gagaframework.web.util.GagaFileUtil;
|
|
import com.gagaframework.web.util.GagaFileUtil;
|
|
|
|
|
+import com.style24.core.support.session.TscSession;
|
|
|
import com.style24.front.support.security.session.TsfSession;
|
|
import com.style24.front.support.security.session.TsfSession;
|
|
|
import com.style24.persistence.domain.Customer;
|
|
import com.style24.persistence.domain.Customer;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
@@ -33,6 +34,9 @@ public class NiceCertify {
|
|
|
private String niceId; // 나이스휴대폰인증ID
|
|
private String niceId; // 나이스휴대폰인증ID
|
|
|
private String nicePwd; // 나이스휴대폰인증비밀번호
|
|
private String nicePwd; // 나이스휴대폰인증비밀번호
|
|
|
private String niceCallback; // 나이스휴대폰인증콜백URL
|
|
private String niceCallback; // 나이스휴대폰인증콜백URL
|
|
|
|
|
+ private String ipinId; // 나이스아이핀인증ID
|
|
|
|
|
+ private String ipinPwd; // 나이스아이핀인증비밀번호
|
|
|
|
|
+ private String ipinCallback; // 나이스아이핀콜백URL
|
|
|
private String domain;
|
|
private String domain;
|
|
|
|
|
|
|
|
@PostConstruct
|
|
@PostConstruct
|
|
@@ -40,30 +44,36 @@ public class NiceCertify {
|
|
|
niceId = env.getProperty("certify.nice.id");
|
|
niceId = env.getProperty("certify.nice.id");
|
|
|
nicePwd = env.getProperty("certify.nice.pwd");
|
|
nicePwd = env.getProperty("certify.nice.pwd");
|
|
|
niceCallback = env.getProperty("certify.nice.callback");
|
|
niceCallback = env.getProperty("certify.nice.callback");
|
|
|
|
|
+ ipinId = env.getProperty("certify.ipin.id");
|
|
|
|
|
+ ipinPwd = env.getProperty("certify.ipin.pwd");
|
|
|
|
|
+ ipinCallback = env.getProperty("certify.ipin.callback");
|
|
|
domain = env.getProperty("domain.front");
|
|
domain = env.getProperty("domain.front");
|
|
|
log.info("\n\n---- NiceCertify initialization started ----");
|
|
log.info("\n\n---- NiceCertify initialization started ----");
|
|
|
log.info("나이스휴대폰인증(ID: {}, PWD: {}, callback: {})", niceId, nicePwd, domain + niceCallback);
|
|
log.info("나이스휴대폰인증(ID: {}, PWD: {}, callback: {})", niceId, nicePwd, domain + niceCallback);
|
|
|
|
|
+ log.info("나이스아이핀인증(ID: {}, PWD: {}, callback: {})", ipinId, ipinPwd, domain + ipinCallback);
|
|
|
log.info("\n--- NiceCertify initialization completed ----\n");
|
|
log.info("\n--- NiceCertify initialization completed ----\n");
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * 나이스 인증 처리
|
|
|
|
|
|
|
+ * 휴대폰인증 요청
|
|
|
* @return GagaMap
|
|
* @return GagaMap
|
|
|
* @author jsshin
|
|
* @author jsshin
|
|
|
* @since 2021. 02. 05
|
|
* @since 2021. 02. 05
|
|
|
*/
|
|
*/
|
|
|
- public GagaMap certify() {
|
|
|
|
|
|
|
+ public GagaMap certifyCellPhone() {
|
|
|
CPClient niceCheck = new CPClient();
|
|
CPClient niceCheck = new CPClient();
|
|
|
|
|
|
|
|
String sRequestNo = niceCheck.getRequestNO(niceId);
|
|
String sRequestNo = niceCheck.getRequestNO(niceId);
|
|
|
log.info("sRequestNo: {}", sRequestNo);
|
|
log.info("sRequestNo: {}", sRequestNo);
|
|
|
|
|
+ TscSession.setAttribute("REQ_SEQ", sRequestNo);
|
|
|
|
|
|
|
|
- String callback = GagaFileUtil.getConcatenationPath("https://" + TsfSession.getHttpServletRequest().getServerName(), niceCallback);
|
|
|
|
|
|
|
+ String callback = GagaFileUtil.getConcatenationPath("http://" + TsfSession.getHttpServletRequest().getServerName(), niceCallback);
|
|
|
log.info("niceCallback: {}", niceCallback);
|
|
log.info("niceCallback: {}", niceCallback);
|
|
|
|
|
|
|
|
String sAuthType = "M"; // 없으면 기본 선택화면, M: 휴대폰, C: 신용카드, X: 공인인증서
|
|
String sAuthType = "M"; // 없으면 기본 선택화면, M: 휴대폰, C: 신용카드, X: 공인인증서
|
|
|
String sPopGubun = "N"; // Y: 취소버튼 있음, N: 취소버튼 없음
|
|
String sPopGubun = "N"; // Y: 취소버튼 있음, N: 취소버튼 없음
|
|
|
String sCustomize = ""; // 없으면 기본 웹페이지, Mobile: 모바일페이지
|
|
String sCustomize = ""; // 없으면 기본 웹페이지, Mobile: 모바일페이지
|
|
|
|
|
+ String sGender = ""; //없으면 기본 선택 값, 0 : 여자, 1 : 남자
|
|
|
|
|
|
|
|
// 입력될 plain 데이타를 만든다.
|
|
// 입력될 plain 데이타를 만든다.
|
|
|
StringBuilder sPlainData = new StringBuilder();
|
|
StringBuilder sPlainData = new StringBuilder();
|
|
@@ -74,26 +84,42 @@ public class NiceCertify {
|
|
|
sPlainData.append("7:ERR_URL").append(callback.getBytes().length).append(":").append(callback);
|
|
sPlainData.append("7:ERR_URL").append(callback.getBytes().length).append(":").append(callback);
|
|
|
sPlainData.append("11:POPUP_GUBUN").append(sPopGubun.getBytes().length).append(":").append(sPopGubun);
|
|
sPlainData.append("11:POPUP_GUBUN").append(sPopGubun.getBytes().length).append(":").append(sPopGubun);
|
|
|
sPlainData.append("9:CUSTOMIZE").append(sCustomize.getBytes().length).append(":").append(sCustomize);
|
|
sPlainData.append("9:CUSTOMIZE").append(sCustomize.getBytes().length).append(":").append(sCustomize);
|
|
|
|
|
+ sPlainData.append("6:GENDER").append(sGender.getBytes().length).append(":").append(sGender);
|
|
|
log.info("sPlainData: {}", sPlainData);
|
|
log.info("sPlainData: {}", sPlainData);
|
|
|
|
|
|
|
|
GagaMap resultMap = new GagaMap();
|
|
GagaMap resultMap = new GagaMap();
|
|
|
|
|
|
|
|
// 실제적인 암호화
|
|
// 실제적인 암호화
|
|
|
int iRtn = niceCheck.fnEncode(niceId, nicePwd, sPlainData.toString());
|
|
int iRtn = niceCheck.fnEncode(niceId, nicePwd, sPlainData.toString());
|
|
|
- resultMap.setInt("iRtn", iRtn);
|
|
|
|
|
log.info("iRtn: {}", iRtn);
|
|
log.info("iRtn: {}", iRtn);
|
|
|
-
|
|
|
|
|
if (iRtn != 0) { // 실패했으면
|
|
if (iRtn != 0) { // 실패했으면
|
|
|
- throw new IllegalStateException("안심본인인증을 사용할 수 없습니다.");
|
|
|
|
|
|
|
+ String errorMsg = "[" + iRtn + "]";
|
|
|
|
|
+ if ( iRtn == -1) {
|
|
|
|
|
+ errorMsg = "암호화 시스템 에러입니다.";
|
|
|
|
|
+ }
|
|
|
|
|
+ else if( iRtn == -2) {
|
|
|
|
|
+ errorMsg = "암호화 처리오류입니다.";
|
|
|
|
|
+ }
|
|
|
|
|
+ else if( iRtn == -3) {
|
|
|
|
|
+ errorMsg = "암호화 데이터 오류입니다.";
|
|
|
|
|
+ }
|
|
|
|
|
+ else if( iRtn == -9) {
|
|
|
|
|
+ errorMsg = "입력 데이터 오류입니다.";
|
|
|
|
|
+ }
|
|
|
|
|
+ else {
|
|
|
|
|
+ errorMsg = "알수 없는 에러 입니다.";
|
|
|
|
|
+ }
|
|
|
|
|
+ throw new IllegalStateException(errorMsg +"\n 안심본인인증을 사용할 수 없습니다.");
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ resultMap.setInt("iRtn", iRtn);
|
|
|
resultMap.setString("sEncData", niceCheck.getCipherData());
|
|
resultMap.setString("sEncData", niceCheck.getCipherData());
|
|
|
|
|
|
|
|
return resultMap;
|
|
return resultMap;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * 나이스 인증 결과값
|
|
|
|
|
|
|
+ * 휴대폰 인증 결과값
|
|
|
* @param customer - 인증정보
|
|
* @param customer - 인증정보
|
|
|
* @return GagaMap
|
|
* @return GagaMap
|
|
|
* @author jsshin
|
|
* @author jsshin
|
|
@@ -101,7 +127,7 @@ public class NiceCertify {
|
|
|
*/
|
|
*/
|
|
|
public GagaMap getCertifyResultInfo(Customer customer) {
|
|
public GagaMap getCertifyResultInfo(Customer customer) {
|
|
|
GagaMap resultMap = new GagaMap();
|
|
GagaMap resultMap = new GagaMap();
|
|
|
- String sEncData = customer.getEncData();
|
|
|
|
|
|
|
+ String sEncData = requestReplace(customer.getEncData(),"encodeData");
|
|
|
|
|
|
|
|
if (StringUtils.isBlank(sEncData)) {
|
|
if (StringUtils.isBlank(sEncData)) {
|
|
|
throw new IllegalStateException("안심본인인증을 사용할 수 없습니다.");
|
|
throw new IllegalStateException("안심본인인증을 사용할 수 없습니다.");
|
|
@@ -112,38 +138,54 @@ public class NiceCertify {
|
|
|
if (iRtn != 0) {
|
|
if (iRtn != 0) {
|
|
|
String errorMsg = "[" + iRtn + "]";
|
|
String errorMsg = "[" + iRtn + "]";
|
|
|
if (iRtn == -1) {
|
|
if (iRtn == -1) {
|
|
|
- errorMsg = errorMsg + "암호화 시스템 에러";
|
|
|
|
|
|
|
+ errorMsg = errorMsg + "복호화 시스템 오류입니다.";
|
|
|
} else if (iRtn == -4) {
|
|
} else if (iRtn == -4) {
|
|
|
- errorMsg = errorMsg + "입력 데이터 오류";
|
|
|
|
|
|
|
+ errorMsg = errorMsg + "복호화 처리 오류입니다.";
|
|
|
} else if (iRtn == -5) {
|
|
} else if (iRtn == -5) {
|
|
|
- errorMsg = errorMsg + "복호화 해쉬 오류";
|
|
|
|
|
|
|
+ errorMsg = errorMsg + "복호화 해쉬 오류입니다.";
|
|
|
} else if (iRtn == -6) {
|
|
} else if (iRtn == -6) {
|
|
|
- errorMsg = errorMsg + "복호화 데이터 오류";
|
|
|
|
|
|
|
+ errorMsg = errorMsg + "복호화 데이터 오류입니다.";
|
|
|
} else if (iRtn == -9) {
|
|
} else if (iRtn == -9) {
|
|
|
- errorMsg = errorMsg + "입력 데이터 오류";
|
|
|
|
|
|
|
+ errorMsg = errorMsg + "입력 데이터 오류입니다.";
|
|
|
} else if (iRtn == -12) {
|
|
} else if (iRtn == -12) {
|
|
|
- errorMsg = errorMsg + "사이트 비밀번호 오류";
|
|
|
|
|
|
|
+ errorMsg = errorMsg + "사이트 패스워드 오류입니다.";
|
|
|
} else {
|
|
} else {
|
|
|
errorMsg = errorMsg + "결과값 확인 후, NICE신용평가정보 개발 담당자에게 문의";
|
|
errorMsg = errorMsg + "결과값 확인 후, NICE신용평가정보 개발 담당자에게 문의";
|
|
|
}
|
|
}
|
|
|
throw new IllegalStateException(errorMsg);
|
|
throw new IllegalStateException(errorMsg);
|
|
|
}
|
|
}
|
|
|
- String sPlan = niceCheck.getPlainData();
|
|
|
|
|
- HashMap result = niceCheck.fnParse(sPlan);
|
|
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ String sPlainData = niceCheck.getPlainData();
|
|
|
|
|
+ String sCipherTime = niceCheck.getCipherDateTime(); // 복호화한 시간
|
|
|
|
|
+ HashMap result = niceCheck.fnParse(sPlainData);
|
|
|
|
|
+
|
|
|
log.info("휴대폰 인증 결과 값 : {}", result.toString());
|
|
log.info("휴대폰 인증 결과 값 : {}", result.toString());
|
|
|
|
|
|
|
|
if (result == null && result.isEmpty()) {
|
|
if (result == null && result.isEmpty()) {
|
|
|
throw new IllegalStateException("응답값 무효 본인인증을 사용할 수 없습니다.");
|
|
throw new IllegalStateException("응답값 무효 본인인증을 사용할 수 없습니다.");
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- String sAuthType = (String)result.get("AUTH_TYPE");
|
|
|
|
|
- String sName = (String)result.get("NAME");
|
|
|
|
|
- String sGender = (String)result.get("GENDER"); // F:여성, M:남성
|
|
|
|
|
- String sBirthDate = (String)result.get("BIRTHDATE");
|
|
|
|
|
- String sNationalInfo = (String)result.get("NATIONALINFO");
|
|
|
|
|
- String sDi = (String)result.get("DI");
|
|
|
|
|
- String sCi = (String)result.get("CI");
|
|
|
|
|
- String sMobileNo = (String)result.get("MOBILE_NO");
|
|
|
|
|
|
|
+ String sRequestNumber = (String)result.get("REQ_SEQ"); // 요청 번호
|
|
|
|
|
+ String sResponseNumber = (String)result.get("RES_SEQ"); // 인증 고유번호
|
|
|
|
|
+ String sAuthType = (String)result.get("AUTH_TYPE"); // 인증 수단
|
|
|
|
|
+ String sName = (String)result.get("NAME"); // 성명
|
|
|
|
|
+ String sGender = (String)result.get("GENDER"); // 성별 F:여성, M:남성
|
|
|
|
|
+ String sBirthDate = (String)result.get("BIRTHDATE"); // 생년월일(YYYYMMDD)
|
|
|
|
|
+ String sNationalInfo = (String)result.get("NATIONALINFO"); // 내/외국인정보 0:내국인, 1:외국인
|
|
|
|
|
+ String sDi = (String)result.get("DI"); // 중복가입 확인값 (DI_64 byte)
|
|
|
|
|
+ String sCi = (String)result.get("CI"); // 연계정보 확인값 (CI_88 byte) 주문번호 1:1 이다.
|
|
|
|
|
+ String sMobileNo = (String)result.get("MOBILE_NO"); // 휴대폰번호
|
|
|
|
|
+ String sMobileCo = (String)result.get("MOBILE_CO"); // 통신사
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ String sRequestNo = TscSession.getAttribute("REQ_SEQ"); // 세션에 저장된 요청번호
|
|
|
|
|
+ if (!sRequestNo.equals(sRequestNumber)) {
|
|
|
|
|
+ sResponseNumber = "";
|
|
|
|
|
+ sAuthType = "";
|
|
|
|
|
+ throw new IllegalStateException("세션값 불일치 오류 입니다.");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
String sAdult = ""; // 미성년 : 0, 성인 : 1
|
|
String sAdult = ""; // 미성년 : 0, 성인 : 1
|
|
|
String foreignerYn = ""; // 외국인여부(외국인:Y)
|
|
String foreignerYn = ""; // 외국인여부(외국인:Y)
|
|
|
|
|
|
|
@@ -171,11 +213,28 @@ public class NiceCertify {
|
|
|
resultMap.setString("sDi", sDi);
|
|
resultMap.setString("sDi", sDi);
|
|
|
resultMap.setString("sCi", sCi);
|
|
resultMap.setString("sCi", sCi);
|
|
|
resultMap.setString("cellPhnno", sMobileNo);
|
|
resultMap.setString("cellPhnno", sMobileNo);
|
|
|
|
|
+ resultMap.setString("sMobileCo", sMobileCo);
|
|
|
resultMap.setString("adult", sAdult);
|
|
resultMap.setString("adult", sAdult);
|
|
|
|
|
|
|
|
return resultMap;
|
|
return resultMap;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ public GagaMap certifyIpin() {
|
|
|
|
|
+ IPIN2Client ipinClinet = new IPIN2Client();
|
|
|
|
|
+ String Callback = GagaFileUtil.getConcatenationPath("https://" + TsfSession.getHttpServletRequest().getServerName(), ipinCallback);
|
|
|
|
|
+ String sCPRequestNo = ipinClinet.getRequestNO(ipinId);
|
|
|
|
|
+
|
|
|
|
|
+ int iRtn = ipinClinet.fnRequest(ipinId, ipinPwd, sCPRequestNo, Callback);
|
|
|
|
|
+
|
|
|
|
|
+ if (iRtn != 0) { // 실패했으면
|
|
|
|
|
+ throw new IllegalStateException("안심본인인증을 사용할 수 없습니다.");
|
|
|
|
|
+ }
|
|
|
|
|
+ GagaMap resultMap = new GagaMap();
|
|
|
|
|
+ resultMap.setString("sEncData", ipinClinet.getCipherData());
|
|
|
|
|
+ return resultMap;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* 성인여부
|
|
* 성인여부
|
|
|
* @param birthDate
|
|
* @param birthDate
|
|
@@ -202,5 +261,44 @@ public class NiceCertify {
|
|
|
return sAdult;
|
|
return sAdult;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ public String requestReplace (String paramValue, String gubun) {
|
|
|
|
|
+
|
|
|
|
|
+ String result = "";
|
|
|
|
|
+
|
|
|
|
|
+ if (paramValue != null) {
|
|
|
|
|
+
|
|
|
|
|
+ paramValue = paramValue.replaceAll("<", "<").replaceAll(">", ">");
|
|
|
|
|
+
|
|
|
|
|
+ paramValue = paramValue.replaceAll("\\*", "");
|
|
|
|
|
+ paramValue = paramValue.replaceAll("\\?", "");
|
|
|
|
|
+ paramValue = paramValue.replaceAll("\\[", "");
|
|
|
|
|
+ paramValue = paramValue.replaceAll("\\{", "");
|
|
|
|
|
+ paramValue = paramValue.replaceAll("\\(", "");
|
|
|
|
|
+ paramValue = paramValue.replaceAll("\\)", "");
|
|
|
|
|
+ paramValue = paramValue.replaceAll("\\^", "");
|
|
|
|
|
+ paramValue = paramValue.replaceAll("\\$", "");
|
|
|
|
|
+ paramValue = paramValue.replaceAll("'", "");
|
|
|
|
|
+ paramValue = paramValue.replaceAll("@", "");
|
|
|
|
|
+ paramValue = paramValue.replaceAll("%", "");
|
|
|
|
|
+ paramValue = paramValue.replaceAll(";", "");
|
|
|
|
|
+ paramValue = paramValue.replaceAll(":", "");
|
|
|
|
|
+ paramValue = paramValue.replaceAll("-", "");
|
|
|
|
|
+ paramValue = paramValue.replaceAll("#", "");
|
|
|
|
|
+ paramValue = paramValue.replaceAll("--", "");
|
|
|
|
|
+ paramValue = paramValue.replaceAll("-", "");
|
|
|
|
|
+ paramValue = paramValue.replaceAll(",", "");
|
|
|
|
|
+
|
|
|
|
|
+ if(!"encodeData".equals(gubun)){
|
|
|
|
|
+ paramValue = paramValue.replaceAll("\\+", "");
|
|
|
|
|
+ paramValue = paramValue.replaceAll("/", "");
|
|
|
|
|
+ paramValue = paramValue.replaceAll("=", "");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ result = paramValue;
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+ return result;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
|
|
|
}
|
|
}
|