diff --git a/.gitignore b/.gitignore index f1e66539..55ca6f84 100644 --- a/.gitignore +++ b/.gitignore @@ -203,3 +203,10 @@ rebel.xml /mvnw.cmd /.gemini.zip /CLAUDE.md + +<<<<<<< HEAD +# Mac OS +======= +### Mac OS ### +>>>>>>> refs/heads/5419_전화번호거짓표시50건이상 +.DS_Store \ No newline at end of file diff --git a/pom.xml b/pom.xml index fd1e0201..c7ddbe01 100644 --- a/pom.xml +++ b/pom.xml @@ -477,12 +477,19 @@ - + + + + + kmc + ICERTSecu + JDK18_v2 diff --git a/src/main/java/itn/let/cert/phone/web/CertPhoneWebController.java b/src/main/java/itn/let/cert/phone/web/CertPhoneWebController.java index 3aeccb1f..b35fa156 100644 --- a/src/main/java/itn/let/cert/phone/web/CertPhoneWebController.java +++ b/src/main/java/itn/let/cert/phone/web/CertPhoneWebController.java @@ -34,12 +34,11 @@ public class CertPhoneWebController { @RequestMapping(value = {"/web/cert/log/insertCertLog.do"}) public ResponseEntity insertCertLog(HttpServletRequest request) throws Exception { - - - - - - return ResponseEntity.ok().body(new StatusResponse(HttpStatus.OK, certPhoneService.insertCertLog(request), LocalDateTime.now())); - } + } + + @RequestMapping(value = {"/web/cert/log/kmcErrorPage.do"}) + public String kmcErrorPage() throws Exception { + return "web/cop/kmc/certResultError"; + } } \ No newline at end of file diff --git a/src/main/java/itn/let/mjo/addr/web/AddrGroupController.java b/src/main/java/itn/let/mjo/addr/web/AddrGroupController.java index 4ecb759b..2753f7b4 100644 --- a/src/main/java/itn/let/mjo/addr/web/AddrGroupController.java +++ b/src/main/java/itn/let/mjo/addr/web/AddrGroupController.java @@ -74,7 +74,7 @@ public class AddrGroupController { private EgovMberManageService mberManageService; @Resource(name = "KmcCertChecker") - private KmcCertChecker kmcCertCheck; + private KmcCertChecker kmcCertChecker; /** * 주소록 그룹 리스트 @@ -954,7 +954,7 @@ public class AddrGroupController { mberCertPhoneVO.setTrUrl("/web/cop/kmc/authRequestAddrSubmitAjax.do"); mberCertPhoneVO.setPlusInfo(mberManageVO.getMberId()); - AuthCertVO certVO = kmcCertCheck.authCertCheck(mberCertPhoneVO, request); + AuthCertVO certVO = kmcCertChecker.authCertCheck(mberCertPhoneVO, request); modelAndView.addObject("tr_cert", certVO.getTr_cert()); modelAndView.addObject("tr_url", certVO.getTr_url()); @@ -979,241 +979,16 @@ public class AddrGroupController { */ @RequestMapping("/web/cop/kmc/authRequestAddrSubmitAjax.do") - public String authRequestFindIdPwAjax(HttpServletRequest request, ModelMap model, - @RequestParam Map commandMap, @ModelAttribute("searchVO") KmcVO kmcVO, - RedirectAttributes redirectAttributes) throws Exception { + public String authRequestFindIdPwAjax( + HttpServletRequest request + , HttpServletResponse response + , ModelMap model + , @RequestParam Map commandMap + , @ModelAttribute("searchVO") KmcVO kmcVO + , RedirectAttributes redirectAttributes + ) throws Exception { - String errMessage = ""; // 에러메세지 - - String rec_cert = ""; // 결과값(암호화) - String certNum = ""; // certNum - - rec_cert = request.getParameter("rec_cert").trim(); - certNum = request.getParameter("certNum").trim(); - - kmcVO.setRecCert(rec_cert); - kmcVO.setCertNum(certNum); - // 파라미터 유효성 검증 - if (rec_cert.length() == 0 || certNum.length() == 0) { - errMessage = "비정상"; - return returnPage(model, errMessage, kmcVO); - } - - // 변수선언 - // -------------------------------------------------------------------------------------------------------- - String k_certNum = ""; // 파라미터로 수신한 요청번호 - k_certNum = certNum; - String date = ""; // 요청일시 - String CI = ""; // 연계정보(CI) - String DI = ""; // 중복가입확인정보(DI) - String phoneNo = ""; // 휴대폰번호 - String phoneCorp = ""; // 이동통신사 - String birthDay = ""; // 생년월일 - String gender = ""; // 성별 - String nation = ""; // 내국인 - String name = ""; // 성명 - String M_name = ""; // 미성년자 성명 - String M_birthDay = ""; // 미성년자 생년월일 - String M_Gender = ""; // 미성년자 성별 - String M_nation = ""; // 미성년자 내외국인 - String result = ""; // 결과값 - - String certMet = ""; // 인증방법 - String ip = ""; // ip주소 - String plusInfo = ""; - - String encPara = ""; - String encMsg1 = ""; - String encMsg2 = ""; - String msgChk = ""; - - com.icert.comm.secu.IcertSecuManager seed = new com.icert.comm.secu.IcertSecuManager(); - - // 02. 1차 복호화 - // 수신된 certNum를 이용하여 복호화 - rec_cert = seed.getDec(rec_cert, k_certNum); - - // 03. 1차 파싱 - int inf1 = rec_cert.indexOf("/", 0); - int inf2 = rec_cert.indexOf("/", inf1 + 1); - - encPara = rec_cert.substring(0, inf1); // 암호화된 통합 파라미터 - encMsg1 = rec_cert.substring(inf1 + 1, inf2); // 암호화된 통합 파라미터의 Hash값 - - // 04. 위변조 검증 - encMsg2 = seed.getMsg(encPara); - kmcVO.setEncMsg2(encMsg2); - if (encMsg2.equals(encMsg1)) { - msgChk = "Y"; - } - - if (!"Y".equals(msgChk)) { - errMessage = "비정상접근입니다."; - return returnPage(model, errMessage, kmcVO); - } - - // 05. 2차 복호화 - rec_cert = seed.getDec(encPara, k_certNum); - kmcVO.setRecCert(rec_cert); - // 06. 2차 파싱 - int info1 = rec_cert.indexOf("/", 0); - int info2 = rec_cert.indexOf("/", info1 + 1); - int info3 = rec_cert.indexOf("/", info2 + 1); - int info4 = rec_cert.indexOf("/", info3 + 1); - int info5 = rec_cert.indexOf("/", info4 + 1); - int info6 = rec_cert.indexOf("/", info5 + 1); - int info7 = rec_cert.indexOf("/", info6 + 1); - int info8 = rec_cert.indexOf("/", info7 + 1); - int info9 = rec_cert.indexOf("/", info8 + 1); - int info10 = rec_cert.indexOf("/", info9 + 1); - int info11 = rec_cert.indexOf("/", info10 + 1); - int info12 = rec_cert.indexOf("/", info11 + 1); - int info13 = rec_cert.indexOf("/", info12 + 1); - int info14 = rec_cert.indexOf("/", info13 + 1); - int info15 = rec_cert.indexOf("/", info14 + 1); - int info16 = rec_cert.indexOf("/", info15 + 1); - int info17 = rec_cert.indexOf("/", info16 + 1); - int info18 = rec_cert.indexOf("/", info17 + 1); - - certNum = rec_cert.substring(0, info1); - kmcVO.setCertNum(certNum); - date = rec_cert.substring(info1 + 1, info2); - kmcVO.setDate(date); - CI = rec_cert.substring(info2 + 1, info3); - kmcVO.setCI(CI); - phoneNo = rec_cert.substring(info3 + 1, info4); - kmcVO.setPhoneNo(phoneNo); - phoneCorp = rec_cert.substring(info4 + 1, info5); - kmcVO.setPhoneCorp(phoneCorp); - birthDay = rec_cert.substring(info5 + 1, info6); - kmcVO.setBirthDay(birthDay); - gender = rec_cert.substring(info6 + 1, info7); - kmcVO.setGender(gender); - nation = rec_cert.substring(info7 + 1, info8); - kmcVO.setNation(nation); - name = rec_cert.substring(info8 + 1, info9); - kmcVO.setName(name); - result = rec_cert.substring(info9 + 1, info10); - kmcVO.setResult(result); - certMet = rec_cert.substring(info10 + 1, info11); - kmcVO.setCertMet(certMet); - ip = rec_cert.substring(info11 + 1, info12); - kmcVO.setIp(ip); - M_name = rec_cert.substring(info12 + 1, info13); - kmcVO.setMName(M_name); - M_birthDay = rec_cert.substring(info13 + 1, info14); - kmcVO.setMBirthDay(M_birthDay); - M_Gender = rec_cert.substring(info14 + 1, info15); - kmcVO.setMGender(M_Gender); - M_nation = rec_cert.substring(info15 + 1, info16); - kmcVO.setMNation(M_nation); - plusInfo = rec_cert.substring(info16 + 1, info17); - kmcVO.setPlusInfo(plusInfo); - DI = rec_cert.substring(info17 + 1, info18); - kmcVO.setDI(DI); - - // 07. CI, DI 복호화 - CI = seed.getDec(CI, k_certNum); - kmcVO.setCI(CI); - DI = seed.getDec(DI, k_certNum); - kmcVO.setDI(DI); - - if ("Y".equals(result)) { - - } - - // -------------------------------------------------------------- - String regex = ""; - if (certNum.length() == 0 || certNum.length() > 40) { - errMessage = "요청번호 비정상."; - return returnPage(model, errMessage, kmcVO); - } - - regex = "[0-9]*"; - if (date.length() != 14 || !paramChk(regex, date)) { - errMessage = "요청일시"; - return returnPage(model, errMessage, kmcVO); - } - - regex = "[A-Z]*"; - if (certMet.length() != 1 || !paramChk(regex, certMet)) { - errMessage = "본인인증방법 비정상" + certMet; - return returnPage(model, errMessage, kmcVO); - } - - regex = "[0-9]*"; - if ((phoneNo.length() != 10 && phoneNo.length() != 11) || !paramChk(regex, phoneNo)) { - errMessage = "휴대폰번호 비정상"; - return returnPage(model, errMessage, kmcVO); - } - - regex = "[A-Z]*"; - if (phoneCorp.length() != 3 || !paramChk(regex, phoneCorp)) { - errMessage = "이동통신사 비정상"; - return returnPage(model, errMessage, kmcVO); - } - - regex = "[0-9]*"; - if (birthDay.length() != 8 || !paramChk(regex, birthDay)) { - errMessage = "생년월일 비정상"; - return returnPage(model, errMessage, kmcVO); - } - - regex = "[0-9]*"; - if (gender.length() != 1 || !paramChk(regex, gender)) { - errMessage = "성별 비정상"; - return returnPage(model, errMessage, kmcVO); - } - - regex = "[0-9]*"; - if (nation.length() != 1 || !paramChk(regex, nation)) { - errMessage = "내/외국인 비정상"; - return returnPage(model, errMessage, kmcVO); - } - - regex = "[\\sA-Za-z가-�R.,-]*"; - if (name.length() > 60 || !paramChk(regex, name)) { - errMessage = "성명 비정상"; - return returnPage(model, errMessage, kmcVO); - } - - regex = "[A-Z]*"; - if (result.length() != 1 || !paramChk(regex, result)) { - errMessage = "결과값 비정상"; - return returnPage(model, errMessage, kmcVO); - } - - regex = "[\\sA-Za-z가-?.,-]*"; - if (M_name.length() != 0) { - if (M_name.length() > 60 || !paramChk(regex, M_name)) { - errMessage = "미성년자 성명 비정상"; - return returnPage(model, errMessage, kmcVO); - } - } - - regex = "[0-9]*"; - if (M_birthDay.length() != 0) { - if (M_birthDay.length() != 8 || !paramChk(regex, M_birthDay)) { - errMessage = "미성년자 생년월일 비정상"; - return returnPage(model, errMessage, kmcVO); - } - } - - regex = "[0-9]*"; - if (M_Gender.length() != 0) { - if (M_Gender.length() != 1 || !paramChk(regex, M_Gender)) { - errMessage = "미성년자 성별 비정상"; - return returnPage(model, errMessage, kmcVO); - } - } - - regex = "[0-9]*"; - if (M_nation.length() != 0) { - if (M_nation.length() != 1 || !paramChk(regex, M_nation)) { - errMessage = "미성년자 내/외국인 비정상"; - return returnPage(model, errMessage, kmcVO); - } - } + kmcVO = kmcCertChecker.authCertResult(request, response, model); // KMC 본인인증 로그 AuthCertVO certVO = new AuthCertVO(); diff --git a/src/main/java/itn/let/mjo/mjocommon/MjonCommon.java b/src/main/java/itn/let/mjo/mjocommon/MjonCommon.java index e6792d0c..4a475de5 100644 --- a/src/main/java/itn/let/mjo/mjocommon/MjonCommon.java +++ b/src/main/java/itn/let/mjo/mjocommon/MjonCommon.java @@ -3,6 +3,8 @@ package itn.let.mjo.mjocommon; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.text.SimpleDateFormat; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; import java.util.Calendar; import java.util.Date; import java.util.List; @@ -16,10 +18,8 @@ import org.apache.commons.httpclient.HttpStatus; import org.apache.commons.httpclient.methods.PostMethod; import org.json.simple.JSONObject; import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Component; import org.springframework.stereotype.Service; - -import com.mysql.jdbc.StringUtils; +import org.springframework.transaction.annotation.Transactional; import egovframework.com.idgen.CustomIdGnrService; import egovframework.rte.fdl.cmmn.exception.FdlException; @@ -27,17 +27,22 @@ import itn.com.cmm.MjonMsgSendVO; import itn.com.cmm.OptimalMsgResultDTO; import itn.com.cmm.util.MsgSendUtils; import itn.com.cmm.util.SlackMessageFormatUtil; +import itn.com.cmm.util.StringUtil; import itn.let.kakao.kakaoComm.KakaoSendAdvcVO; import itn.let.kakao.kakaoComm.KakaoVO; import itn.let.mail.service.StatusResponse; import itn.let.mjo.event.service.MjonEventService; import itn.let.mjo.event.service.MjonEventVO; import itn.let.mjo.msg.service.MjonMsgVO; +import itn.let.mjo.msg.service.impl.MjonMsgDAO; +import itn.let.mjo.msgdata.service.MjonMsgDataService; +import itn.let.mjo.msgdata.service.MjonMsgReturnVO; import itn.let.mjo.msgholiday.service.MsgAlarmSetVO; import itn.let.mjo.msgholiday.service.MsgHolidayService; import itn.let.mjo.msgholiday.service.MsgHolidayVO; import itn.let.sym.site.service.EgovSiteManagerService; import itn.let.sym.site.service.JoinSettingVO; +import itn.let.uat.uia.web.SendLogVO; import itn.let.uss.umt.service.EgovUserManageService; import itn.let.uss.umt.service.UserManageVO; import lombok.extern.slf4j.Slf4j; @@ -70,6 +75,12 @@ public class MjonCommon { @Resource(name = "egovMjonMsgIdCGnrService") private CustomIdGnrService idgenMsgCId; + + @Resource(name = "mjonMsgDAO") + private MjonMsgDAO mjonMsgDAO; + + @Resource(name = "MjonMsgDataService") + private MjonMsgDataService mjonMsgDataService; @@ -784,8 +795,120 @@ private int parseIntOrDefault(String value, int defaultValue) { return result; } + public void sendMessagesIfOverFifty(int cnt, String callTo) throws Exception { + if( + cnt >= 50 //50건 이상일 경우만 발송 + && StringUtil.isNotEmpty(callTo) // null, "" 체크 + && callTo.startsWith("010") // 010으로 시작하는 휴대폰번호일 경우 + && "Y".equals(selectSmsNotiIfOverFiftySetting()) // 안내문자 발송 on 인경우만 + && !sysMsgTodaySendYn(callTo) // 금일 1회 이상 보낸 이력없을 경우만 발송 + ) { + + //50건이상 발송 안내문자 구분값 = 01 + String sendMsgType = "01"; + String today = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); + String contents = "[인터넷 대량문자발송안내] 문자온에서 "+ callTo + " 번호로 " + today + "에 인터넷 대량 문자(50통 이상)가 발송되었습니다." + + "\n※ 번호도용이 의심되는 경우, 이용 중인 이동통신사의 휴대전화 번호도용 문자차단 부가서비스(무료)에 가입하여 피해를 예방할 수 있습니다."; + this.sendSysMsg( + "15518011" + , callTo + , contents + , sendMsgType + ); + } + } + /** + * Method Name : sendSysMsg + * Description : 관리자 안내 문자 공통 + * + * @param callFrom : 발신번호 + * @param callTo : 수신번호 + * @param contents : 내용 + * @param sendMsgType : 발신내용 타입 - 01: 대량문자발송안내 + * @return + * @throws Exception + * @return MjonMsgReturnVO 설명 + */ + @Transactional(rollbackFor = Exception.class) + public MjonMsgReturnVO sendSysMsg( + String callFrom + , String callTo + , String contents + , String sendMsgType + ) throws Exception { + + //결과 vo + MjonMsgReturnVO returnVO = new MjonMsgReturnVO(); + + MjonMsgVO mjonMsgVO = new MjonMsgVO(); + mjonMsgVO.setSmsTxt(contents); + mjonMsgVO.setReserveYn("N"); + // 시스템 문자발송 번호 +// mjonMsgVO.setCallFrom("15518011"); + mjonMsgVO.setCallFrom(callFrom); + mjonMsgVO.setCallTo(callTo); + + mjonMsgVO.setUserId("system"); + + /* + * 본문길이에 따른 단문/장문 구분 + * 단문 4 + * 장문 6 + * 2000자 이상 invalid + */ + String msgType = MsgSendUtils.getMsgTypeWithByteValidation(new MjonMsgSendVO(), contents);// + mjonMsgVO.setMsgType(msgType); + + // MsgDiv - S: 단문, L: 장문, P: 그림 + if("4".equalsIgnoreCase(msgType)) { + mjonMsgVO.setMsgDiv("S"); + }else if("6".equalsIgnoreCase(msgType)) { + mjonMsgVO.setMsgDiv("L"); + } + else { // invalid + returnVO.setMsgGroupId(""); + returnVO.setSendMsgCnt("0"); // 발송 건수 저장 + returnVO.setSendMsgBlockCnt("0"); // 수신차단 건수 저장 + return returnVO; + } + + // 문자타입별 대표전송사 정보 + MjonMsgVO mjonMsgVO2 = new MjonMsgVO(); + mjonMsgVO2 = mjonMsgDAO.selectRepMsgAgetnInfo(mjonMsgVO); + // 전송사 구분 코드 - 01 : 아이하트, 02 : 현대 퓨쳐넷, 03 : 아이엠오, 04 : 다우기술 + mjonMsgVO.setAgentCode(mjonMsgVO2.getAgentCode()); //전송사 선택 + // 전송금액 + mjonMsgVO.setTotPrice(mjonMsgVO2.getAgentPrice().toString()); //총금액 + mjonMsgVO.setEachPrice(mjonMsgVO2.getAgentPrice().toString()); //한건 금액 + + returnVO = mjonMsgDataService.insertSysMsgDataInfo(mjonMsgVO); + + // 시스템 발송 로그 + SendLogVO sendLogVO = new SendLogVO(); + // SendType 1:문자로 발송 2:이메일로 발송 + sendLogVO.setSendId(returnVO.getMsgGroupId()); + sendLogVO.setSendType("1"); + sendLogVO.setFrstSendInfo(mjonMsgVO.getCallFrom()); + sendLogVO.setReceive(mjonMsgVO.getCallTo()); + sendLogVO.setContents(contents); + sendLogVO.setSendMsgType(sendMsgType); + + mjonMsgDataService.insertSysMsgLog(sendLogVO); + + return returnVO; + } + private Boolean sysMsgTodaySendYn(String callTo) throws Exception { + SendLogVO sendLogVO = new SendLogVO(); + sendLogVO.setReceive(callTo); + + return mjonMsgDataService.selectSysMsgTodaySendYn(sendLogVO); + } + private String selectSmsNotiIfOverFiftySetting() throws Exception { + JoinSettingVO joinSettingVO = egovSiteManagerService.selectAdminNotiDetail(); + return joinSettingVO.getSmsNotiIfOverFifty(); + } } diff --git a/src/main/java/itn/let/mjo/msgdata/service/MjonMsgDataService.java b/src/main/java/itn/let/mjo/msgdata/service/MjonMsgDataService.java index d5e4c1a5..8ef8d3ef 100644 --- a/src/main/java/itn/let/mjo/msgdata/service/MjonMsgDataService.java +++ b/src/main/java/itn/let/mjo/msgdata/service/MjonMsgDataService.java @@ -190,7 +190,7 @@ public interface MjonMsgDataService { public MjonMsgReturnVO sendSysMsgData(MjonMsgVO mjonMsgVO, HttpServletRequest request) throws Exception; - + public Boolean selectSysMsgTodaySendYn(SendLogVO sendLogVO) throws Exception; } diff --git a/src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataDAO.java b/src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataDAO.java index b28a2b52..a3100f2f 100644 --- a/src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataDAO.java +++ b/src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataDAO.java @@ -403,6 +403,10 @@ public class MjonMsgDataDAO extends EgovAbstractDAO { return result; } + public Boolean selectSysMsgTodaySendYn(SendLogVO sendLogVO) throws Exception{ + return (Boolean) select("mjonMsgDataDAO.selectSysMsgTodaySendYn",sendLogVO); + } + /** * 다량 데이터를 Batch 처리로 MJ_MSG_DATA 테이블에 INSERT diff --git a/src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataServiceImpl.java b/src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataServiceImpl.java index bde8f50c..11501148 100644 --- a/src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataServiceImpl.java +++ b/src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataServiceImpl.java @@ -4187,6 +4187,17 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M // 총 발송 건수 returnMap.put("resultSts", instTotalCnt); + //50건이상 문자발송 시 안내메시지 전송 + try { + if( + "p".equals(userInfo.getDept()) // 개인회원일 경우에만 발송 + ) { + mjonCommon.sendMessagesIfOverFifty(instTotalCnt, mjonMsgVO.getCallFrom()); + } + } catch (Exception e) { + System.out.println("sendMessagesIfOverFifty method exception."); + } + // TEST발송 시 발송 후 캐시가 있어야함. returnMap.put("afterCash", priceAndPoint.getBefCash(userId)); // @@ -5148,4 +5159,9 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M return returnVO; } + @Override + public Boolean selectSysMsgTodaySendYn(SendLogVO sendLogVO) throws Exception{ + return mjonMsgDataDAO.selectSysMsgTodaySendYn(sendLogVO); + } + } diff --git a/src/main/java/itn/let/mjo/pay/service/KmcVO.java b/src/main/java/itn/let/mjo/pay/service/KmcVO.java index 2eecca4e..374d03ad 100644 --- a/src/main/java/itn/let/mjo/pay/service/KmcVO.java +++ b/src/main/java/itn/let/mjo/pay/service/KmcVO.java @@ -18,10 +18,10 @@ public class KmcVO extends ComDefaultVO{ private String gender = ""; // 성별 private String nation = ""; // 내국인 private String name = ""; // 성명 - private String MName = ""; // 미성년자 성명 - private String MBirthDay = ""; // 미성년자 생년월일 - private String MGender = ""; // 미성년자 성별 - private String MNation = ""; // 미성년자 내외국인 +// private String MName = ""; // 미성년자 성명 +// private String MBirthDay = ""; // 미성년자 생년월일 +// private String MGender = ""; // 미성년자 성별 +// private String MNation = ""; // 미성년자 내외국인 private String result = ""; // 결과값 private String certMet = ""; // 인증방법 @@ -41,6 +41,11 @@ public class KmcVO extends ComDefaultVO{ private String idx = ""; //본인인증 로그 idx private String dnChk = ""; //본인명의 DN 체크 + private String reserve1 = ""; + private String reserve2 = ""; + private String reserve3 = ""; + private String reserve4 = ""; + public String getUserId() { return userId; } @@ -177,30 +182,6 @@ public class KmcVO extends ComDefaultVO{ public void setCertNum(String certNum) { this.certNum = certNum; } - public String getMName() { - return MName; - } - public void setMName(String mName) { - MName = mName; - } - public String getMBirthDay() { - return MBirthDay; - } - public void setMBirthDay(String mBirthDay) { - MBirthDay = mBirthDay; - } - public String getMGender() { - return MGender; - } - public void setMGender(String mGender) { - MGender = mGender; - } - public String getMNation() { - return MNation; - } - public void setMNation(String mNation) { - MNation = mNation; - } public String getRecCert() { return recCert; } @@ -225,7 +206,30 @@ public class KmcVO extends ComDefaultVO{ public void setCertType(String certType) { this.certType = certType; } - + public String getReserve1() { + return reserve1; + } + public void setReserve1(String reserve1) { + this.reserve1 = reserve1; + } + public String getReserve2() { + return reserve2; + } + public void setReserve2(String reserve2) { + this.reserve2 = reserve2; + } + public String getReserve3() { + return reserve3; + } + public void setReserve3(String reserve3) { + this.reserve3 = reserve3; + } + public String getReserve4() { + return reserve4; + } + public void setReserve4(String reserve4) { + this.reserve4 = reserve4; + } } diff --git a/src/main/java/itn/let/mjo/pay/web/MjonPayController.java b/src/main/java/itn/let/mjo/pay/web/MjonPayController.java index 6f139c7c..d7f27bf4 100644 --- a/src/main/java/itn/let/mjo/pay/web/MjonPayController.java +++ b/src/main/java/itn/let/mjo/pay/web/MjonPayController.java @@ -91,6 +91,7 @@ import itn.let.sym.grd.service.MberGrdVO; import itn.let.sym.site.service.EgovSiteManagerService; import itn.let.sym.site.service.JoinSettingVO; import itn.let.uat.uia.service.AuthCertVO; +import itn.let.uat.uia.web.KmcCertChecker; import itn.let.uss.umt.service.EgovMberManageService; import itn.let.uss.umt.service.EgovUserManageService; import itn.let.uss.umt.service.MberManageVO; @@ -165,7 +166,10 @@ public class MjonPayController { EgovSiteManagerService egovSiteManagerService; @Resource(name = "mberGrdService") - MberGrdService mberGrdService; + MberGrdService mberGrdService; + + @Resource(name = "KmcCertChecker") + KmcCertChecker kmcCertChecker; //배열 정의{"컬럼순차번호, 컬럼이름, 컬럼내용, 컬럼이름에 붙여야할 내용(엑셀코드양식다운로드시 필요)"} private String[][] sendPayExcelValue ={ @@ -930,7 +934,7 @@ public class MjonPayController { } /** - * 나이스페이(PG사 전송화면) + * 회원가입 본인인증 * * @param * @return @@ -941,270 +945,10 @@ public class MjonPayController { ModelMap model , @RequestParam Map commandMap, @ModelAttribute("searchVO") KmcVO kmcVO) throws Exception { - //크롬 SameSite정책 방지 - 도메인이 다른 타사로 이동 시 크롬 정책에 의해 세션 유실이 일어나는 경우가 있는데, 이를 방지하기 위해 samesite 보안을 none처리 - response.setHeader("Set-Cookie", "mberSession=mberSession; Secure; SameSite=None"); - - System.out.println("++++++++++++ 세션체크 ::: "+ session.getAttribute("mberSession")); - - String errMessage = ""; //에러메세지 - - String rec_cert = ""; // 결과값(암호화) - String certNum = ""; // certNum - - rec_cert = request.getParameter("rec_cert").trim(); - certNum = request.getParameter("certNum").trim(); - - kmcVO.setRecCert(rec_cert); - kmcVO.setCertNum(certNum); - // 파라미터 유효성 검증 - if( rec_cert.length() == 0 || certNum.length() == 0 ){ - errMessage = "비정상"; - return returnPage(model , errMessage , kmcVO) ; - } - - - // 변수선언 -------------------------------------------------------------------------------------------------------- - String k_certNum = ""; // 파라미터로 수신한 요청번호 - k_certNum = certNum; - String date = ""; // 요청일시 - String CI = ""; // 연계정보(CI) - String DI = ""; // 중복가입확인정보(DI) - String phoneNo = ""; // 휴대폰번호 - String phoneCorp = ""; // 이동통신사 - String birthDay = ""; // 생년월일 - String gender = ""; // 성별 - String nation = ""; // 내국인 - String name = ""; // 성명 - String M_name = ""; // 미성년자 성명 - String M_birthDay = ""; // 미성년자 생년월일 - String M_Gender = ""; // 미성년자 성별 - String M_nation = ""; // 미성년자 내외국인 - String result = ""; // 결과값 - - String certMet = ""; // 인증방법 - String ip = ""; // ip주소 - String plusInfo = ""; - - String encPara = ""; - String encMsg1 = ""; - String encMsg2 = ""; - String msgChk = ""; - - com.icert.comm.secu.IcertSecuManager seed = new com.icert.comm.secu.IcertSecuManager(); - - //02. 1차 복호화 - //수신된 certNum를 이용하여 복호화 - rec_cert = seed.getDec(rec_cert, k_certNum); - - //03. 1차 파싱 - int inf1 = rec_cert.indexOf("/",0); - int inf2 = rec_cert.indexOf("/",inf1+1); - - encPara = rec_cert.substring(0,inf1); //암호화된 통합 파라미터 - encMsg1 = rec_cert.substring(inf1+1,inf2); //암호화된 통합 파라미터의 Hash값 - - //04. 위변조 검증 - encMsg2 = seed.getMsg(encPara); - kmcVO.setEncMsg2(encMsg2); - if(encMsg2.equals(encMsg1)){ - msgChk="Y"; - } - - if(!"Y".equals(msgChk)) { - errMessage = "비정상접근입니다."; - return returnPage(model , errMessage , kmcVO) ; - } - - //05. 2차 복호화 - rec_cert = seed.getDec(encPara, k_certNum); - kmcVO.setRecCert(rec_cert); - //06. 2차 파싱 - int info1 = rec_cert.indexOf("/",0); - int info2 = rec_cert.indexOf("/",info1+1); - int info3 = rec_cert.indexOf("/",info2+1); - int info4 = rec_cert.indexOf("/",info3+1); - int info5 = rec_cert.indexOf("/",info4+1); - int info6 = rec_cert.indexOf("/",info5+1); - int info7 = rec_cert.indexOf("/",info6+1); - int info8 = rec_cert.indexOf("/",info7+1); - int info9 = rec_cert.indexOf("/",info8+1); - int info10 = rec_cert.indexOf("/",info9+1); - int info11 = rec_cert.indexOf("/",info10+1); - int info12 = rec_cert.indexOf("/",info11+1); - int info13 = rec_cert.indexOf("/",info12+1); - int info14 = rec_cert.indexOf("/",info13+1); - int info15 = rec_cert.indexOf("/",info14+1); - int info16 = rec_cert.indexOf("/",info15+1); - int info17 = rec_cert.indexOf("/",info16+1); - int info18 = rec_cert.indexOf("/",info17+1); - - certNum = rec_cert.substring(0,info1); kmcVO.setCertNum(certNum); - date = rec_cert.substring(info1+1,info2); kmcVO.setDate(date); - CI = rec_cert.substring(info2+1,info3); kmcVO.setCI(CI); - phoneNo = rec_cert.substring(info3+1,info4); kmcVO.setPhoneNo(phoneNo); - phoneCorp = rec_cert.substring(info4+1,info5); kmcVO.setPhoneCorp(phoneCorp); - birthDay = rec_cert.substring(info5+1,info6); kmcVO.setBirthDay(birthDay); - gender = rec_cert.substring(info6+1,info7); kmcVO.setGender(gender); - nation = rec_cert.substring(info7+1,info8); kmcVO.setNation(nation); - name = rec_cert.substring(info8+1,info9); kmcVO.setName(name); - result = rec_cert.substring(info9+1,info10); kmcVO.setResult(result); - certMet = rec_cert.substring(info10+1,info11); kmcVO.setCertMet(certMet); - ip = rec_cert.substring(info11+1,info12); kmcVO.setIp(ip); - M_name = rec_cert.substring(info12+1,info13); kmcVO.setMName(M_name); - M_birthDay = rec_cert.substring(info13+1,info14); kmcVO.setMBirthDay(M_birthDay); - M_Gender = rec_cert.substring(info14+1,info15); kmcVO.setMGender(M_Gender); - M_nation = rec_cert.substring(info15+1,info16); kmcVO.setMNation(M_nation); - plusInfo = rec_cert.substring(info16+1,info17); kmcVO.setPlusInfo(plusInfo); - DI = rec_cert.substring(info17+1,info18); kmcVO.setDI(DI); - - //07. CI, DI 복호화 - CI = seed.getDec(CI, k_certNum); kmcVO.setCI(CI); - DI = seed.getDec(DI, k_certNum); kmcVO.setDI(DI); - - if("Y".equals(result)) { - - } - - //-------------------------------------------------------------- - String regex = ""; - if( certNum.length() == 0 || certNum.length() > 40){ - errMessage = "요청번호 비정상."; - return returnPage(model , errMessage , kmcVO) ; - } - - regex = "[0-9]*"; - if( date.length() != 14 || !paramChk(regex, date) ){ - errMessage = "요청일시"; - return returnPage(model , errMessage , kmcVO) ; - } - - regex = "[A-Z]*"; - if( certMet.length() != 1 || !paramChk(regex, certMet) ){ - errMessage = "본인인증방법 비정상" + certMet; - return returnPage(model , errMessage , kmcVO) ; - } - - - regex = "[0-9]*"; - if( (phoneNo.length() != 10 && phoneNo.length() != 11) || !paramChk(regex, phoneNo) ){ - errMessage = "휴대폰번호 비정상" ; - return returnPage(model , errMessage , kmcVO) ; - } - - regex = "[A-Z]*"; - if( phoneCorp.length() != 3 || !paramChk(regex, phoneCorp) ){ - errMessage = "이동통신사 비정상"; - return returnPage(model , errMessage , kmcVO) ; - } - - regex = "[0-9]*"; - if( birthDay.length() != 8 || !paramChk(regex, birthDay) ){ - errMessage = "생년월일 비정상"; - return returnPage(model , errMessage , kmcVO) ; - } - - regex = "[0-9]*"; - if( gender.length() != 1 || !paramChk(regex, gender) ){ - errMessage = "성별 비정상"; - return returnPage(model , errMessage , kmcVO) ; - } - - regex = "[0-9]*"; - if( nation.length() != 1 || !paramChk(regex, nation) ){ - errMessage = "내/외국인 비정상"; - return returnPage(model , errMessage , kmcVO) ; - } - - regex = "[\\sA-Za-z가-�R.,-]*"; - if( name.length() > 60 || !paramChk(regex, name) ){ - errMessage = "성명 비정상"; - return returnPage(model , errMessage , kmcVO) ; - } - - regex = "[A-Z]*"; - if( result.length() != 1 || !paramChk(regex, result) ){ - errMessage = "결과값 비정상"; - return returnPage(model , errMessage , kmcVO) ; - } - - regex = "[\\sA-Za-z가-?.,-]*"; - if( M_name.length() != 0 ){ - if( M_name.length() > 60 || !paramChk(regex, M_name) ){ - errMessage = "미성년자 성명 비정상"; - return returnPage(model , errMessage , kmcVO) ; - } - } - - regex = "[0-9]*"; - if( M_birthDay.length() != 0 ){ - if( M_birthDay.length() != 8 || !paramChk(regex, M_birthDay) ){ - errMessage = "미성년자 생년월일 비정상"; - return returnPage(model , errMessage , kmcVO) ; - } - } - - regex = "[0-9]*"; - if( M_Gender.length() != 0 ){ - if( M_Gender.length() != 1 || !paramChk(regex, M_Gender) ){ - errMessage = "미성년자 성별 비정상"; - return returnPage(model , errMessage , kmcVO) ; - } - } - - regex = "[0-9]*"; - if( M_nation.length() != 0 ){ - if( M_nation.length() != 1 || !paramChk(regex, M_nation) ){ - errMessage = "미성년자 내/외국인 비정상"; - return returnPage(model , errMessage , kmcVO) ; - } - } - - //본인인증 결과 내용 저장하기. - /*System.out.println("+++++++++++++ getCertNum ::: "+kmcVO.getCertNum()); - System.out.println("+++++++++++++ getDate ::: "+kmcVO.getDate()); - System.out.println("+++++++++++++ getDI ::: "+kmcVO.getDI()); - System.out.println("+++++++++++++ getPhoneNo ::: "+kmcVO.getPhoneNo()); - System.out.println("+++++++++++++ getNation ::: "+kmcVO.getNation()); - System.out.println("+++++++++++++ getName ::: "+kmcVO.getName()); - System.out.println("+++++++++++++ getResult ::: "+kmcVO.getResult()); - System.out.println("+++++++++++++ getCertMet ::: "+kmcVO.getCertMet()); - System.out.println("+++++++++++++ getIp ::: "+kmcVO.getIp());*/ - - //KMC 본인인증 정보를 세션에 담아준다. - /*AuthCertVO certVO = new AuthCertVO(); - certVO.setCertNum(kmcVO.getCertNum()); - certVO.setCertDate(kmcVO.getDate()); - certVO.setCertDi(kmcVO.getDI()); - certVO.setCertPhone(kmcVO.getPhoneNo()); - certVO.setCertNation(kmcVO.getNation()); - certVO.setCertName(kmcVO.getName()); - certVO.setCertResult(kmcVO.getResult()); - certVO.setCertType("KMC문자인증"); - certVO.setCertIpaddr(kmcVO.getIp()); - certVO.setBirthDay(kmcVO.getBirthDay()); - certVO.setSexdstnCode(kmcVO.getGender());*/ - - /*request.getSession().setAttribute("AuthKmcCertVO", certVO);*/ - - /*System.out.println("++++++++++++ 세션체크22 ::: "+(MberManageVO) session.getAttribute("mberSession"));*/ - - //KMC 본인인증 로그 insert - AuthCertVO certVO = new AuthCertVO(); - certVO.setMberId(kmcVO.getPlusInfo()); - certVO.setCertNum(kmcVO.getCertNum()); - certVO.setCertDate(kmcVO.getDate()); - certVO.setCertDi(kmcVO.getDI()); - certVO.setCertPhone(kmcVO.getPhoneNo()); - certVO.setCertNation(kmcVO.getNation()); - certVO.setCertName(kmcVO.getName()); - certVO.setCertResult(kmcVO.getResult()); - certVO.setCertType("KMC_회원가입 인증"); - certVO.setCertIpaddr(kmcVO.getIp()); - certVO.setBirthDay(kmcVO.getBirthDay()); - certVO.setSexdstnCode(kmcVO.getGender()); - - //디비 테이블에 저장하기 - mberManageService.insertCertInfoLog(certVO); + //kmc 본인인증 결과처리 + kmcVO = kmcCertChecker.authCertResult(request, response, model); + //kmc 본인인증 로그 처리 + AuthCertVO certVO = kmcCertChecker.insertCertLog(kmcVO, "KMC_회원가입 인증"); kmcVO.setIdx(certVO.getIdx()); //본인인증 로그 Idx - 로그 insert 후 idx selectKey model.addAttribute("kmcVO", kmcVO); @@ -6179,5 +5923,6 @@ public class MjonPayController { return p_response; } + } diff --git a/src/main/java/itn/let/sym/site/service/JoinSettingVO.java b/src/main/java/itn/let/sym/site/service/JoinSettingVO.java index f64ba44f..d83ad497 100644 --- a/src/main/java/itn/let/sym/site/service/JoinSettingVO.java +++ b/src/main/java/itn/let/sym/site/service/JoinSettingVO.java @@ -65,6 +65,7 @@ public class JoinSettingVO { private String slackNoti; //관리자 SLACK 알림 여부 private String smishingNoti; //첫결제(카드제외) 스미싱의심 알림 여부 private String holiSmishingNoti; //야간 스미싱알림 여부 + private String smsNotiIfOverFifty; //50건이상 문자발송 시 안내문자 발송 } diff --git a/src/main/java/itn/let/uat/uia/service/EgovLoginService.java b/src/main/java/itn/let/uat/uia/service/EgovLoginService.java index ccb85055..ab45a78a 100644 --- a/src/main/java/itn/let/uat/uia/service/EgovLoginService.java +++ b/src/main/java/itn/let/uat/uia/service/EgovLoginService.java @@ -121,5 +121,4 @@ public interface EgovLoginService { //비밀번호 실패 횟수 조회 public LoginVO selectPassMiss(LoginVO vo) throws Exception; - public KmcVO kmcDecryption(HttpServletRequest request, KmcVO kmcVO); } diff --git a/src/main/java/itn/let/uat/uia/service/impl/EgovLoginServiceImpl.java b/src/main/java/itn/let/uat/uia/service/impl/EgovLoginServiceImpl.java index b30fb473..a5fa09d2 100644 --- a/src/main/java/itn/let/uat/uia/service/impl/EgovLoginServiceImpl.java +++ b/src/main/java/itn/let/uat/uia/service/impl/EgovLoginServiceImpl.java @@ -17,6 +17,7 @@ import egovframework.rte.fdl.idgnr.EgovIdGnrService; import egovframework.rte.psl.dataaccess.util.EgovMap; import itn.com.cmm.LoginVO; import itn.let.mjo.pay.service.KmcVO; +import itn.let.uat.uia.service.AuthCertVO; import itn.let.uat.uia.service.EgovLoginService; import itn.let.uss.umt.service.UserManageVO; import itn.let.utl.fcc.service.EgovNumberUtil; @@ -318,240 +319,6 @@ public class EgovLoginServiceImpl extends EgovAbstractServiceImpl implements return loginDAO.selectPassMiss(vo); } - - @Override - public KmcVO kmcDecryption(HttpServletRequest request, KmcVO kmcVO) { - - - - String rec_cert = request.getParameter("rec_cert").trim(); - String certNum = request.getParameter("certNum").trim(); - - kmcVO.setRecCert(rec_cert); - kmcVO.setCertNum(certNum); - // 파라미터 유효성 검증 - if (rec_cert.length() == 0 || certNum.length() == 0) { - kmcVO.setErrMessage("비정상"); - return kmcVO; - } - // 변수선언 - // -------------------------------------------------------------------------------------------------------- - String k_certNum = ""; // 파라미터로 수신한 요청번호 - k_certNum = certNum; - String date = ""; // 요청일시 - String CI = ""; // 연계정보(CI) - String DI = ""; // 중복가입확인정보(DI) - String phoneNo = ""; // 휴대폰번호 - String phoneCorp = ""; // 이동통신사 - String birthDay = ""; // 생년월일 - String gender = ""; // 성별 - String nation = ""; // 내국인 - String name = ""; // 성명 - String M_name = ""; // 미성년자 성명 - String M_birthDay = ""; // 미성년자 생년월일 - String M_Gender = ""; // 미성년자 성별 - String M_nation = ""; // 미성년자 내외국인 - String result = ""; // 결과값 - - String certMet = ""; // 인증방법 - String ip = ""; // ip주소 - String plusInfo = ""; - - String encPara = ""; - String encMsg1 = ""; - String encMsg2 = ""; - String msgChk = ""; - - IcertSecuManager seed = new IcertSecuManager(); - - // 02. 1차 복호화 - // 수신된 certNum를 이용하여 복호화 - rec_cert = seed.getDec(rec_cert, k_certNum); - - // 03. 1차 파싱 - int inf1 = rec_cert.indexOf("/", 0); - int inf2 = rec_cert.indexOf("/", inf1 + 1); - - encPara = rec_cert.substring(0, inf1); // 암호화된 통합 파라미터 - encMsg1 = rec_cert.substring(inf1 + 1, inf2); // 암호화된 통합 파라미터의 Hash값 - - // 04. 위변조 검증 - encMsg2 = seed.getMsg(encPara); - kmcVO.setEncMsg2(encMsg2); - if (encMsg2.equals(encMsg1)) { - msgChk = "Y"; - } - - if (!"Y".equals(msgChk)) { - kmcVO.setErrMessage("비정상접근입니다."); - return kmcVO; - } - - // 05. 2차 복호화 - rec_cert = seed.getDec(encPara, k_certNum); - kmcVO.setRecCert(rec_cert); - // 06. 2차 파싱 - int info1 = rec_cert.indexOf("/", 0); - int info2 = rec_cert.indexOf("/", info1 + 1); - int info3 = rec_cert.indexOf("/", info2 + 1); - int info4 = rec_cert.indexOf("/", info3 + 1); - int info5 = rec_cert.indexOf("/", info4 + 1); - int info6 = rec_cert.indexOf("/", info5 + 1); - int info7 = rec_cert.indexOf("/", info6 + 1); - int info8 = rec_cert.indexOf("/", info7 + 1); - int info9 = rec_cert.indexOf("/", info8 + 1); - int info10 = rec_cert.indexOf("/", info9 + 1); - int info11 = rec_cert.indexOf("/", info10 + 1); - int info12 = rec_cert.indexOf("/", info11 + 1); - int info13 = rec_cert.indexOf("/", info12 + 1); - int info14 = rec_cert.indexOf("/", info13 + 1); - int info15 = rec_cert.indexOf("/", info14 + 1); - int info16 = rec_cert.indexOf("/", info15 + 1); - int info17 = rec_cert.indexOf("/", info16 + 1); - int info18 = rec_cert.indexOf("/", info17 + 1); - - certNum = rec_cert.substring(0, info1); - kmcVO.setCertNum(certNum); - date = rec_cert.substring(info1 + 1, info2); - kmcVO.setDate(date); - CI = rec_cert.substring(info2 + 1, info3); - kmcVO.setCI(CI); - phoneNo = rec_cert.substring(info3 + 1, info4); - kmcVO.setPhoneNo(phoneNo); - phoneCorp = rec_cert.substring(info4 + 1, info5); - kmcVO.setPhoneCorp(phoneCorp); - birthDay = rec_cert.substring(info5 + 1, info6); - kmcVO.setBirthDay(birthDay); - gender = rec_cert.substring(info6 + 1, info7); - kmcVO.setGender(gender); - nation = rec_cert.substring(info7 + 1, info8); - kmcVO.setNation(nation); - name = rec_cert.substring(info8 + 1, info9); - kmcVO.setName(name); - result = rec_cert.substring(info9 + 1, info10); - kmcVO.setResult(result); - certMet = rec_cert.substring(info10 + 1, info11); - kmcVO.setCertMet(certMet); - ip = rec_cert.substring(info11 + 1, info12); - kmcVO.setIp(ip); - M_name = rec_cert.substring(info12 + 1, info13); - kmcVO.setMName(M_name); - M_birthDay = rec_cert.substring(info13 + 1, info14); - kmcVO.setMBirthDay(M_birthDay); - M_Gender = rec_cert.substring(info14 + 1, info15); - kmcVO.setMGender(M_Gender); - M_nation = rec_cert.substring(info15 + 1, info16); - kmcVO.setMNation(M_nation); - plusInfo = rec_cert.substring(info16 + 1, info17); - kmcVO.setPlusInfo(plusInfo); - DI = rec_cert.substring(info17 + 1, info18); - kmcVO.setDI(DI); - - // 07. CI, DI 복호화 - CI = seed.getDec(CI, k_certNum); - kmcVO.setCI(CI); - DI = seed.getDec(DI, k_certNum); - kmcVO.setDI(DI); - - if ("Y".equals(result)) { - - } - - // -------------------------------------------------------------- - String regex = ""; - if (certNum.length() == 0 || certNum.length() > 40) { - kmcVO.setErrMessage("요청번호 비정상."); - return kmcVO; - } - - regex = "[0-9]*"; - if (date.length() != 14 || !this.paramChk(regex, date)) { - kmcVO.setErrMessage("요청일시"); - return kmcVO; - } - - regex = "[A-Z]*"; - if (certMet.length() != 1 || !this.paramChk(regex, certMet)) { - kmcVO.setErrMessage("본인인증방법 비정상" + certMet); - return kmcVO; - } - - regex = "[0-9]*"; - if ((phoneNo.length() != 10 && phoneNo.length() != 11) || !this.paramChk(regex, phoneNo)) { - kmcVO.setErrMessage("휴대폰번호 비정상"); - return kmcVO; - } - - regex = "[A-Z]*"; - if (phoneCorp.length() != 3 || !this.paramChk(regex, phoneCorp)) { - kmcVO.setErrMessage("이동통신사 비정상"); - return kmcVO; - } - - regex = "[0-9]*"; - if (birthDay.length() != 8 || !this.paramChk(regex, birthDay)) { - kmcVO.setErrMessage("생년월일 비정상"); - return kmcVO; - } - - regex = "[0-9]*"; - if (gender.length() != 1 || !this.paramChk(regex, gender)) { - kmcVO.setErrMessage("성별 비정상"); - return kmcVO; - } - - regex = "[0-9]*"; - if (nation.length() != 1 || !this.paramChk(regex, nation)) { - kmcVO.setErrMessage("내/외국인 비정상"); - return kmcVO; - } - - regex = "[\\sA-Za-z가-�R.,-]*"; - if (name.length() > 60 || !this.paramChk(regex, name)) { - kmcVO.setErrMessage("성명 비정상"); - return kmcVO; - } - - regex = "[A-Z]*"; - if (result.length() != 1 || !this.paramChk(regex, result)) { - kmcVO.setErrMessage("결과값 비정상"); - return kmcVO; - } - - regex = "[\\sA-Za-z가-?.,-]*"; - if (M_name.length() != 0) { - if (M_name.length() > 60 || !this.paramChk(regex, M_name)) { - kmcVO.setErrMessage("미성년자 성명 비정상"); - return kmcVO; - } - } - - regex = "[0-9]*"; - if (M_birthDay.length() != 0) { - if (M_birthDay.length() != 8 || !this.paramChk(regex, M_birthDay)) { - kmcVO.setErrMessage("미성년자 생년월일 비정상"); - } - } - - regex = "[0-9]*"; - if (M_Gender.length() != 0) { - if (M_Gender.length() != 1 || !paramChk(regex, M_Gender)) { - kmcVO.setErrMessage("미성년자 성별 비정상"); - } - } - - regex = "[0-9]*"; - if (M_nation.length() != 0) { - if (M_nation.length() != 1 || !this.paramChk(regex, M_nation)) { - kmcVO.setErrMessage("미성년자 내/외국인 비정상"); - } - } - - - return kmcVO; - } - - public Boolean paramChk(String patn, String param) { Pattern pattern = Pattern.compile(patn); Matcher matcher = pattern.matcher(param); diff --git a/src/main/java/itn/let/uat/uia/web/EgovLoginController.java b/src/main/java/itn/let/uat/uia/web/EgovLoginController.java index fdc173c5..4b65961a 100644 --- a/src/main/java/itn/let/uat/uia/web/EgovLoginController.java +++ b/src/main/java/itn/let/uat/uia/web/EgovLoginController.java @@ -253,7 +253,7 @@ public class EgovLoginController { private CertIpService certIpService; @Resource(name = "KmcCertChecker") - private KmcCertChecker kmcCertCheck; + private KmcCertChecker kmcCertChecker; private static final Logger logger = LoggerFactory.getLogger(MjonMsgDataController.class); @@ -336,7 +336,7 @@ public class EgovLoginController { MberCertPhoneVO mberCertPhoneVO = new MberCertPhoneVO(); mberCertPhoneVO.setTrUrl("/web/cop/kmc/authRequestAjax.do"); - AuthCertVO certVO = kmcCertCheck.authCertCheck(mberCertPhoneVO, request); + AuthCertVO certVO = kmcCertChecker.authCertCheck(mberCertPhoneVO, request); model.addAttribute("tr_cert", certVO.getTr_cert()); model.addAttribute("tr_url", certVO.getTr_url()); @@ -385,7 +385,7 @@ public class EgovLoginController { mberCertPhoneVO.setNation(mberManageVO.getNationality()); mberCertPhoneVO.setBirthDay(mberManageVO.getBirth()); - AuthCertVO certVO = kmcCertCheck.authCertCheck(mberCertPhoneVO, request); + AuthCertVO certVO = kmcCertChecker.authCertCheck(mberCertPhoneVO, request); // AuthCertVO certVO = kmcCertCheck.authCertCheckTwo(serverNm + "/web/cop/kmc/authRequestAjax.do", // mberManageVO.getMberNm(), mberManageVO.getMoblphonNo(), mberManageVO.getSexdstnCode(), @@ -4035,7 +4035,7 @@ public class EgovLoginController { } mberCertPhoneVO.setPlusInfo(plusInfo); - AuthCertVO certVO = kmcCertCheck.authCertCheck(mberCertPhoneVO, request); + AuthCertVO certVO = kmcCertChecker.authCertCheck(mberCertPhoneVO, request); modelAndView.addObject("tr_cert", certVO.getTr_cert()); modelAndView.addObject("tr_url", certVO.getTr_url()); @@ -4060,22 +4060,26 @@ public class EgovLoginController { */ @RequestMapping("/web/cop/kmc/authRequestFindIdPwAjax.do") - public String authRequestFindIdPwAjax(HttpServletRequest request, ModelMap model, + public String authRequestFindIdPwAjax(HttpServletRequest request, HttpServletResponse response, ModelMap model, @RequestParam Map commandMap, @ModelAttribute("searchVO") KmcVO kmcVO, RedirectAttributes redirectAttributes) throws Exception { - KmcVO kmcRVO = loginService.kmcDecryption(request, kmcVO); +// KmcVO kmcRVO = loginService.kmcDecryption(request, kmcVO); + //kmc 본인인증 결과처리 + kmcVO = kmcCertChecker.authCertResult(request, response, model); + //kmc 본인인증 로그 처리 + AuthCertVO certVO = kmcCertChecker.insertCertLog(kmcVO, "KMC_아이디패스워드찾기"); String msg = ""; - if (!findIdKmcCheck(kmcRVO.getDI(), kmcRVO.getName(), kmcRVO.getPhoneNo())) { + if (!findIdKmcCheck(kmcVO.getDI(), kmcVO.getName(), kmcVO.getPhoneNo())) { msg = "일치하는 정보가 없습니다."; redirectAttributes.addFlashAttribute("message", msg); return "redirect:/web/user/findUserId.do"; } - kmcRVO.setCertType("KMC_아이디패스워드찾기"); - // 디비 테이블에 저장하기 - mberManageService.insertCertInfoLogBn(kmcRVO); +// kmcRVO.setCertType("KMC_아이디패스워드찾기"); +// // 디비 테이블에 저장하기 +// mberManageService.insertCertInfoLogBn(kmcRVO); model.addAttribute("kmcVO", kmcVO); return "web/login/findUserIdKmcReqPage"; @@ -4092,18 +4096,24 @@ public class EgovLoginController { * @discription 관리자 로그인 DN 값 최초 등록 */ @RequestMapping("/web/cop/kmc/authRequestSelfLoginAjax.do") - public String authRequestSelfLoginAjax(HttpServletRequest request, ModelMap model, + public String authRequestSelfLoginAjax(HttpServletRequest request, HttpServletResponse response, ModelMap model, @RequestParam Map commandMap, @ModelAttribute("searchVO") KmcVO kmcVO, RedirectAttributes redirectAttributes, HttpSession session) throws Exception { UserManageVO userManageVO = new UserManageVO(); - KmcVO kmcRVO = loginService.kmcDecryption(request, kmcVO); +// KmcVO kmcRVO = loginService.kmcDecryption(request, kmcVO); + + //kmc 본인인증 결과처리 + kmcVO = kmcCertChecker.authCertResult(request, response, model); + //kmc 본인인증 로그 처리 + AuthCertVO certVO = kmcCertChecker.insertCertLog(kmcVO, "KMC_아이디패스워드찾기"); + - userManageVO.setCrtfcDnValue(kmcRVO.getDI()); - userManageVO.setEmplyrNm(kmcRVO.getName()); - userManageVO.setEmplyrId(kmcRVO.getPlusInfo().split(",,,")[0]); - userManageVO.setPassword(kmcRVO.getPlusInfo().split(",,,")[1]); + userManageVO.setCrtfcDnValue(kmcVO.getDI()); + userManageVO.setEmplyrNm(kmcVO.getName()); + userManageVO.setEmplyrId(kmcVO.getPlusInfo().split(",,,")[0]); + userManageVO.setPassword(kmcVO.getPlusInfo().split(",,,")[1]); userManageService.updateCrtfcDnValue(userManageVO); @@ -4121,20 +4131,20 @@ public class EgovLoginController { e.printStackTrace(); // TODO: handle exception } - kmcRVO.setCertType("KMC_관리자미인증IP접속인증"); - // 디비 테이블에 저장하기 - - try { - mberManageService.insertCertInfoLogBn(kmcRVO); - - } catch (Exception e) { - System.out.println("!!!!!!!!!!!!!!!!!"); - e.printStackTrace(); - // TODO: handle exception - } +// kmcRVO.setCertType("KMC_관리자미인증IP접속인증"); +// // 디비 테이블에 저장하기 +// +// try { +// mberManageService.insertCertInfoLogBn(kmcRVO); +// +// } catch (Exception e) { +// System.out.println("!!!!!!!!!!!!!!!!!"); +// e.printStackTrace(); +// // TODO: handle exception +// } - model.addAttribute("kmcVO", kmcRVO); + model.addAttribute("kmcVO", kmcVO); System.out.println("======================================"); model.addAttribute("userManageVO", userManageVO); @@ -5425,7 +5435,7 @@ public class EgovLoginController { mberCertPhoneVO.setNation(KMCInfoVO.getNationality()); mberCertPhoneVO.setPlusInfo(loginVO.getId()); - AuthCertVO certVO = kmcCertCheck.authCertCheck(mberCertPhoneVO, request); + AuthCertVO certVO = kmcCertChecker.authCertCheck(mberCertPhoneVO, request); modelAndView.addObject("tr_cert", certVO.getTr_cert()); modelAndView.addObject("tr_url", certVO.getTr_url()); @@ -5446,245 +5456,19 @@ public class EgovLoginController { * */ @RequestMapping("/web/cop/kmc/insertIPAjax.do") - public String insertIPAjax(HttpServletRequest request, ModelMap model, @RequestParam Map commandMap, + public String insertIPAjax(HttpServletRequest request, HttpServletResponse response, ModelMap model, @RequestParam Map commandMap, @ModelAttribute("searchVO") KmcVO kmcVO) throws Exception { - String errMessage = ""; // 에러메세지 - - String rec_cert = ""; // 결과값(암호화) - String certNum = ""; // certNum - - rec_cert = request.getParameter("rec_cert").trim(); - certNum = request.getParameter("certNum").trim(); - - kmcVO.setRecCert(rec_cert); - kmcVO.setCertNum(certNum); - // 파라미터 유효성 검증 - if (rec_cert.length() == 0 || certNum.length() == 0) { - errMessage = "비정상"; - return returnPage(model, errMessage, kmcVO); - } - - // 변수선언 - // -------------------------------------------------------------------------------------------------------- - String k_certNum = ""; // 파라미터로 수신한 요청번호 - k_certNum = certNum; - String date = ""; // 요청일시 - String CI = ""; // 연계정보(CI) - String DI = ""; // 중복가입확인정보(DI) - String phoneNo = ""; // 휴대폰번호 - String phoneCorp = ""; // 이동통신사 - String birthDay = ""; // 생년월일 - String gender = ""; // 성별 - String nation = ""; // 내국인 - String name = ""; // 성명 - String M_name = ""; // 미성년자 성명 - String M_birthDay = ""; // 미성년자 생년월일 - String M_Gender = ""; // 미성년자 성별 - String M_nation = ""; // 미성년자 내외국인 - String result = ""; // 결과값 - - String certMet = ""; // 인증방법 - String ip = ""; // ip주소 - String plusInfo = ""; - - String encPara = ""; - String encMsg1 = ""; - String encMsg2 = ""; - String msgChk = ""; - - com.icert.comm.secu.IcertSecuManager seed = new com.icert.comm.secu.IcertSecuManager(); - - // 02. 1차 복호화 - // 수신된 certNum를 이용하여 복호화 - rec_cert = seed.getDec(rec_cert, k_certNum); - - // 03. 1차 파싱 - int inf1 = rec_cert.indexOf("/", 0); - int inf2 = rec_cert.indexOf("/", inf1 + 1); - - encPara = rec_cert.substring(0, inf1); // 암호화된 통합 파라미터 - encMsg1 = rec_cert.substring(inf1 + 1, inf2); // 암호화된 통합 파라미터의 Hash값 - - // 04. 위변조 검증 - encMsg2 = seed.getMsg(encPara); - kmcVO.setEncMsg2(encMsg2); - if (encMsg2.equals(encMsg1)) { - msgChk = "Y"; - } - - if (!"Y".equals(msgChk)) { - errMessage = "비정상접근입니다."; - return returnPage(model, errMessage, kmcVO); - } - - // 05. 2차 복호화 - rec_cert = seed.getDec(encPara, k_certNum); - kmcVO.setRecCert(rec_cert); - // 06. 2차 파싱 - int info1 = rec_cert.indexOf("/", 0); - int info2 = rec_cert.indexOf("/", info1 + 1); - int info3 = rec_cert.indexOf("/", info2 + 1); - int info4 = rec_cert.indexOf("/", info3 + 1); - int info5 = rec_cert.indexOf("/", info4 + 1); - int info6 = rec_cert.indexOf("/", info5 + 1); - int info7 = rec_cert.indexOf("/", info6 + 1); - int info8 = rec_cert.indexOf("/", info7 + 1); - int info9 = rec_cert.indexOf("/", info8 + 1); - int info10 = rec_cert.indexOf("/", info9 + 1); - int info11 = rec_cert.indexOf("/", info10 + 1); - int info12 = rec_cert.indexOf("/", info11 + 1); - int info13 = rec_cert.indexOf("/", info12 + 1); - int info14 = rec_cert.indexOf("/", info13 + 1); - int info15 = rec_cert.indexOf("/", info14 + 1); - int info16 = rec_cert.indexOf("/", info15 + 1); - int info17 = rec_cert.indexOf("/", info16 + 1); - int info18 = rec_cert.indexOf("/", info17 + 1); - - certNum = rec_cert.substring(0, info1); - kmcVO.setCertNum(certNum); - date = rec_cert.substring(info1 + 1, info2); - kmcVO.setDate(date); - CI = rec_cert.substring(info2 + 1, info3); - kmcVO.setCI(CI); - phoneNo = rec_cert.substring(info3 + 1, info4); - kmcVO.setPhoneNo(phoneNo); - phoneCorp = rec_cert.substring(info4 + 1, info5); - kmcVO.setPhoneCorp(phoneCorp); - birthDay = rec_cert.substring(info5 + 1, info6); - kmcVO.setBirthDay(birthDay); - gender = rec_cert.substring(info6 + 1, info7); - kmcVO.setGender(gender); - nation = rec_cert.substring(info7 + 1, info8); - kmcVO.setNation(nation); - name = rec_cert.substring(info8 + 1, info9); - kmcVO.setName(name); - result = rec_cert.substring(info9 + 1, info10); - kmcVO.setResult(result); - certMet = rec_cert.substring(info10 + 1, info11); - kmcVO.setCertMet(certMet); - ip = rec_cert.substring(info11 + 1, info12); - kmcVO.setIp(ip); - M_name = rec_cert.substring(info12 + 1, info13); - kmcVO.setMName(M_name); - M_birthDay = rec_cert.substring(info13 + 1, info14); - kmcVO.setMBirthDay(M_birthDay); - M_Gender = rec_cert.substring(info14 + 1, info15); - kmcVO.setMGender(M_Gender); - M_nation = rec_cert.substring(info15 + 1, info16); - kmcVO.setMNation(M_nation); - plusInfo = rec_cert.substring(info16 + 1, info17); - kmcVO.setPlusInfo(plusInfo); - DI = rec_cert.substring(info17 + 1, info18); - kmcVO.setDI(DI); - - // 07. CI, DI 복호화 - CI = seed.getDec(CI, k_certNum); - kmcVO.setCI(CI); - DI = seed.getDec(DI, k_certNum); - kmcVO.setDI(DI); - - if ("Y".equals(result)) { - - } - - // -------------------------------------------------------------- - String regex = ""; - if (certNum.length() == 0 || certNum.length() > 40) { - errMessage = "요청번호 비정상."; - return returnPage(model, errMessage, kmcVO); - } - - regex = "[0-9]*"; - if (date.length() != 14 || !paramChk(regex, date)) { - errMessage = "요청일시"; - return returnPage(model, errMessage, kmcVO); - } - - regex = "[A-Z]*"; - if (certMet.length() != 1 || !paramChk(regex, certMet)) { - errMessage = "본인인증방법 비정상" + certMet; - return returnPage(model, errMessage, kmcVO); - } - - regex = "[0-9]*"; - if ((phoneNo.length() != 10 && phoneNo.length() != 11) || !paramChk(regex, phoneNo)) { - errMessage = "휴대폰번호 비정상"; - return returnPage(model, errMessage, kmcVO); - } - - regex = "[A-Z]*"; - if (phoneCorp.length() != 3 || !paramChk(regex, phoneCorp)) { - errMessage = "이동통신사 비정상"; - return returnPage(model, errMessage, kmcVO); - } - - regex = "[0-9]*"; - if (birthDay.length() != 8 || !paramChk(regex, birthDay)) { - errMessage = "생년월일 비정상"; - return returnPage(model, errMessage, kmcVO); - } - - regex = "[0-9]*"; - if (gender.length() != 1 || !paramChk(regex, gender)) { - errMessage = "성별 비정상"; - return returnPage(model, errMessage, kmcVO); - } - - regex = "[0-9]*"; - if (nation.length() != 1 || !paramChk(regex, nation)) { - errMessage = "내/외국인 비정상"; - return returnPage(model, errMessage, kmcVO); - } - - regex = "[\\sA-Za-z가-�R.,-]*"; - if (name.length() > 60 || !paramChk(regex, name)) { - errMessage = "성명 비정상"; - return returnPage(model, errMessage, kmcVO); - } - - regex = "[A-Z]*"; - if (result.length() != 1 || !paramChk(regex, result)) { - errMessage = "결과값 비정상"; - return returnPage(model, errMessage, kmcVO); - } - - regex = "[\\sA-Za-z가-?.,-]*"; - if (M_name.length() != 0) { - if (M_name.length() > 60 || !paramChk(regex, M_name)) { - errMessage = "미성년자 성명 비정상"; - return returnPage(model, errMessage, kmcVO); - } - } - - regex = "[0-9]*"; - if (M_birthDay.length() != 0) { - if (M_birthDay.length() != 8 || !paramChk(regex, M_birthDay)) { - errMessage = "미성년자 생년월일 비정상"; - return returnPage(model, errMessage, kmcVO); - } - } - - regex = "[0-9]*"; - if (M_Gender.length() != 0) { - if (M_Gender.length() != 1 || !paramChk(regex, M_Gender)) { - errMessage = "미성년자 성별 비정상"; - return returnPage(model, errMessage, kmcVO); - } - } - - regex = "[0-9]*"; - if (M_nation.length() != 0) { - if (M_nation.length() != 1 || !paramChk(regex, M_nation)) { - errMessage = "미성년자 내/외국인 비정상"; - return returnPage(model, errMessage, kmcVO); - } - } + //kmc 본인인증 결과처리 + kmcVO = kmcCertChecker.authCertResult(request, response, model); + //kmc 본인인증 로그 처리 + AuthCertVO certVO = kmcCertChecker.insertCertLog(kmcVO, "IP등록"); + LoginVO loginVO = new LoginVO(); - loginVO.setId(plusInfo); + loginVO.setId(kmcVO.getPlusInfo()); + loginVO = loginService.selectKMCInfo(loginVO); - String userIp = EgovClntInfo.getClntIP(request); - loginVO.setIp(ip); + loginVO.setIp(kmcVO.getIp()); loginService.insertMberIp(loginVO); diff --git a/src/main/java/itn/let/uat/uia/web/EgovMypageController.java b/src/main/java/itn/let/uat/uia/web/EgovMypageController.java index 997caab0..47adc9a6 100644 --- a/src/main/java/itn/let/uat/uia/web/EgovMypageController.java +++ b/src/main/java/itn/let/uat/uia/web/EgovMypageController.java @@ -183,7 +183,7 @@ public class EgovMypageController { private CertIpService certIpService; @Resource(name = "KmcCertChecker") - private KmcCertChecker kmcCertCheck; + private KmcCertChecker kmcCertChecker; /** * 마이페이지 비밀번호 변경 탭 @@ -717,7 +717,7 @@ public class EgovMypageController { */ @RequestMapping("/web/user/selectKmcMberInfoAjax.do") public String selectKmcMberInfoAjax( - HttpServletRequest request, ModelMap model + HttpServletRequest request, HttpServletResponse response, ModelMap model , @RequestParam Map commandMap , @ModelAttribute("searchVO") KmcVO kmcVO ) throws Exception { @@ -726,241 +726,14 @@ public class EgovMypageController { String mblDn = userManageService.selectUserMblDnById(loginVO.getId()); model.addAttribute("loginVO", loginVO); - String errMessage = ""; //에러메세지 - - String rec_cert = ""; // 결과값(암호화) - String certNum = ""; // certNum - - rec_cert = request.getParameter("rec_cert").trim(); - certNum = request.getParameter("certNum").trim(); - - kmcVO.setRecCert(rec_cert); - kmcVO.setCertNum(certNum); - // 파라미터 유효성 검증 - if( rec_cert.length() == 0 || certNum.length() == 0 ){ - errMessage = "비정상"; - return returnPage(model , errMessage , kmcVO) ; - } - - - // 변수선언 -------------------------------------------------------------------------------------------------------- - String k_certNum = ""; // 파라미터로 수신한 요청번호 - k_certNum = certNum; - String date = ""; // 요청일시 - String CI = ""; // 연계정보(CI) - String DI = ""; // 중복가입확인정보(DI) - String phoneNo = ""; // 휴대폰번호 - String phoneCorp = ""; // 이동통신사 - String birthDay = ""; // 생년월일 - String gender = ""; // 성별 - String nation = ""; // 내국인 - String name = ""; // 성명 - String M_name = ""; // 미성년자 성명 - String M_birthDay = ""; // 미성년자 생년월일 - String M_Gender = ""; // 미성년자 성별 - String M_nation = ""; // 미성년자 내외국인 - String result = ""; // 결과값 - - String certMet = ""; // 인증방법 - String ip = ""; // ip주소 - String plusInfo = ""; - - String encPara = ""; - String encMsg1 = ""; - String encMsg2 = ""; - String msgChk = ""; - - com.icert.comm.secu.IcertSecuManager seed = new com.icert.comm.secu.IcertSecuManager(); - - //02. 1차 복호화 - //수신된 certNum를 이용하여 복호화 - rec_cert = seed.getDec(rec_cert, k_certNum); - - //03. 1차 파싱 - int inf1 = rec_cert.indexOf("/",0); - int inf2 = rec_cert.indexOf("/",inf1+1); - - encPara = rec_cert.substring(0,inf1); //암호화된 통합 파라미터 - encMsg1 = rec_cert.substring(inf1+1,inf2); //암호화된 통합 파라미터의 Hash값 - - //04. 위변조 검증 - encMsg2 = seed.getMsg(encPara); - kmcVO.setEncMsg2(encMsg2); - if(encMsg2.equals(encMsg1)){ - msgChk="Y"; - } - - if(!"Y".equals(msgChk)) { - errMessage = "비정상접근입니다."; - return returnPage(model , errMessage , kmcVO) ; - } - - //05. 2차 복호화 - rec_cert = seed.getDec(encPara, k_certNum); - kmcVO.setRecCert(rec_cert); - //06. 2차 파싱 - int info1 = rec_cert.indexOf("/",0); - int info2 = rec_cert.indexOf("/",info1+1); - int info3 = rec_cert.indexOf("/",info2+1); - int info4 = rec_cert.indexOf("/",info3+1); - int info5 = rec_cert.indexOf("/",info4+1); - int info6 = rec_cert.indexOf("/",info5+1); - int info7 = rec_cert.indexOf("/",info6+1); - int info8 = rec_cert.indexOf("/",info7+1); - int info9 = rec_cert.indexOf("/",info8+1); - int info10 = rec_cert.indexOf("/",info9+1); - int info11 = rec_cert.indexOf("/",info10+1); - int info12 = rec_cert.indexOf("/",info11+1); - int info13 = rec_cert.indexOf("/",info12+1); - int info14 = rec_cert.indexOf("/",info13+1); - int info15 = rec_cert.indexOf("/",info14+1); - int info16 = rec_cert.indexOf("/",info15+1); - int info17 = rec_cert.indexOf("/",info16+1); - int info18 = rec_cert.indexOf("/",info17+1); - - certNum = rec_cert.substring(0,info1); kmcVO.setCertNum(certNum); - date = rec_cert.substring(info1+1,info2); kmcVO.setDate(date); - CI = rec_cert.substring(info2+1,info3); kmcVO.setCI(CI); - phoneNo = rec_cert.substring(info3+1,info4); kmcVO.setPhoneNo(phoneNo); - phoneCorp = rec_cert.substring(info4+1,info5); kmcVO.setPhoneCorp(phoneCorp); - birthDay = rec_cert.substring(info5+1,info6); kmcVO.setBirthDay(birthDay); - gender = rec_cert.substring(info6+1,info7); kmcVO.setGender(gender); - nation = rec_cert.substring(info7+1,info8); kmcVO.setNation(nation); - name = rec_cert.substring(info8+1,info9); kmcVO.setName(name); - result = rec_cert.substring(info9+1,info10); kmcVO.setResult(result); - certMet = rec_cert.substring(info10+1,info11); kmcVO.setCertMet(certMet); - ip = rec_cert.substring(info11+1,info12); kmcVO.setIp(ip); - M_name = rec_cert.substring(info12+1,info13); kmcVO.setMName(M_name); - M_birthDay = rec_cert.substring(info13+1,info14); kmcVO.setMBirthDay(M_birthDay); - M_Gender = rec_cert.substring(info14+1,info15); kmcVO.setMGender(M_Gender); - M_nation = rec_cert.substring(info15+1,info16); kmcVO.setMNation(M_nation); - plusInfo = rec_cert.substring(info16+1,info17); kmcVO.setPlusInfo(plusInfo); - DI = rec_cert.substring(info17+1,info18); kmcVO.setDI(DI); - - //07. CI, DI 복호화 - CI = seed.getDec(CI, k_certNum); kmcVO.setCI(CI); - DI = seed.getDec(DI, k_certNum); kmcVO.setDI(DI); - - if("Y".equals(result)) { - - } - - //-------------------------------------------------------------- - String regex = ""; - if( certNum.length() == 0 || certNum.length() > 40){ - errMessage = "요청번호 비정상."; - return returnPage(model , errMessage , kmcVO) ; - } - - regex = "[0-9]*"; - if( date.length() != 14 || !paramChk(regex, date) ){ - errMessage = "요청일시"; - return returnPage(model , errMessage , kmcVO) ; - } - - regex = "[A-Z]*"; - if( certMet.length() != 1 || !paramChk(regex, certMet) ){ - errMessage = "본인인증방법 비정상" + certMet; - return returnPage(model , errMessage , kmcVO) ; - } - - - regex = "[0-9]*"; - if( (phoneNo.length() != 10 && phoneNo.length() != 11) || !paramChk(regex, phoneNo) ){ - errMessage = "휴대폰번호 비정상" ; - return returnPage(model , errMessage , kmcVO) ; - } - - regex = "[A-Z]*"; - if( phoneCorp.length() != 3 || !paramChk(regex, phoneCorp) ){ - errMessage = "이동통신사 비정상"; - return returnPage(model , errMessage , kmcVO) ; - } - - regex = "[0-9]*"; - if( birthDay.length() != 8 || !paramChk(regex, birthDay) ){ - errMessage = "생년월일 비정상"; - return returnPage(model , errMessage , kmcVO) ; - } - - regex = "[0-9]*"; - if( gender.length() != 1 || !paramChk(regex, gender) ){ - errMessage = "성별 비정상"; - return returnPage(model , errMessage , kmcVO) ; - } - - regex = "[0-9]*"; - if( nation.length() != 1 || !paramChk(regex, nation) ){ - errMessage = "내/외국인 비정상"; - return returnPage(model , errMessage , kmcVO) ; - } - - regex = "[\\sA-Za-z가-�R.,-]*"; - if( name.length() > 60 || !paramChk(regex, name) ){ - errMessage = "성명 비정상"; - return returnPage(model , errMessage , kmcVO) ; - } - - regex = "[A-Z]*"; - if( result.length() != 1 || !paramChk(regex, result) ){ - errMessage = "결과값 비정상"; - return returnPage(model , errMessage , kmcVO) ; - } - - regex = "[\\sA-Za-z가-?.,-]*"; - if( M_name.length() != 0 ){ - if( M_name.length() > 60 || !paramChk(regex, M_name) ){ - errMessage = "미성년자 성명 비정상"; - return returnPage(model , errMessage , kmcVO) ; - } - } - - regex = "[0-9]*"; - if( M_birthDay.length() != 0 ){ - if( M_birthDay.length() != 8 || !paramChk(regex, M_birthDay) ){ - errMessage = "미성년자 생년월일 비정상"; - return returnPage(model , errMessage , kmcVO) ; - } - } - - regex = "[0-9]*"; - if( M_Gender.length() != 0 ){ - if( M_Gender.length() != 1 || !paramChk(regex, M_Gender) ){ - errMessage = "미성년자 성별 비정상"; - return returnPage(model , errMessage , kmcVO) ; - } - } - - regex = "[0-9]*"; - if( M_nation.length() != 0 ){ - if( M_nation.length() != 1 || !paramChk(regex, M_nation) ){ - errMessage = "미성년자 내/외국인 비정상"; - return returnPage(model , errMessage , kmcVO) ; - } - } - - - //KMC 본인인증 로그 - AuthCertVO certVO = new AuthCertVO(); - certVO.setMberId(kmcVO.getPlusInfo()); - certVO.setCertNum(kmcVO.getCertNum()); - certVO.setCertDate(kmcVO.getDate()); - certVO.setCertDi(kmcVO.getDI()); - certVO.setCertPhone(kmcVO.getPhoneNo()); - certVO.setCertNation(kmcVO.getNation()); - certVO.setCertName(kmcVO.getName()); - certVO.setCertResult(kmcVO.getResult()); - certVO.setCertType("KMC_회원정보 변경"); - certVO.setCertIpaddr(kmcVO.getIp()); - certVO.setBirthDay(kmcVO.getBirthDay()); - certVO.setSexdstnCode(kmcVO.getGender()); - - //디비 테이블에 저장하기 - mberManageService.insertCertInfoLog(certVO); + //kmc 본인인증 결과처리 + kmcVO = kmcCertChecker.authCertResult(request, response, model); + //kmc 본인인증 로그 처리 + AuthCertVO certVO = kmcCertChecker.insertCertLog(kmcVO, "KMC_회원정보 변경"); //개인회원일 시 기존 DN가 본인인증 DN비고하여 본인 명의만 번호 변경 가능하게 if("p".equals(loginVO.getDept())) { - if(!mblDn.equals(DI)) { + if(!mblDn.equals(kmcVO.getDI())) { kmcVO.setDnChk("N"); } } @@ -1465,7 +1238,7 @@ public class EgovMypageController { mberCertPhoneVO.setTrUrl("/web/user/selectKmcMberInfoAjax.do"); mberCertPhoneVO.setPlusInfo(loginVO.getId()); - AuthCertVO certVO = kmcCertCheck.authCertCheck(mberCertPhoneVO, request); + AuthCertVO certVO = kmcCertChecker.authCertCheck(mberCertPhoneVO, request); modelAndView.addObject("certVO", certVO); } @@ -1938,7 +1711,7 @@ public class EgovMypageController { mberCertPhoneVO.setPhoneNo(mjonMsgVO.getCallFrom()); mberCertPhoneVO.setPlusInfo(mjonMsgVO.getUserId()+ "§" + mjonMsgVO.getMyNameFlag()); - AuthCertVO certVO = kmcCertCheck.authCertCheck(mberCertPhoneVO, request); + AuthCertVO certVO = kmcCertChecker.authCertCheck(mberCertPhoneVO, request); modelAndView.addObject("certVO", certVO); @@ -1962,223 +1735,12 @@ public class EgovMypageController { */ @RequestMapping("/web/user/selectPhoneNumberCertChkAjax.do") public String selectPhoneNumberCertChk( - HttpServletRequest request, ModelMap model + HttpServletRequest request, HttpServletResponse response, ModelMap model , @RequestParam Map commandMap , @ModelAttribute("searchVO") KmcVO kmcVO ) throws Exception { - - String errMessage = ""; //에러메세지 - - String rec_cert = ""; // 결과값(암호화) - String certNum = ""; // certNum - - rec_cert = request.getParameter("rec_cert").trim(); - certNum = request.getParameter("certNum").trim(); - - kmcVO.setRecCert(rec_cert); - kmcVO.setCertNum(certNum); - // 파라미터 유효성 검증 - if( rec_cert.length() == 0 || certNum.length() == 0 ){ - errMessage = "비정상"; - return returnPage(model , errMessage , kmcVO) ; - } - - - // 변수선언 -------------------------------------------------------------------------------------------------------- - String k_certNum = ""; // 파라미터로 수신한 요청번호 - k_certNum = certNum; - String date = ""; // 요청일시 - String CI = ""; // 연계정보(CI) - String DI = ""; // 중복가입확인정보(DI) - String phoneNo = ""; // 휴대폰번호 - String phoneCorp = ""; // 이동통신사 - String birthDay = ""; // 생년월일 - String gender = ""; // 성별 - String nation = ""; // 내국인 - String name = ""; // 성명 - String M_name = ""; // 미성년자 성명 - String M_birthDay = ""; // 미성년자 생년월일 - String M_Gender = ""; // 미성년자 성별 - String M_nation = ""; // 미성년자 내외국인 - String result = ""; // 결과값 - String certMet = ""; // 인증방법 - String ip = ""; // ip주소 - String plusInfo = ""; - - String encPara = ""; - String encMsg1 = ""; - String encMsg2 = ""; - String msgChk = ""; - - IcertSecuManager seed = new IcertSecuManager(); - - //02. 1차 복호화 - //수신된 certNum를 이용하여 복호화 - rec_cert = seed.getDec(rec_cert, k_certNum); - - //03. 1차 파싱 - int inf1 = rec_cert.indexOf("/",0); - int inf2 = rec_cert.indexOf("/",inf1+1); - - encPara = rec_cert.substring(0,inf1); //암호화된 통합 파라미터 - encMsg1 = rec_cert.substring(inf1+1,inf2); //암호화된 통합 파라미터의 Hash값 - - //04. 위변조 검증 - encMsg2 = seed.getMsg(encPara); - kmcVO.setEncMsg2(encMsg2); - if(encMsg2.equals(encMsg1)){ - msgChk="Y"; - } - - if(!"Y".equals(msgChk)) { - errMessage = "비정상접근입니다."; - return returnPage(model , errMessage , kmcVO) ; - } - - //05. 2차 복호화 - rec_cert = seed.getDec(encPara, k_certNum); - kmcVO.setRecCert(rec_cert); - //06. 2차 파싱 - int info1 = rec_cert.indexOf("/",0); - int info2 = rec_cert.indexOf("/",info1+1); - int info3 = rec_cert.indexOf("/",info2+1); - int info4 = rec_cert.indexOf("/",info3+1); - int info5 = rec_cert.indexOf("/",info4+1); - int info6 = rec_cert.indexOf("/",info5+1); - int info7 = rec_cert.indexOf("/",info6+1); - int info8 = rec_cert.indexOf("/",info7+1); - int info9 = rec_cert.indexOf("/",info8+1); - int info10 = rec_cert.indexOf("/",info9+1); - int info11 = rec_cert.indexOf("/",info10+1); - int info12 = rec_cert.indexOf("/",info11+1); - int info13 = rec_cert.indexOf("/",info12+1); - int info14 = rec_cert.indexOf("/",info13+1); - int info15 = rec_cert.indexOf("/",info14+1); - int info16 = rec_cert.indexOf("/",info15+1); - int info17 = rec_cert.indexOf("/",info16+1); - int info18 = rec_cert.indexOf("/",info17+1); - - certNum = rec_cert.substring(0,info1); kmcVO.setCertNum(certNum); - date = rec_cert.substring(info1+1,info2); kmcVO.setDate(date); - CI = rec_cert.substring(info2+1,info3); kmcVO.setCI(CI); - phoneNo = rec_cert.substring(info3+1,info4); kmcVO.setPhoneNo(phoneNo); - phoneCorp = rec_cert.substring(info4+1,info5); kmcVO.setPhoneCorp(phoneCorp); - birthDay = rec_cert.substring(info5+1,info6); kmcVO.setBirthDay(birthDay); - gender = rec_cert.substring(info6+1,info7); kmcVO.setGender(gender); - nation = rec_cert.substring(info7+1,info8); kmcVO.setNation(nation); - name = rec_cert.substring(info8+1,info9); kmcVO.setName(name); - result = rec_cert.substring(info9+1,info10); kmcVO.setResult(result); - certMet = rec_cert.substring(info10+1,info11); kmcVO.setCertMet(certMet); - ip = rec_cert.substring(info11+1,info12); kmcVO.setIp(ip); - M_name = rec_cert.substring(info12+1,info13); kmcVO.setMName(M_name); - M_birthDay = rec_cert.substring(info13+1,info14); kmcVO.setMBirthDay(M_birthDay); - M_Gender = rec_cert.substring(info14+1,info15); kmcVO.setMGender(M_Gender); - M_nation = rec_cert.substring(info15+1,info16); kmcVO.setMNation(M_nation); - plusInfo = rec_cert.substring(info16+1,info17); kmcVO.setPlusInfo(plusInfo); - DI = rec_cert.substring(info17+1,info18); kmcVO.setDI(DI); - - //07. CI, DI 복호화 - CI = seed.getDec(CI, k_certNum); kmcVO.setCI(CI); - DI = seed.getDec(DI, k_certNum); kmcVO.setDI(DI); - - if("Y".equals(result)) { - - } - - //-------------------------------------------------------------- - String regex = ""; - if( certNum.length() == 0 || certNum.length() > 40){ - errMessage = "요청번호 비정상."; - return returnPage(model , errMessage , kmcVO) ; - } - - regex = "[0-9]*"; - if( date.length() != 14 || !paramChk(regex, date) ){ - errMessage = "요청일시"; - return returnPage(model , errMessage , kmcVO) ; - } - - regex = "[A-Z]*"; - if( certMet.length() != 1 || !paramChk(regex, certMet) ){ - errMessage = "본인인증방법 비정상" + certMet; - return returnPage(model , errMessage , kmcVO) ; - } - - - regex = "[0-9]*"; - if( (phoneNo.length() != 10 && phoneNo.length() != 11) || !paramChk(regex, phoneNo) ){ - errMessage = "휴대폰번호 비정상" ; - return returnPage(model , errMessage , kmcVO) ; - } - - regex = "[A-Z]*"; - if( phoneCorp.length() != 3 || !paramChk(regex, phoneCorp) ){ - errMessage = "이동통신사 비정상"; - return returnPage(model , errMessage , kmcVO) ; - } - - regex = "[0-9]*"; - if( birthDay.length() != 8 || !paramChk(regex, birthDay) ){ - errMessage = "생년월일 비정상"; - return returnPage(model , errMessage , kmcVO) ; - } - - regex = "[0-9]*"; - if( gender.length() != 1 || !paramChk(regex, gender) ){ - errMessage = "성별 비정상"; - return returnPage(model , errMessage , kmcVO) ; - } - - regex = "[0-9]*"; - if( nation.length() != 1 || !paramChk(regex, nation) ){ - errMessage = "내/외국인 비정상"; - return returnPage(model , errMessage , kmcVO) ; - } - - regex = "[\\sA-Za-z가-�R.,-]*"; - if( name.length() > 60 || !paramChk(regex, name) ){ - errMessage = "성명 비정상"; - return returnPage(model , errMessage , kmcVO) ; - } - - regex = "[A-Z]*"; - if( result.length() != 1 || !paramChk(regex, result) ){ - errMessage = "결과값 비정상"; - return returnPage(model , errMessage , kmcVO) ; - } - - regex = "[\\sA-Za-z가-?.,-]*"; - if( M_name.length() != 0 ){ - if( M_name.length() > 60 || !paramChk(regex, M_name) ){ - errMessage = "미성년자 성명 비정상"; - return returnPage(model , errMessage , kmcVO) ; - } - } - - regex = "[0-9]*"; - if( M_birthDay.length() != 0 ){ - if( M_birthDay.length() != 8 || !paramChk(regex, M_birthDay) ){ - errMessage = "미성년자 생년월일 비정상"; - return returnPage(model , errMessage , kmcVO) ; - } - } - - regex = "[0-9]*"; - if( M_Gender.length() != 0 ){ - if( M_Gender.length() != 1 || !paramChk(regex, M_Gender) ){ - errMessage = "미성년자 성별 비정상"; - return returnPage(model , errMessage , kmcVO) ; - } - } - - regex = "[0-9]*"; - if( M_nation.length() != 0 ){ - if( M_nation.length() != 1 || !paramChk(regex, M_nation) ){ - errMessage = "미성년자 내/외국인 비정상"; - return returnPage(model , errMessage , kmcVO) ; - } - } - + //kmc 본인인증 결과처리 + kmcVO = kmcCertChecker.authCertResult(request, response, model); /* * plusInfo(본인인증 추가파라미터) * 구분지 "§" @@ -2188,32 +1750,17 @@ public class EgovMypageController { * */ String tmp = kmcVO.getPlusInfo(); String[] tmpResult = tmp.split("§"); + kmcVO.setPlusInfo(tmpResult[0]); + //kmc 본인인증 로그 처리 + AuthCertVO certVO = kmcCertChecker.insertCertLog(kmcVO, "KMC_발신번호 등록 인증"); - //KMC 본인인증 로그 - AuthCertVO certVO = new AuthCertVO(); - - certVO.setMberId(tmpResult[0]); - certVO.setCertNum(kmcVO.getCertNum()); - certVO.setCertDate(kmcVO.getDate()); - certVO.setCertDi(kmcVO.getDI()); - certVO.setCertPhone(kmcVO.getPhoneNo()); - certVO.setCertNation(kmcVO.getNation()); - certVO.setCertName(kmcVO.getName()); - certVO.setCertResult(kmcVO.getResult()); - certVO.setCertType("KMC_발신번호 등록 인증"); - certVO.setCertIpaddr(kmcVO.getIp()); - certVO.setBirthDay(kmcVO.getBirthDay()); - certVO.setSexdstnCode(kmcVO.getGender()); - - //디비 테이블에 저장하기 - mberManageService.insertCertInfoLog(certVO); LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; String mblDn = userManageService.selectUserMblDnById(loginVO.getId()); String resultDnFlag = "N"; - if(DI.equals(mblDn)) { + if((kmcVO.getDI()).equals(mblDn)) { resultDnFlag = "Y"; } @@ -2295,14 +1842,8 @@ public class EgovMypageController { model.addAttribute("resultNameChk", resultNameChk); //=======================끝========================= - String birthDay_tmp = ""; - try { - birthDay_tmp = kmcVO.getMBirthDay().length() != 0 ? kmcVO.getMBirthDay() : kmcVO.getBirthDay(); - } catch (Exception e) { - birthDay_tmp = birthDay; - } model.addAttribute("CI", kmcVO.getCI()); - model.addAttribute("birthDay", birthDay_tmp); + model.addAttribute("birthDay", kmcVO.getBirthDay()); return "web/user/selectPhoneNumberCertChkReq"; } @@ -2326,232 +1867,25 @@ public class EgovMypageController { */ @RequestMapping("/web/user/insertPhoneSendNumber.do") public String insertPhoneSendNumber( - HttpServletRequest request, ModelMap model + HttpServletRequest request, HttpServletResponse response, ModelMap model , @RequestParam Map commandMap , @ModelAttribute("searchVO") KmcVO kmcVO ) throws Exception { - - String errMessage = ""; //에러메세지 + - String rec_cert = ""; // 결과값(암호화) - String certNum = ""; // certNum - - rec_cert = request.getParameter("rec_cert").trim(); - certNum = request.getParameter("certNum").trim(); - - kmcVO.setRecCert(rec_cert); - kmcVO.setCertNum(certNum); - // 파라미터 유효성 검증 - if( rec_cert.length() == 0 || certNum.length() == 0 ){ - errMessage = "비정상"; - return returnPage(model , errMessage , kmcVO) ; - } - - - // 변수선언 -------------------------------------------------------------------------------------------------------- - String k_certNum = ""; // 파라미터로 수신한 요청번호 - k_certNum = certNum; - String date = ""; // 요청일시 - String CI = ""; // 연계정보(CI) - String DI = ""; // 중복가입확인정보(DI) - String phoneNo = ""; // 휴대폰번호 - String phoneCorp = ""; // 이동통신사 - String birthDay = ""; // 생년월일 - String gender = ""; // 성별 - String nation = ""; // 내국인 - String name = ""; // 성명 - String M_name = ""; // 미성년자 성명 - String M_birthDay = ""; // 미성년자 생년월일 - String M_Gender = ""; // 미성년자 성별 - String M_nation = ""; // 미성년자 내외국인 - String result = ""; // 결과값 - - String certMet = ""; // 인증방법 - String ip = ""; // ip주소 - String plusInfo = ""; - - String encPara = ""; - String encMsg1 = ""; - String encMsg2 = ""; - String msgChk = ""; - - IcertSecuManager seed = new IcertSecuManager(); - - //02. 1차 복호화 - //수신된 certNum를 이용하여 복호화 - rec_cert = seed.getDec(rec_cert, k_certNum); - - //03. 1차 파싱 - int inf1 = rec_cert.indexOf("/",0); - int inf2 = rec_cert.indexOf("/",inf1+1); - - encPara = rec_cert.substring(0,inf1); //암호화된 통합 파라미터 - encMsg1 = rec_cert.substring(inf1+1,inf2); //암호화된 통합 파라미터의 Hash값 - - //04. 위변조 검증 - encMsg2 = seed.getMsg(encPara); - kmcVO.setEncMsg2(encMsg2); - if(encMsg2.equals(encMsg1)){ - msgChk="Y"; - } - - if(!"Y".equals(msgChk)) { - errMessage = "비정상접근입니다."; - return returnPage(model , errMessage , kmcVO) ; - } - - //05. 2차 복호화 - rec_cert = seed.getDec(encPara, k_certNum); - kmcVO.setRecCert(rec_cert); - //06. 2차 파싱 - int info1 = rec_cert.indexOf("/",0); - int info2 = rec_cert.indexOf("/",info1+1); - int info3 = rec_cert.indexOf("/",info2+1); - int info4 = rec_cert.indexOf("/",info3+1); - int info5 = rec_cert.indexOf("/",info4+1); - int info6 = rec_cert.indexOf("/",info5+1); - int info7 = rec_cert.indexOf("/",info6+1); - int info8 = rec_cert.indexOf("/",info7+1); - int info9 = rec_cert.indexOf("/",info8+1); - int info10 = rec_cert.indexOf("/",info9+1); - int info11 = rec_cert.indexOf("/",info10+1); - int info12 = rec_cert.indexOf("/",info11+1); - int info13 = rec_cert.indexOf("/",info12+1); - int info14 = rec_cert.indexOf("/",info13+1); - int info15 = rec_cert.indexOf("/",info14+1); - int info16 = rec_cert.indexOf("/",info15+1); - int info17 = rec_cert.indexOf("/",info16+1); - int info18 = rec_cert.indexOf("/",info17+1); - - certNum = rec_cert.substring(0,info1); kmcVO.setCertNum(certNum); - date = rec_cert.substring(info1+1,info2); kmcVO.setDate(date); - CI = rec_cert.substring(info2+1,info3); kmcVO.setCI(CI); - phoneNo = rec_cert.substring(info3+1,info4); kmcVO.setPhoneNo(phoneNo); - phoneCorp = rec_cert.substring(info4+1,info5); kmcVO.setPhoneCorp(phoneCorp); - birthDay = rec_cert.substring(info5+1,info6); kmcVO.setBirthDay(birthDay); - gender = rec_cert.substring(info6+1,info7); kmcVO.setGender(gender); - nation = rec_cert.substring(info7+1,info8); kmcVO.setNation(nation); - name = rec_cert.substring(info8+1,info9); kmcVO.setName(name); - result = rec_cert.substring(info9+1,info10); kmcVO.setResult(result); - certMet = rec_cert.substring(info10+1,info11); kmcVO.setCertMet(certMet); - ip = rec_cert.substring(info11+1,info12); kmcVO.setIp(ip); - M_name = rec_cert.substring(info12+1,info13); kmcVO.setMName(M_name); - M_birthDay = rec_cert.substring(info13+1,info14); kmcVO.setMBirthDay(M_birthDay); - M_Gender = rec_cert.substring(info14+1,info15); kmcVO.setMGender(M_Gender); - M_nation = rec_cert.substring(info15+1,info16); kmcVO.setMNation(M_nation); - plusInfo = rec_cert.substring(info16+1,info17); kmcVO.setPlusInfo(plusInfo); - DI = rec_cert.substring(info17+1,info18); kmcVO.setDI(DI); - - //07. CI, DI 복호화 - CI = seed.getDec(CI, k_certNum); kmcVO.setCI(CI); - DI = seed.getDec(DI, k_certNum); kmcVO.setDI(DI); - - if("Y".equals(result)) { - - } - - //-------------------------------------------------------------- - String regex = ""; - if( certNum.length() == 0 || certNum.length() > 40){ - errMessage = "요청번호 비정상."; - return returnPage(model , errMessage , kmcVO) ; - } - - regex = "[0-9]*"; - if( date.length() != 14 || !paramChk(regex, date) ){ - errMessage = "요청일시"; - return returnPage(model , errMessage , kmcVO) ; - } - - regex = "[A-Z]*"; - if( certMet.length() != 1 || !paramChk(regex, certMet) ){ - errMessage = "본인인증방법 비정상" + certMet; - return returnPage(model , errMessage , kmcVO) ; - } - - - regex = "[0-9]*"; - if( (phoneNo.length() != 10 && phoneNo.length() != 11) || !paramChk(regex, phoneNo) ){ - errMessage = "휴대폰번호 비정상" ; - return returnPage(model , errMessage , kmcVO) ; - } - - regex = "[A-Z]*"; - if( phoneCorp.length() != 3 || !paramChk(regex, phoneCorp) ){ - errMessage = "이동통신사 비정상"; - return returnPage(model , errMessage , kmcVO) ; - } - - regex = "[0-9]*"; - if( birthDay.length() != 8 || !paramChk(regex, birthDay) ){ - errMessage = "생년월일 비정상"; - return returnPage(model , errMessage , kmcVO) ; - } - - regex = "[0-9]*"; - if( gender.length() != 1 || !paramChk(regex, gender) ){ - errMessage = "성별 비정상"; - return returnPage(model , errMessage , kmcVO) ; - } - - regex = "[0-9]*"; - if( nation.length() != 1 || !paramChk(regex, nation) ){ - errMessage = "내/외국인 비정상"; - return returnPage(model , errMessage , kmcVO) ; - } - - regex = "[\\sA-Za-z가-�R.,-]*"; - if( name.length() > 60 || !paramChk(regex, name) ){ - errMessage = "성명 비정상"; - return returnPage(model , errMessage , kmcVO) ; - } - - regex = "[A-Z]*"; - if( result.length() != 1 || !paramChk(regex, result) ){ - errMessage = "결과값 비정상"; - return returnPage(model , errMessage , kmcVO) ; - } - - regex = "[\\sA-Za-z가-?.,-]*"; - if( M_name.length() != 0 ){ - if( M_name.length() > 60 || !paramChk(regex, M_name) ){ - errMessage = "미성년자 성명 비정상"; - return returnPage(model , errMessage , kmcVO) ; - } - } - - regex = "[0-9]*"; - if( M_birthDay.length() != 0 ){ - if( M_birthDay.length() != 8 || !paramChk(regex, M_birthDay) ){ - errMessage = "미성년자 생년월일 비정상"; - return returnPage(model , errMessage , kmcVO) ; - } - } - - regex = "[0-9]*"; - if( M_Gender.length() != 0 ){ - if( M_Gender.length() != 1 || !paramChk(regex, M_Gender) ){ - errMessage = "미성년자 성별 비정상"; - return returnPage(model , errMessage , kmcVO) ; - } - } - - regex = "[0-9]*"; - if( M_nation.length() != 0 ){ - if( M_nation.length() != 1 || !paramChk(regex, M_nation) ){ - errMessage = "미성년자 내/외국인 비정상"; - return returnPage(model , errMessage , kmcVO) ; - } - } + //kmc 본인인증 결과처리 + kmcVO = kmcCertChecker.authCertResult(request, response, model); + //kmc 본인인증 로그 처리 + AuthCertVO certVO = kmcCertChecker.insertCertLog(kmcVO, "휴대폰 인증 발신번호 등록"); MjPhoneMemberVO mjPhoneMemberVO = new MjPhoneMemberVO(); - mjPhoneMemberVO.setUserId(plusInfo); + mjPhoneMemberVO.setUserId(kmcVO.getPlusInfo()); mjPhoneMemberVO.setPhmType("01"); mjPhoneMemberVO.setPhmAuthType("01"); - mjPhoneMemberVO.setFrstRegisterId(plusInfo); - mjPhoneMemberVO.setLastUpdusrId(plusInfo); - mjPhoneMemberVO.setPhoneNumber(phoneNo); - mjPhoneMemberVO.setUserName(name); + mjPhoneMemberVO.setFrstRegisterId(kmcVO.getPlusInfo()); + mjPhoneMemberVO.setLastUpdusrId(kmcVO.getPlusInfo()); + mjPhoneMemberVO.setPhoneNumber(kmcVO.getPhoneNo()); + mjPhoneMemberVO.setUserName(kmcVO.getName()); mjPhoneMemberVO.setAuthYn("Y"); mjonMsgService.insertSendNumber(mjPhoneMemberVO); @@ -2953,7 +2287,7 @@ public class EgovMypageController { mberCertPhoneVO.setTrUrl("/web/user/selectMberSecessionAjax.do"); mberCertPhoneVO.setName(name); - AuthCertVO certVO = kmcCertCheck.authCertCheck(mberCertPhoneVO, request); + AuthCertVO certVO = kmcCertChecker.authCertCheck(mberCertPhoneVO, request); model.addAttribute("certVO", certVO); return "web/user/mberSecession"; @@ -3054,7 +2388,7 @@ public class EgovMypageController { mberCertPhoneVO.setTrUrl("/web/user/selectSecurityAuthn.do"); mberCertPhoneVO.setPlusInfo(loginVO.getId()); - AuthCertVO certVO = kmcCertCheck.authCertCheck(mberCertPhoneVO, request); + AuthCertVO certVO = kmcCertChecker.authCertCheck(mberCertPhoneVO, request); model.addAttribute("certVO", certVO); } @@ -3132,232 +2466,24 @@ public class EgovMypageController { */ @RequestMapping("/web/user/selectMberSecessionAjax.do") public String selectMberSecessionAjax( - HttpServletRequest request, ModelMap model + HttpServletRequest request, HttpServletResponse response, ModelMap model , @RequestParam Map commandMap , @ModelAttribute("searchVO") KmcVO kmcVO ) throws Exception { - String errMessage = ""; //에러메세지 - - String rec_cert = ""; // 결과값(암호화) - String certNum = ""; // certNum - - rec_cert = request.getParameter("rec_cert").trim(); - certNum = request.getParameter("certNum").trim(); - - kmcVO.setRecCert(rec_cert); - kmcVO.setCertNum(certNum); - // 파라미터 유효성 검증 - if( rec_cert.length() == 0 || certNum.length() == 0 ){ - errMessage = "비정상"; - return returnPage(model , errMessage , kmcVO) ; - } - - - // 변수선언 -------------------------------------------------------------------------------------------------------- - String k_certNum = ""; // 파라미터로 수신한 요청번호 - k_certNum = certNum; - String date = ""; // 요청일시 - String CI = ""; // 연계정보(CI) - String DI = ""; // 중복가입확인정보(DI) - String phoneNo = ""; // 휴대폰번호 - String phoneCorp = ""; // 이동통신사 - String birthDay = ""; // 생년월일 - String gender = ""; // 성별 - String nation = ""; // 내국인 - String name = ""; // 성명 - String M_name = ""; // 미성년자 성명 - String M_birthDay = ""; // 미성년자 생년월일 - String M_Gender = ""; // 미성년자 성별 - String M_nation = ""; // 미성년자 내외국인 - String result = ""; // 결과값 - - String certMet = ""; // 인증방법 - String ip = ""; // ip주소 - String plusInfo = ""; - - String encPara = ""; - String encMsg1 = ""; - String encMsg2 = ""; - String msgChk = ""; - - com.icert.comm.secu.IcertSecuManager seed = new com.icert.comm.secu.IcertSecuManager(); - - //02. 1차 복호화 - //수신된 certNum를 이용하여 복호화 - rec_cert = seed.getDec(rec_cert, k_certNum); - - //03. 1차 파싱 - int inf1 = rec_cert.indexOf("/",0); - int inf2 = rec_cert.indexOf("/",inf1+1); - - encPara = rec_cert.substring(0,inf1); //암호화된 통합 파라미터 - encMsg1 = rec_cert.substring(inf1+1,inf2); //암호화된 통합 파라미터의 Hash값 - - //04. 위변조 검증 - encMsg2 = seed.getMsg(encPara); - kmcVO.setEncMsg2(encMsg2); - if(encMsg2.equals(encMsg1)){ - msgChk="Y"; - } - - if(!"Y".equals(msgChk)) { - errMessage = "비정상접근입니다."; - return returnPage(model , errMessage , kmcVO) ; - } - - //05. 2차 복호화 - rec_cert = seed.getDec(encPara, k_certNum); - kmcVO.setRecCert(rec_cert); - //06. 2차 파싱 - int info1 = rec_cert.indexOf("/",0); - int info2 = rec_cert.indexOf("/",info1+1); - int info3 = rec_cert.indexOf("/",info2+1); - int info4 = rec_cert.indexOf("/",info3+1); - int info5 = rec_cert.indexOf("/",info4+1); - int info6 = rec_cert.indexOf("/",info5+1); - int info7 = rec_cert.indexOf("/",info6+1); - int info8 = rec_cert.indexOf("/",info7+1); - int info9 = rec_cert.indexOf("/",info8+1); - int info10 = rec_cert.indexOf("/",info9+1); - int info11 = rec_cert.indexOf("/",info10+1); - int info12 = rec_cert.indexOf("/",info11+1); - int info13 = rec_cert.indexOf("/",info12+1); - int info14 = rec_cert.indexOf("/",info13+1); - int info15 = rec_cert.indexOf("/",info14+1); - int info16 = rec_cert.indexOf("/",info15+1); - int info17 = rec_cert.indexOf("/",info16+1); - int info18 = rec_cert.indexOf("/",info17+1); - - certNum = rec_cert.substring(0,info1); kmcVO.setCertNum(certNum); - date = rec_cert.substring(info1+1,info2); kmcVO.setDate(date); - CI = rec_cert.substring(info2+1,info3); kmcVO.setCI(CI); - phoneNo = rec_cert.substring(info3+1,info4); kmcVO.setPhoneNo(phoneNo); - phoneCorp = rec_cert.substring(info4+1,info5); kmcVO.setPhoneCorp(phoneCorp); - birthDay = rec_cert.substring(info5+1,info6); kmcVO.setBirthDay(birthDay); - gender = rec_cert.substring(info6+1,info7); kmcVO.setGender(gender); - nation = rec_cert.substring(info7+1,info8); kmcVO.setNation(nation); - name = rec_cert.substring(info8+1,info9); kmcVO.setName(name); - result = rec_cert.substring(info9+1,info10); kmcVO.setResult(result); - certMet = rec_cert.substring(info10+1,info11); kmcVO.setCertMet(certMet); - ip = rec_cert.substring(info11+1,info12); kmcVO.setIp(ip); - M_name = rec_cert.substring(info12+1,info13); kmcVO.setMName(M_name); - M_birthDay = rec_cert.substring(info13+1,info14); kmcVO.setMBirthDay(M_birthDay); - M_Gender = rec_cert.substring(info14+1,info15); kmcVO.setMGender(M_Gender); - M_nation = rec_cert.substring(info15+1,info16); kmcVO.setMNation(M_nation); - plusInfo = rec_cert.substring(info16+1,info17); kmcVO.setPlusInfo(plusInfo); - DI = rec_cert.substring(info17+1,info18); kmcVO.setDI(DI); - - //07. CI, DI 복호화 - CI = seed.getDec(CI, k_certNum); kmcVO.setCI(CI); - DI = seed.getDec(DI, k_certNum); kmcVO.setDI(DI); - - if("Y".equals(result)) { - - } - - //-------------------------------------------------------------- - String regex = ""; - if( certNum.length() == 0 || certNum.length() > 40){ - errMessage = "요청번호 비정상."; - return returnPage(model , errMessage , kmcVO) ; - } - - regex = "[0-9]*"; - if( date.length() != 14 || !paramChk(regex, date) ){ - errMessage = "요청일시"; - return returnPage(model , errMessage , kmcVO) ; - } - - regex = "[A-Z]*"; - if( certMet.length() != 1 || !paramChk(regex, certMet) ){ - errMessage = "본인인증방법 비정상" + certMet; - return returnPage(model , errMessage , kmcVO) ; - } - - - regex = "[0-9]*"; - if( (phoneNo.length() != 10 && phoneNo.length() != 11) || !paramChk(regex, phoneNo) ){ - errMessage = "휴대폰번호 비정상" ; - return returnPage(model , errMessage , kmcVO) ; - } - - regex = "[A-Z]*"; - if( phoneCorp.length() != 3 || !paramChk(regex, phoneCorp) ){ - errMessage = "이동통신사 비정상"; - return returnPage(model , errMessage , kmcVO) ; - } - - regex = "[0-9]*"; - if( birthDay.length() != 8 || !paramChk(regex, birthDay) ){ - errMessage = "생년월일 비정상"; - return returnPage(model , errMessage , kmcVO) ; - } - - regex = "[0-9]*"; - if( gender.length() != 1 || !paramChk(regex, gender) ){ - errMessage = "성별 비정상"; - return returnPage(model , errMessage , kmcVO) ; - } - - regex = "[0-9]*"; - if( nation.length() != 1 || !paramChk(regex, nation) ){ - errMessage = "내/외국인 비정상"; - return returnPage(model , errMessage , kmcVO) ; - } - - regex = "[\\sA-Za-z가-�R.,-]*"; - if( name.length() > 60 || !paramChk(regex, name) ){ - errMessage = "성명 비정상"; - return returnPage(model , errMessage , kmcVO) ; - } - - regex = "[A-Z]*"; - if( result.length() != 1 || !paramChk(regex, result) ){ - errMessage = "결과값 비정상"; - return returnPage(model , errMessage , kmcVO) ; - } - - regex = "[\\sA-Za-z가-?.,-]*"; - if( M_name.length() != 0 ){ - if( M_name.length() > 60 || !paramChk(regex, M_name) ){ - errMessage = "미성년자 성명 비정상"; - return returnPage(model , errMessage , kmcVO) ; - } - } - - regex = "[0-9]*"; - if( M_birthDay.length() != 0 ){ - if( M_birthDay.length() != 8 || !paramChk(regex, M_birthDay) ){ - errMessage = "미성년자 생년월일 비정상"; - return returnPage(model , errMessage , kmcVO) ; - } - } - - regex = "[0-9]*"; - if( M_Gender.length() != 0 ){ - if( M_Gender.length() != 1 || !paramChk(regex, M_Gender) ){ - errMessage = "미성년자 성별 비정상"; - return returnPage(model , errMessage , kmcVO) ; - } - } - - regex = "[0-9]*"; - if( M_nation.length() != 0 ){ - if( M_nation.length() != 1 || !paramChk(regex, M_nation) ){ - errMessage = "미성년자 내/외국인 비정상"; - return returnPage(model , errMessage , kmcVO) ; - } - } + //kmc 본인인증 결과처리 + kmcVO = kmcCertChecker.authCertResult(request, response, model); + //kmc 본인인증 로그 처리 + AuthCertVO certVO = kmcCertChecker.insertCertLog(kmcVO, "회원탈퇴 본인인증"); MjPhoneMemberVO mjPhoneMemberVO = new MjPhoneMemberVO(); - mjPhoneMemberVO.setUserId(plusInfo); + mjPhoneMemberVO.setUserId(kmcVO.getPlusInfo()); mjPhoneMemberVO.setPhmType("01"); mjPhoneMemberVO.setPhmAuthType("01"); - mjPhoneMemberVO.setFrstRegisterId(plusInfo); - mjPhoneMemberVO.setLastUpdusrId(plusInfo); - mjPhoneMemberVO.setPhoneNumber(phoneNo); - mjPhoneMemberVO.setUserName(name); + mjPhoneMemberVO.setFrstRegisterId(kmcVO.getPlusInfo()); + mjPhoneMemberVO.setLastUpdusrId(kmcVO.getPlusInfo()); + mjPhoneMemberVO.setPhoneNumber(kmcVO.getPhoneNo()); + mjPhoneMemberVO.setUserName(kmcVO.getName()); mjPhoneMemberVO.setAuthYn("Y"); mjonMsgService.insertSendNumber(mjPhoneMemberVO); @@ -3662,7 +2788,7 @@ public class EgovMypageController { */ @RequestMapping("/web/user/selectSecurityAuthn.do") public String selectSecurityAuthn( - HttpServletRequest request, ModelMap model + HttpServletRequest request, HttpServletResponse response, ModelMap model , @RequestParam Map commandMap , @ModelAttribute("searchVO") KmcVO kmcVO ) throws Exception { @@ -3671,243 +2797,13 @@ public class EgovMypageController { String mblDn = userManageService.selectUserMblDnById(loginVO.getId()); model.addAttribute("loginVO", loginVO); - String errMessage = ""; //에러메세지 - - String rec_cert = ""; // 결과값(암호화) - String certNum = ""; // certNum - - rec_cert = request.getParameter("rec_cert").trim(); - certNum = request.getParameter("certNum").trim(); - - kmcVO.setRecCert(rec_cert); - kmcVO.setCertNum(certNum); - // 파라미터 유효성 검증 - if( rec_cert.length() == 0 || certNum.length() == 0 ){ - errMessage = "비정상"; - return returnPage(model , errMessage , kmcVO) ; - } - - - // 변수선언 -------------------------------------------------------------------------------------------------------- - String k_certNum = ""; // 파라미터로 수신한 요청번호 - k_certNum = certNum; - String date = ""; // 요청일시 - String CI = ""; // 연계정보(CI) - String DI = ""; // 중복가입확인정보(DI) - String phoneNo = ""; // 휴대폰번호 - String phoneCorp = ""; // 이동통신사 - String birthDay = ""; // 생년월일 - String gender = ""; // 성별 - String nation = ""; // 내국인 - String name = ""; // 성명 - String M_name = ""; // 미성년자 성명 - String M_birthDay = ""; // 미성년자 생년월일 - String M_Gender = ""; // 미성년자 성별 - String M_nation = ""; // 미성년자 내외국인 - String result = ""; // 결과값 - - String certMet = ""; // 인증방법 - String ip = ""; // ip주소 - String plusInfo = ""; - - String encPara = ""; - String encMsg1 = ""; - String encMsg2 = ""; - String msgChk = ""; - - com.icert.comm.secu.IcertSecuManager seed = new com.icert.comm.secu.IcertSecuManager(); - - //02. 1차 복호화 - //수신된 certNum를 이용하여 복호화 - rec_cert = seed.getDec(rec_cert, k_certNum); - - //03. 1차 파싱 - int inf1 = rec_cert.indexOf("/",0); - int inf2 = rec_cert.indexOf("/",inf1+1); - - encPara = rec_cert.substring(0,inf1); //암호화된 통합 파라미터 - encMsg1 = rec_cert.substring(inf1+1,inf2); //암호화된 통합 파라미터의 Hash값 - - //04. 위변조 검증 - encMsg2 = seed.getMsg(encPara); - kmcVO.setEncMsg2(encMsg2); - if(encMsg2.equals(encMsg1)){ - msgChk="Y"; - } - - if(!"Y".equals(msgChk)) { - errMessage = "비정상접근입니다."; - return returnPage(model , errMessage , kmcVO) ; - } - - //05. 2차 복호화 - rec_cert = seed.getDec(encPara, k_certNum); - kmcVO.setRecCert(rec_cert); - //06. 2차 파싱 - int info1 = rec_cert.indexOf("/",0); - int info2 = rec_cert.indexOf("/",info1+1); - int info3 = rec_cert.indexOf("/",info2+1); - int info4 = rec_cert.indexOf("/",info3+1); - int info5 = rec_cert.indexOf("/",info4+1); - int info6 = rec_cert.indexOf("/",info5+1); - int info7 = rec_cert.indexOf("/",info6+1); - int info8 = rec_cert.indexOf("/",info7+1); - int info9 = rec_cert.indexOf("/",info8+1); - int info10 = rec_cert.indexOf("/",info9+1); - int info11 = rec_cert.indexOf("/",info10+1); - int info12 = rec_cert.indexOf("/",info11+1); - int info13 = rec_cert.indexOf("/",info12+1); - int info14 = rec_cert.indexOf("/",info13+1); - int info15 = rec_cert.indexOf("/",info14+1); - int info16 = rec_cert.indexOf("/",info15+1); - int info17 = rec_cert.indexOf("/",info16+1); - int info18 = rec_cert.indexOf("/",info17+1); - - certNum = rec_cert.substring(0,info1); kmcVO.setCertNum(certNum); - date = rec_cert.substring(info1+1,info2); kmcVO.setDate(date); - CI = rec_cert.substring(info2+1,info3); kmcVO.setCI(CI); - phoneNo = rec_cert.substring(info3+1,info4); kmcVO.setPhoneNo(phoneNo); - phoneCorp = rec_cert.substring(info4+1,info5); kmcVO.setPhoneCorp(phoneCorp); - birthDay = rec_cert.substring(info5+1,info6); kmcVO.setBirthDay(birthDay); - gender = rec_cert.substring(info6+1,info7); kmcVO.setGender(gender); - nation = rec_cert.substring(info7+1,info8); kmcVO.setNation(nation); - name = rec_cert.substring(info8+1,info9); kmcVO.setName(name); - result = rec_cert.substring(info9+1,info10); kmcVO.setResult(result); - certMet = rec_cert.substring(info10+1,info11); kmcVO.setCertMet(certMet); - ip = rec_cert.substring(info11+1,info12); kmcVO.setIp(ip); - M_name = rec_cert.substring(info12+1,info13); kmcVO.setMName(M_name); - M_birthDay = rec_cert.substring(info13+1,info14); kmcVO.setMBirthDay(M_birthDay); - M_Gender = rec_cert.substring(info14+1,info15); kmcVO.setMGender(M_Gender); - M_nation = rec_cert.substring(info15+1,info16); kmcVO.setMNation(M_nation); - plusInfo = rec_cert.substring(info16+1,info17); kmcVO.setPlusInfo(plusInfo); - DI = rec_cert.substring(info17+1,info18); kmcVO.setDI(DI); - - //07. CI, DI 복호화 - CI = seed.getDec(CI, k_certNum); kmcVO.setCI(CI); - DI = seed.getDec(DI, k_certNum); kmcVO.setDI(DI); - - if("Y".equals(result)) { - - } - - //-------------------------------------------------------------- - String regex = ""; - if( certNum.length() == 0 || certNum.length() > 40){ - errMessage = "요청번호 비정상."; - return returnPage(model , errMessage , kmcVO) ; - } - - regex = "[0-9]*"; - if( date.length() != 14 || !paramChk(regex, date) ){ - errMessage = "요청일시"; - return returnPage(model , errMessage , kmcVO) ; - } - - regex = "[A-Z]*"; - if( certMet.length() != 1 || !paramChk(regex, certMet) ){ - errMessage = "본인인증방법 비정상" + certMet; - return returnPage(model , errMessage , kmcVO) ; - } - - - regex = "[0-9]*"; - if( (phoneNo.length() != 10 && phoneNo.length() != 11) || !paramChk(regex, phoneNo) ){ - errMessage = "휴대폰번호 비정상" ; - return returnPage(model , errMessage , kmcVO) ; - } - - regex = "[A-Z]*"; - if( phoneCorp.length() != 3 || !paramChk(regex, phoneCorp) ){ - errMessage = "이동통신사 비정상"; - return returnPage(model , errMessage , kmcVO) ; - } - - regex = "[0-9]*"; - if( birthDay.length() != 8 || !paramChk(regex, birthDay) ){ - errMessage = "생년월일 비정상"; - return returnPage(model , errMessage , kmcVO) ; - } - - regex = "[0-9]*"; - if( gender.length() != 1 || !paramChk(regex, gender) ){ - errMessage = "성별 비정상"; - return returnPage(model , errMessage , kmcVO) ; - } - - regex = "[0-9]*"; - if( nation.length() != 1 || !paramChk(regex, nation) ){ - errMessage = "내/외국인 비정상"; - return returnPage(model , errMessage , kmcVO) ; - } - - regex = "[\\sA-Za-z가-�R.,-]*"; - if( name.length() > 60 || !paramChk(regex, name) ){ - errMessage = "성명 비정상"; - return returnPage(model , errMessage , kmcVO) ; - } - - regex = "[A-Z]*"; - if( result.length() != 1 || !paramChk(regex, result) ){ - errMessage = "결과값 비정상"; - return returnPage(model , errMessage , kmcVO) ; - } - - regex = "[\\sA-Za-z가-?.,-]*"; - if( M_name.length() != 0 ){ - if( M_name.length() > 60 || !paramChk(regex, M_name) ){ - errMessage = "미성년자 성명 비정상"; - return returnPage(model , errMessage , kmcVO) ; - } - } - - regex = "[0-9]*"; - if( M_birthDay.length() != 0 ){ - if( M_birthDay.length() != 8 || !paramChk(regex, M_birthDay) ){ - errMessage = "미성년자 생년월일 비정상"; - return returnPage(model , errMessage , kmcVO) ; - } - } - - regex = "[0-9]*"; - if( M_Gender.length() != 0 ){ - if( M_Gender.length() != 1 || !paramChk(regex, M_Gender) ){ - errMessage = "미성년자 성별 비정상"; - return returnPage(model , errMessage , kmcVO) ; - } - } - - regex = "[0-9]*"; - if( M_nation.length() != 0 ){ - if( M_nation.length() != 1 || !paramChk(regex, M_nation) ){ - errMessage = "미성년자 내/외국인 비정상"; - return returnPage(model , errMessage , kmcVO) ; - } - } - - - //KMC 본인인증 로그 - AuthCertVO certVO = new AuthCertVO(); - certVO.setMberId(kmcVO.getPlusInfo()); - certVO.setCertNum(kmcVO.getCertNum()); - certVO.setCertDate(kmcVO.getDate()); - certVO.setCertDi(kmcVO.getDI()); - certVO.setCertPhone(kmcVO.getPhoneNo()); - certVO.setCertNation(kmcVO.getNation()); - certVO.setCertName(kmcVO.getName()); - certVO.setCertResult(kmcVO.getResult()); - certVO.setCertType("secureLoginOFF"); - certVO.setCertIpaddr(kmcVO.getIp()); - certVO.setBirthDay(kmcVO.getBirthDay()); - certVO.setSexdstnCode(kmcVO.getGender()); - - - //디비 테이블에 저장하기 - mberManageService.insertCertInfoLog(certVO); - - + //kmc 본인인증 결과처리 + kmcVO = kmcCertChecker.authCertResult(request, response, model); + //kmc 본인인증 로그 처리 + AuthCertVO certVO = kmcCertChecker.insertCertLog(kmcVO, "secureLoginOFF"); //본인 명의만 번호 변경 가능하게 - if(mblDn.equals(DI)) { + if(mblDn.equals(kmcVO.getDI())) { String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); MberManageVO mberManageVO = new MberManageVO(); mberManageVO.setSecuLoginFlag("N"); diff --git a/src/main/java/itn/let/uat/uia/web/KmcCertChecker.java b/src/main/java/itn/let/uat/uia/web/KmcCertChecker.java index 16c2aace..b627f605 100644 --- a/src/main/java/itn/let/uat/uia/web/KmcCertChecker.java +++ b/src/main/java/itn/let/uat/uia/web/KmcCertChecker.java @@ -1,29 +1,44 @@ package itn.let.uat.uia.web; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.net.HttpURLConnection; +import java.net.URL; import java.text.SimpleDateFormat; import java.util.Calendar; -import java.util.Map; import java.util.Random; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; -import org.apache.commons.lang3.StringUtils; +import org.json.simple.JSONObject; +import org.json.simple.parser.JSONParser; +import org.json.simple.parser.ParseException; import org.springframework.stereotype.Component; import org.springframework.ui.ModelMap; +import org.springframework.web.servlet.FlashMap; +import org.springframework.web.servlet.FlashMapManager; +import org.springframework.web.servlet.support.RequestContextUtils; import com.icert.comm.secu.IcertSecuManager; import itn.let.cert.phone.service.CertPhoneService; import itn.let.cert.phone.service.MberCertPhoneVO; +import itn.let.mjo.pay.service.KmcVO; import itn.let.uat.uia.service.AuthCertVO; -import itn.let.uss.umt.service.MberManageVO; +import itn.let.uss.umt.service.EgovMberManageService; @Component("KmcCertChecker") public class KmcCertChecker { @Resource(name = "CertPhoneService") private CertPhoneService certPhoneService; + + @Resource(name = "mberManageService") + private EgovMberManageService mberManageService; //회원가입 시 인증수단을 휴대폰 본인인증만 했을 경우 사용 public AuthCertVO authCertCheck( @@ -64,11 +79,13 @@ public class KmcCertChecker { String tr_add = "N"; // IFrame사용여부 //01. 한국모바일인증(주) 암호화 모듈 선언 - IcertSecuManager seed = new IcertSecuManager(); +// IcertSecuManager seed = new IcertSecuManager(); + com.icert.comm.secu.IcertSecuManager seed = new com.icert.comm.secu.IcertSecuManager(); //02. 1차 암호화 (tr_cert 데이터변수 조합 후 암호화) String enc_tr_cert = ""; tr_cert = cpId +"/"+ urlCode +"/"+ certNum +"/"+ date +"/"+ certMet +"/"+ birthDay +"/"+ gender +"/"+ name +"/"+ phoneNo +"/"+ phoneCorp +"/"+ nation +"/"+ plusInfo +"/"+ extendVar; +// tr_cert = cpId +"/"+ urlCode +"/"+ certNum +"/"+ date +"/"+ certMet +"///////"+ plusInfo +"/"+ extendVar; enc_tr_cert = seed.getEnc(tr_cert, ""); //03. 1차 암호화 데이터에 대한 위변조 검증값 생성 (HMAC) @@ -87,7 +104,315 @@ public class KmcCertChecker { return authCertVO; } + public KmcVO authCertResult( + HttpServletRequest request + , HttpServletResponse response + , ModelMap model + ) throws IOException { + + //크롬 SameSite정책 방지 - 도메인이 다른 타사로 이동 시 크롬 정책에 의해 세션 유실이 일어나는 경우가 있는데, 이를 방지하기 위해 samesite 보안을 none처리 + response.setHeader("Set-Cookie", "mberSession=mberSession; Secure; SameSite=None"); + + KmcVO kmcVO = new KmcVO(); //return VO + + // 변수 ------------------------------------------------------------------------------------------------------------- + String api_token = ""; // 토큰값(암호화) + String api_certNum = ""; // 요청번호(암호화) + + String message = ""; // JSON 전문 + String result_cd = ""; // JSON 결과코드 + String result_msg = ""; // JSON 결과-상세 + String strResult = ""; // JSON 결과 + String apiRecCert = ""; // JSON 전송 데이터 + String apiCertNum = ""; // JSON 전송 데이터 + + String rec_cert = ""; // 결과수신DATA + String k_certNum = ""; // 파라미터로 수신한 요청번호 + String certNum = ""; // 요청번호 + String date = ""; // 요청일시 + String CI = ""; // 연계정보(CI) + String DI = ""; // 중복가입확인정보(DI) + String phoneNo = ""; // 휴대폰번호 + String phoneCorp = ""; // 이동통신사 + String birth = ""; // 생년월일 + String gender = ""; // 성별 + String nation = ""; // 내국인 + String name = ""; // 성명 + String reserve1 = ""; // 예비필드 + String reserve2 = ""; // 예비필드 + String reserve3 = ""; // 예비필드 + String reserve4 = ""; // 예비필드 + String result = ""; // 결과값 + + String certMet = ""; // 인증방법 + String ip = ""; // ip주소 + String plusInfo = ""; + + String encPara = ""; + String encMsg1 = ""; + String encMsg2 = ""; + String msgChk = ""; + //----------------------------------------------------------------------------------------------------------------- + try{ + // Parameter 수신 -------------------------------------------------------------------- + api_token = request.getParameter("apiToken").trim(); + api_certNum = request.getParameter("certNum"); + + // 파라미터 유효성 검증 + if( api_token.length() == 0 ){ + goErrorPage("토큰값 비정상", request, response); + return kmcVO; + } + if( api_certNum.length() == 0 ){ + goErrorPage("요청번호 비정상", request, response); + return kmcVO; + } + + //현재시각 세팅(YYYYMMDDHI24MISS) + Calendar today = Calendar.getInstance(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); + String api_date = sdf.format(today.getTime()); + + //01. 암호화 모듈 (jar) Loading + com.icert.comm.secu.IcertSecuManager seed = new com.icert.comm.secu.IcertSecuManager(); + + //api_token, api_certNum 복호화 + api_token = seed.getDec(api_token, ""); + api_certNum = seed.getDec(api_certNum, ""); + + // 파라미터 유효성 검증 + if( api_token.length() == 0 ){ + goErrorPage("토큰값 비정상(복호화 후)", request, response); + return kmcVO; + } + if( api_certNum.length() == 0 ){ + goErrorPage("요청번호 비정상(복호화 후)", request, response); + return kmcVO; + } + + // 1. URL 설정 + String serverURL = "https://www.kmcert.com/kmcis/api/kmcisToken_api.jsp"; + + // 2. 연결 생성 + URL url = new URL(serverURL); + + // 3. HttpURLConnection 객체 생성. + HttpURLConnection con = null; + OutputStream wr = null; + BufferedReader bufferedReader = null; + + // 4. URL 연결 (웹페이지 URL 연결.) + con = (HttpURLConnection)url.openConnection(); + + con.setConnectTimeout(20000); // TimeOut 시간 (서버 접속시 연결 시간 - 20초) + con.setReadTimeout(20000); // TimeOut 시간 (Read시 연결 시간 - 20초) + con.setDoOutput(true); // OutputStream으로 POST 데이터를 넘겨주겠다는 옵션. + + con.setRequestProperty("Content-Type", "application/json;charset=utf-8"); // 타입설정(application/json) 형식으로 전송 (Request Body 전달시 application/json로 서버에 전달.) + con.setRequestProperty("Accept", "application/json"); // 서버 Response Data를 JSON 형식의 타입으로 요청. + con.setRequestMethod("POST"); // 요청 방식 선택 (POST) + + // 5. JSON 전문 구성 + + JSONObject jsonData = new JSONObject(); + + jsonData.put("apiToken", api_token); + jsonData.put("apiDate", api_date); + + message = jsonData.toString(); + + // 6. 전송 + // Request Body에 Data를 담기위해 OutputStream 객체를 생성. + wr = con.getOutputStream(); + + // Request Body에 Data 셋팅.(한글깨짐 방지를 위해 utf-8인코딩 처리 + wr.write(message.getBytes("utf-8")); + wr.flush(); + wr.close(); + + // 실제 서버로 Request 요청 하는 부분. (응답 코드를 받는다. 200 성공, 나머지 에러) + int responseCode = con.getResponseCode(); + + // 4. 결과 수신 + if(responseCode == 200){ + bufferedReader = new BufferedReader(new InputStreamReader(con.getInputStream(), "UTF-8")); + }else{ + bufferedReader = new BufferedReader(new InputStreamReader(con.getErrorStream(), "UTF-8")); + } + + if(bufferedReader != null){ + + StringBuilder stringBuilder = new StringBuilder(); + String line = ""; + + while((line = bufferedReader.readLine()) != null){ + stringBuilder.append(line); + } + bufferedReader.close(); + + String stringRet = stringBuilder.toString(); + + // 5. 넘어온 문자열을 JSON 객체로 변환 + JSONParser jsonParser = new JSONParser(); + + //JSON데이터를 넣어 JSON Object 로 만들어 준다. + JSONObject jsonObj = (JSONObject)jsonParser.parse(stringRet); + + // 6. JSON 객체에서 데이터 가져오기 + + if(jsonObj.get("result_cd") != null){ + result_cd = jsonObj.get("result_cd").toString(); + if("APR01".equals(result_cd)){ + //통신성공 + strResult = "Y"; + rec_cert = jsonObj.get("apiRecCert").toString(); + k_certNum = jsonObj.get("apiCertNum").toString(); + }else if("APR02".equals(result_cd)){ + //실패 - Token Expire + strResult = "N"; + result_msg = "실패 - Token Expire"; + }else if("APR03".equals(result_cd)){ + //실패 - Token Not Found + strResult = "N"; + result_msg = "실패 - Token Not Found"; + }else if("APR04".equals(result_cd)){ + //실패 - API 요청일시 길이 오류 + strResult = "N"; + result_msg = "실패 - API 요청일시 길이 오류"; + }else if("APR05".equals(result_cd)){ + //실패 - API 토큰 길이 오류 + strResult = "N"; + result_msg = "실패 - API 토큰 길이 오류"; + }else if("APR06".equals(result_cd)){ + //실패 - 결과전송 재요청(3회 제한) + strResult = "N"; + result_msg = "실패 - 결과전송 재요청(3회 제한)"; + } + }else{ + //JSON 결과코드 에러 + strResult = "F"; + } + }else{ //timeout except 처리 + strResult = "F"; + } + + // 파라미터 유효성 검증 + if(!strResult.equals("Y")){ + goErrorPage("결과값 비정상, 결과코드["+result_cd+"], "+"상세내용["+result_msg+"]", request, response); + return kmcVO; + } + + //02. 1차 복호화 + rec_cert = seed.getDec(rec_cert, ""); + + //03. 1차 파싱 + int inf1 = rec_cert.indexOf("/",0); + int inf2 = rec_cert.indexOf("/",inf1+1); + + encPara = rec_cert.substring(0,inf1); //암호화된 통합 파라미터 + encMsg1 = rec_cert.substring(inf1+1,inf2); //암호화된 통합 파라미터의 Hash값 + + //04. 위변조 검증 + encMsg2 = seed.getMsg(encPara); + + if(encMsg2.equals(encMsg1)){ + msgChk="Y"; + } + + if(msgChk.equals("N")){ + goErrorPage("비정상적인 접근입니다.!!", request, response); + return kmcVO; + } + + //05. 2차 복호화 + rec_cert = seed.getDec(encPara, ""); + + //06. 2차 파싱 + int info1 = rec_cert.indexOf("/",0); + int info2 = rec_cert.indexOf("/",info1+1); + int info3 = rec_cert.indexOf("/",info2+1); + int info4 = rec_cert.indexOf("/",info3+1); + int info5 = rec_cert.indexOf("/",info4+1); + int info6 = rec_cert.indexOf("/",info5+1); + int info7 = rec_cert.indexOf("/",info6+1); + int info8 = rec_cert.indexOf("/",info7+1); + int info9 = rec_cert.indexOf("/",info8+1); + int info10 = rec_cert.indexOf("/",info9+1); + int info11 = rec_cert.indexOf("/",info10+1); + int info12 = rec_cert.indexOf("/",info11+1); + int info13 = rec_cert.indexOf("/",info12+1); + int info14 = rec_cert.indexOf("/",info13+1); + int info15 = rec_cert.indexOf("/",info14+1); + int info16 = rec_cert.indexOf("/",info15+1); + int info17 = rec_cert.indexOf("/",info16+1); + int info18 = rec_cert.indexOf("/",info17+1); + + kmcVO.setCertNum (rec_cert.substring(0,info1)); + kmcVO.setDate (rec_cert.substring(info1+1,info2)); + //CI 복호화 + kmcVO.setCI (seed.getDec(rec_cert.substring(info2+1,info3), "")); + kmcVO.setPhoneNo (rec_cert.substring(info3+1,info4)); + kmcVO.setPhoneCorp (rec_cert.substring(info4+1,info5)); + kmcVO.setBirthDay (rec_cert.substring(info5+1,info6)); + kmcVO.setGender (rec_cert.substring(info6+1,info7)); + kmcVO.setNation (rec_cert.substring(info7+1,info8)); + kmcVO.setName (rec_cert.substring(info8+1,info9)); + kmcVO.setResult (rec_cert.substring(info9+1,info10)); + kmcVO.setCertMet (rec_cert.substring(info10+1,info11)); + kmcVO.setIp (rec_cert.substring(info11+1,info12)); + kmcVO.setReserve1 (rec_cert.substring(info12+1,info13)); + kmcVO.setReserve2 (rec_cert.substring(info13+1,info14)); + kmcVO.setReserve3 (rec_cert.substring(info14+1,info15)); + kmcVO.setReserve4 (rec_cert.substring(info15+1,info16)); + kmcVO.setPlusInfo (rec_cert.substring(info16+1,info17)); + //DI 복호화 + kmcVO.setDI (seed.getDec(rec_cert.substring(info17+1,info18), "")); + + //07. CI, DI 복호화 +// CI = seed.getDec(CI, ""); +// DI = seed.getDec(DI, ""); + + // ---------------------------------------------------------------------------------- + + }catch(StringIndexOutOfBoundsException ex){ + goErrorPage("StringIndexOutOfBoundsException", request, response); + }catch(NullPointerException ex){ + goErrorPage("NullPointerException", request, response); + }catch(NumberFormatException ex){ + goErrorPage("NumberFormatException", request, response); + }catch(IllegalStateException ex){ + goErrorPage("IllegalStateException", request, response); + }catch(IndexOutOfBoundsException ex){ + goErrorPage("IndexOutOfBoundsException", request, response); + } catch (IOException e) { + goErrorPage("IOException", request, response); + } catch (ParseException e) { + goErrorPage("ParseException", request, response); + } + return kmcVO; + } + public AuthCertVO insertCertLog(KmcVO kmcVO, String msg) throws Exception { + //KMC 본인인증 로그 insert + AuthCertVO certVO = new AuthCertVO(); + certVO.setMberId(kmcVO.getPlusInfo()); + certVO.setCertNum(kmcVO.getCertNum()); + certVO.setCertDate(kmcVO.getDate()); + certVO.setCertDi(kmcVO.getDI()); + certVO.setCertPhone(kmcVO.getPhoneNo()); + certVO.setCertNation(kmcVO.getNation()); + certVO.setCertName(kmcVO.getName()); + certVO.setCertResult(kmcVO.getResult()); + certVO.setCertType(msg); + certVO.setCertIpaddr(kmcVO.getIp()); + certVO.setBirthDay(kmcVO.getBirthDay()); + certVO.setSexdstnCode(kmcVO.getGender()); + + //디비 테이블에 저장하기 + mberManageService.insertCertInfoLog(certVO); + + return certVO; + } private String getDomain(HttpServletRequest request) { String serverNm = request.getScheme() + "://" + request.getServerName(); @@ -144,5 +469,12 @@ public class KmcCertChecker { return mberCertPhoneVO; } + private void goErrorPage(String msg, HttpServletRequest request, HttpServletResponse response) throws IOException { + FlashMap flashMap = RequestContextUtils.getOutputFlashMap(request); + flashMap.put("msg", msg); + FlashMapManager flashMapManager = RequestContextUtils.getFlashMapManager(request); + flashMapManager.saveOutputFlashMap(flashMap, request, response); + response.sendRedirect("/web/cert/log/kmcErrorPage.do"); + } } diff --git a/src/main/java/itn/let/uat/uia/web/SendLogVO.java b/src/main/java/itn/let/uat/uia/web/SendLogVO.java index a26fd6e2..43a77053 100644 --- a/src/main/java/itn/let/uat/uia/web/SendLogVO.java +++ b/src/main/java/itn/let/uat/uia/web/SendLogVO.java @@ -19,6 +19,8 @@ public class SendLogVO { /*내용*/ private String contents; + private String sendMsgType; + public String getSendId() { return sendId; @@ -62,5 +64,13 @@ public class SendLogVO { public void setContents(String contents) { this.contents = contents; } + public String getSendMsgType() { + return sendMsgType; + } + public void setSendMsgType(String sendMsgType) { + this.sendMsgType = sendMsgType; + } + + } diff --git a/src/main/resources/egovframework/spring/com/context-security.xml b/src/main/resources/egovframework/spring/com/context-security.xml index 069661d3..a255a542 100644 --- a/src/main/resources/egovframework/spring/com/context-security.xml +++ b/src/main/resources/egovframework/spring/com/context-security.xml @@ -4,7 +4,7 @@ xmlns:security="http://www.springframework.org/schema/security" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-4.2.xsd - http://www.egovframe.go.kr/schema/egov-security http://www.egovframe.go.kr/schema/egov-security/egov-security-3.7.xsd"> + http://www.egovframe.go.kr/schema/egov-security http://maven.egovframe.go.kr/schema/egov-security/egov-security-3.7.xsd"> diff --git a/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml b/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml index 14a46bbd..68d64018 100644 --- a/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml +++ b/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml @@ -3735,7 +3735,8 @@ RECEIVE, FRST_SEND_PNTTM, CHECK_NO, - CONTENTS + CONTENTS, + SEND_MSG_TYPE ) @@ -3748,7 +3749,8 @@ #receive#, now(), #checkNo#, - #contents# + #contents#, + #sendMsgType# ) @@ -8296,5 +8298,21 @@ + + diff --git a/src/main/resources/egovframework/sqlmap/let/sym/site/EgovSiteManage_SQL_Mysql.xml b/src/main/resources/egovframework/sqlmap/let/sym/site/EgovSiteManage_SQL_Mysql.xml index d6a6a6c3..ea5f1a4f 100644 --- a/src/main/resources/egovframework/sqlmap/let/sym/site/EgovSiteManage_SQL_Mysql.xml +++ b/src/main/resources/egovframework/sqlmap/let/sym/site/EgovSiteManage_SQL_Mysql.xml @@ -980,6 +980,7 @@ IFNULL(SLACK_NOTI, 'N') AS slackNoti, IFNULL(SMISHING_NOTI, 'N') AS smishingNoti, IFNULL(HOLI_SMISHING_NOTI, 'N') AS holiSmishingNoti, + IFNULL(SMS_NOTI_IF_OVER_FIFTY, 'N') AS smsNotiIfOverFifty, LAST_UPDUSR_ID AS lasUpdusrId, LAST_UPDT_PNTTM AS lastUpdtPnttm FROM MJ_MBER_SETTING diff --git a/src/main/webapp/WEB-INF/jsp/sample/kmc/kmcis_web_sample_step02.jsp b/src/main/webapp/WEB-INF/jsp/sample/kmc/kmcis_web_sample_step02.jsp index bfb40e06..fe0ea7a2 100644 --- a/src/main/webapp/WEB-INF/jsp/sample/kmc/kmcis_web_sample_step02.jsp +++ b/src/main/webapp/WEB-INF/jsp/sample/kmc/kmcis_web_sample_step02.jsp @@ -344,6 +344,7 @@ +
diff --git a/src/main/webapp/WEB-INF/jsp/web/addr/AddrGroupListAjax.jsp b/src/main/webapp/WEB-INF/jsp/web/addr/AddrGroupListAjax.jsp index 90887669..99981aa2 100644 --- a/src/main/webapp/WEB-INF/jsp/web/addr/AddrGroupListAjax.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/addr/AddrGroupListAjax.jsp @@ -904,5 +904,6 @@ function listAddrTransHistAjax(pageNo) { + diff --git a/src/main/webapp/WEB-INF/jsp/web/com/webCommonHeader.jsp b/src/main/webapp/WEB-INF/jsp/web/com/webCommonHeader.jsp index 2c837113..d2ca05c5 100644 --- a/src/main/webapp/WEB-INF/jsp/web/com/webCommonHeader.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/com/webCommonHeader.jsp @@ -1885,6 +1885,7 @@ function actionLogin_end(){ +
diff --git a/src/main/webapp/WEB-INF/jsp/web/cop/bbs/include/mberSecession.jsp b/src/main/webapp/WEB-INF/jsp/web/cop/bbs/include/mberSecession.jsp index 9072a7b0..09125047 100644 --- a/src/main/webapp/WEB-INF/jsp/web/cop/bbs/include/mberSecession.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/cop/bbs/include/mberSecession.jsp @@ -90,6 +90,7 @@ function openMberSecessionInfo(key){ +
diff --git a/src/main/webapp/WEB-INF/jsp/web/cop/kmc/certResultError.jsp b/src/main/webapp/WEB-INF/jsp/web/cop/kmc/certResultError.jsp new file mode 100644 index 00000000..565fdcd6 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/web/cop/kmc/certResultError.jsp @@ -0,0 +1,22 @@ +<%@ page contentType="text/html; charset=utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/web/fax/addr/FaxAddrGroupListAjax.jsp b/src/main/webapp/WEB-INF/jsp/web/fax/addr/FaxAddrGroupListAjax.jsp index d0de8555..117cfb1e 100644 --- a/src/main/webapp/WEB-INF/jsp/web/fax/addr/FaxAddrGroupListAjax.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/fax/addr/FaxAddrGroupListAjax.jsp @@ -821,5 +821,6 @@ function listAddrTransHistAjax(pageNo) { + diff --git a/src/main/webapp/WEB-INF/jsp/web/login/findUserId.jsp b/src/main/webapp/WEB-INF/jsp/web/login/findUserId.jsp index f4e2265e..e52bbd18 100644 --- a/src/main/webapp/WEB-INF/jsp/web/login/findUserId.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/login/findUserId.jsp @@ -860,6 +860,7 @@ function fnAddUserView() { + diff --git a/src/main/webapp/WEB-INF/jsp/web/login/humanPageAuthenticatedPage.jsp b/src/main/webapp/WEB-INF/jsp/web/login/humanPageAuthenticatedPage.jsp index 020d8983..2f9bbee3 100644 --- a/src/main/webapp/WEB-INF/jsp/web/login/humanPageAuthenticatedPage.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/login/humanPageAuthenticatedPage.jsp @@ -129,6 +129,7 @@ function fnAddUserView() { + diff --git a/src/main/webapp/WEB-INF/jsp/web/login/test_usrCheckTerms.jsp b/src/main/webapp/WEB-INF/jsp/web/login/test_usrCheckTerms.jsp index 5e8c9229..b953cd01 100644 --- a/src/main/webapp/WEB-INF/jsp/web/login/test_usrCheckTerms.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/login/test_usrCheckTerms.jsp @@ -644,6 +644,7 @@ +
diff --git a/src/main/webapp/WEB-INF/jsp/web/login/usrCheckTerms.jsp b/src/main/webapp/WEB-INF/jsp/web/login/usrCheckTerms.jsp index 0e17e4ed..87a80317 100644 --- a/src/main/webapp/WEB-INF/jsp/web/login/usrCheckTerms.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/login/usrCheckTerms.jsp @@ -634,6 +634,7 @@ +
diff --git a/src/main/webapp/WEB-INF/jsp/web/login/usrCheckTerms_back2.jsp b/src/main/webapp/WEB-INF/jsp/web/login/usrCheckTerms_back2.jsp index 4fde2d3c..afcc2ad8 100644 --- a/src/main/webapp/WEB-INF/jsp/web/login/usrCheckTerms_back2.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/login/usrCheckTerms_back2.jsp @@ -707,6 +707,7 @@ +
diff --git a/src/main/webapp/WEB-INF/jsp/web/user/mberCompanyInfoChange.jsp b/src/main/webapp/WEB-INF/jsp/web/user/mberCompanyInfoChange.jsp index 87e70649..c0af9af3 100644 --- a/src/main/webapp/WEB-INF/jsp/web/user/mberCompanyInfoChange.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/user/mberCompanyInfoChange.jsp @@ -505,6 +505,7 @@ function changeValueWork(obj){ +
diff --git a/src/main/webapp/WEB-INF/jsp/web/user/mberInfoChange.jsp b/src/main/webapp/WEB-INF/jsp/web/user/mberInfoChange.jsp index eb6e25a3..d0471fd4 100644 --- a/src/main/webapp/WEB-INF/jsp/web/user/mberInfoChange.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/user/mberInfoChange.jsp @@ -218,6 +218,7 @@ function updateUserInfo(){ + diff --git a/src/main/webapp/WEB-INF/jsp/web/user/mberInfoIndex.jsp b/src/main/webapp/WEB-INF/jsp/web/user/mberInfoIndex.jsp index b2e0e58b..563f5775 100644 --- a/src/main/webapp/WEB-INF/jsp/web/user/mberInfoIndex.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/user/mberInfoIndex.jsp @@ -304,6 +304,7 @@ function callTo() { +
diff --git a/src/main/webapp/WEB-INF/jsp/web/user/mberSecession.jsp b/src/main/webapp/WEB-INF/jsp/web/user/mberSecession.jsp index 532579b6..75bde8cf 100644 --- a/src/main/webapp/WEB-INF/jsp/web/user/mberSecession.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/user/mberSecession.jsp @@ -97,6 +97,7 @@ function openMberSecessionInfo(key){ +
diff --git a/src/main/webapp/WEB-INF/jsp/web/user/mberSecureLogin.jsp b/src/main/webapp/WEB-INF/jsp/web/user/mberSecureLogin.jsp index 86677aef..829833c2 100644 --- a/src/main/webapp/WEB-INF/jsp/web/user/mberSecureLogin.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/user/mberSecureLogin.jsp @@ -704,6 +704,7 @@ function linkPage(pageNo){ +
diff --git a/src/main/webapp/WEB-INF/jsp/web/user/sendNumberKmcReqPage.jsp b/src/main/webapp/WEB-INF/jsp/web/user/sendNumberKmcReqPage.jsp index e8dc2e0a..cc40d7ff 100644 --- a/src/main/webapp/WEB-INF/jsp/web/user/sendNumberKmcReqPage.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/user/sendNumberKmcReqPage.jsp @@ -27,7 +27,7 @@ -

+ <%--

[복호화 후 수신값]

@@ -120,6 +120,6 @@ rec_cert : ${kmcVO.recCert}


- [다시 테스트] + [다시 테스트] --%> \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/web/user/sendNumberManageRegister.jsp b/src/main/webapp/WEB-INF/jsp/web/user/sendNumberManageRegister.jsp index 6483f195..6c21fdfe 100644 --- a/src/main/webapp/WEB-INF/jsp/web/user/sendNumberManageRegister.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/user/sendNumberManageRegister.jsp @@ -863,6 +863,7 @@ function nameChk(target){ + diff --git a/src/main/webapp/WEB-INF/jsp/web/user/sendNumberManage_bak220502.jsp b/src/main/webapp/WEB-INF/jsp/web/user/sendNumberManage_bak220502.jsp index 95439b24..632a653a 100644 --- a/src/main/webapp/WEB-INF/jsp/web/user/sendNumberManage_bak220502.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/user/sendNumberManage_bak220502.jsp @@ -408,6 +408,7 @@ function guideTab(obj){ + diff --git a/src/main/webapp/WEB-INF/lib/ICERTSecu_JDK18.jar b/src/main/webapp/WEB-INF/lib/ICERTSecu_JDK18.jar deleted file mode 100644 index 7fde5742..00000000 Binary files a/src/main/webapp/WEB-INF/lib/ICERTSecu_JDK18.jar and /dev/null differ