Merge branch 'master' of http://hylee@vcs.iten.co.kr:9999/hylee/mjon_git
@88fd5b0223789c2db2f99af25a31bd91ac9c3dad
--- src/main/java/itn/let/uat/uia/web/EgovMypageController.java
+++ src/main/java/itn/let/uat/uia/web/EgovMypageController.java
... | ... | @@ -171,6 +171,7 @@ |
| 171 | 171 |
@RequestMapping(value="/web/user/mberInfoIndex.do") |
| 172 | 172 |
public String mberInfoIndex( |
| 173 | 173 |
ModelMap model |
| 174 |
+ , HttpServletRequest request |
|
| 174 | 175 |
, RedirectAttributes redirectAttributes) throws Exception {
|
| 175 | 176 |
|
| 176 | 177 |
//로그인 권한정보 불러오기 |
... | ... | @@ -447,6 +448,27 @@ |
| 447 | 448 |
model.addAttribute("unPaymentPointAfterPay", unPaymentPointAfterPay);
|
| 448 | 449 |
|
| 449 | 450 |
} |
| 451 |
+ |
|
| 452 |
+ |
|
| 453 |
+ {
|
|
| 454 |
+ /** |
|
| 455 |
+ * 보안인증 본인인증 기능추가 |
|
| 456 |
+ * 20241120 원영현 과장 추가 |
|
| 457 |
+ * */ |
|
| 458 |
+ KmcCertChecker kmcCertCheck = new KmcCertChecker(); |
|
| 459 |
+ |
|
| 460 |
+ //kmc 본인인증 실/개발 서버 구분 |
|
| 461 |
+ String serverNm = ""; |
|
| 462 |
+ if(request.getServerName().contains("192.168.0.60") || request.getServerName().contains("localhost")) {
|
|
| 463 |
+ serverNm = request.getScheme() + "://192.168.0.60:8085"; |
|
| 464 |
+ }else{
|
|
| 465 |
+ serverNm = request.getScheme() + "://www.munjaon.co.kr"; |
|
| 466 |
+ } |
|
| 467 |
+ |
|
| 468 |
+ AuthCertVO certVO = kmcCertCheck.authCertCheckNine(serverNm + "/web/user/selectSecurityAuthn.do", loginVO.getId()); |
|
| 469 |
+ model.addAttribute("certVO", certVO);
|
|
| 470 |
+ } |
|
| 471 |
+ |
|
| 450 | 472 |
|
| 451 | 473 |
return "web/user/mberInfoIndex"; |
| 452 | 474 |
} |
... | ... | @@ -3494,4 +3516,254 @@ |
| 3494 | 3516 |
} |
| 3495 | 3517 |
return modelAndView; |
| 3496 | 3518 |
} |
| 3519 |
+ |
|
| 3520 |
+ |
|
| 3521 |
+ /** |
|
| 3522 |
+ * 회원정보 조회 휴대폰 인증 |
|
| 3523 |
+ */ |
|
| 3524 |
+ @RequestMapping("/web/user/selectSecurityAuthn.do")
|
|
| 3525 |
+ public String selectSecurityAuthn( |
|
| 3526 |
+ HttpServletRequest request, ModelMap model |
|
| 3527 |
+ , @RequestParam Map<String, Object> commandMap |
|
| 3528 |
+ , @ModelAttribute("searchVO") KmcVO kmcVO ) throws Exception {
|
|
| 3529 |
+ |
|
| 3530 |
+ //개인회원일 시 mblDn 비교 후 본인 명의 휴대폰만 변경 가능하게끔 |
|
| 3531 |
+ LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; |
|
| 3532 |
+ String mblDn = userManageService.selectUserMblDnById(loginVO.getId()); |
|
| 3533 |
+ model.addAttribute("loginVO", loginVO);
|
|
| 3534 |
+ |
|
| 3535 |
+ String errMessage = ""; //에러메세지 |
|
| 3536 |
+ |
|
| 3537 |
+ String rec_cert = ""; // 결과값(암호화) |
|
| 3538 |
+ String certNum = ""; // certNum |
|
| 3539 |
+ |
|
| 3540 |
+ rec_cert = request.getParameter("rec_cert").trim();
|
|
| 3541 |
+ certNum = request.getParameter("certNum").trim();
|
|
| 3542 |
+ |
|
| 3543 |
+ kmcVO.setRecCert(rec_cert); |
|
| 3544 |
+ kmcVO.setCertNum(certNum); |
|
| 3545 |
+ // 파라미터 유효성 검증 |
|
| 3546 |
+ if( rec_cert.length() == 0 || certNum.length() == 0 ){
|
|
| 3547 |
+ errMessage = "비정상"; |
|
| 3548 |
+ return returnPage(model , errMessage , kmcVO) ; |
|
| 3549 |
+ } |
|
| 3550 |
+ |
|
| 3551 |
+ |
|
| 3552 |
+ // 변수선언 -------------------------------------------------------------------------------------------------------- |
|
| 3553 |
+ String k_certNum = ""; // 파라미터로 수신한 요청번호 |
|
| 3554 |
+ k_certNum = certNum; |
|
| 3555 |
+ String date = ""; // 요청일시 |
|
| 3556 |
+ String CI = ""; // 연계정보(CI) |
|
| 3557 |
+ String DI = ""; // 중복가입확인정보(DI) |
|
| 3558 |
+ String phoneNo = ""; // 휴대폰번호 |
|
| 3559 |
+ String phoneCorp = ""; // 이동통신사 |
|
| 3560 |
+ String birthDay = ""; // 생년월일 |
|
| 3561 |
+ String gender = ""; // 성별 |
|
| 3562 |
+ String nation = ""; // 내국인 |
|
| 3563 |
+ String name = ""; // 성명 |
|
| 3564 |
+ String M_name = ""; // 미성년자 성명 |
|
| 3565 |
+ String M_birthDay = ""; // 미성년자 생년월일 |
|
| 3566 |
+ String M_Gender = ""; // 미성년자 성별 |
|
| 3567 |
+ String M_nation = ""; // 미성년자 내외국인 |
|
| 3568 |
+ String result = ""; // 결과값 |
|
| 3569 |
+ |
|
| 3570 |
+ String certMet = ""; // 인증방법 |
|
| 3571 |
+ String ip = ""; // ip주소 |
|
| 3572 |
+ String plusInfo = ""; |
|
| 3573 |
+ |
|
| 3574 |
+ String encPara = ""; |
|
| 3575 |
+ String encMsg1 = ""; |
|
| 3576 |
+ String encMsg2 = ""; |
|
| 3577 |
+ String msgChk = ""; |
|
| 3578 |
+ |
|
| 3579 |
+ com.icert.comm.secu.IcertSecuManager seed = new com.icert.comm.secu.IcertSecuManager(); |
|
| 3580 |
+ |
|
| 3581 |
+ //02. 1차 복호화 |
|
| 3582 |
+ //수신된 certNum를 이용하여 복호화 |
|
| 3583 |
+ rec_cert = seed.getDec(rec_cert, k_certNum); |
|
| 3584 |
+ |
|
| 3585 |
+ //03. 1차 파싱 |
|
| 3586 |
+ int inf1 = rec_cert.indexOf("/",0);
|
|
| 3587 |
+ int inf2 = rec_cert.indexOf("/",inf1+1);
|
|
| 3588 |
+ |
|
| 3589 |
+ encPara = rec_cert.substring(0,inf1); //암호화된 통합 파라미터 |
|
| 3590 |
+ encMsg1 = rec_cert.substring(inf1+1,inf2); //암호화된 통합 파라미터의 Hash값 |
|
| 3591 |
+ |
|
| 3592 |
+ //04. 위변조 검증 |
|
| 3593 |
+ encMsg2 = seed.getMsg(encPara); |
|
| 3594 |
+ kmcVO.setEncMsg2(encMsg2); |
|
| 3595 |
+ if(encMsg2.equals(encMsg1)){
|
|
| 3596 |
+ msgChk="Y"; |
|
| 3597 |
+ } |
|
| 3598 |
+ |
|
| 3599 |
+ if(!"Y".equals(msgChk)) {
|
|
| 3600 |
+ errMessage = "비정상접근입니다."; |
|
| 3601 |
+ return returnPage(model , errMessage , kmcVO) ; |
|
| 3602 |
+ } |
|
| 3603 |
+ |
|
| 3604 |
+ //05. 2차 복호화 |
|
| 3605 |
+ rec_cert = seed.getDec(encPara, k_certNum); |
|
| 3606 |
+ kmcVO.setRecCert(rec_cert); |
|
| 3607 |
+ //06. 2차 파싱 |
|
| 3608 |
+ int info1 = rec_cert.indexOf("/",0);
|
|
| 3609 |
+ int info2 = rec_cert.indexOf("/",info1+1);
|
|
| 3610 |
+ int info3 = rec_cert.indexOf("/",info2+1);
|
|
| 3611 |
+ int info4 = rec_cert.indexOf("/",info3+1);
|
|
| 3612 |
+ int info5 = rec_cert.indexOf("/",info4+1);
|
|
| 3613 |
+ int info6 = rec_cert.indexOf("/",info5+1);
|
|
| 3614 |
+ int info7 = rec_cert.indexOf("/",info6+1);
|
|
| 3615 |
+ int info8 = rec_cert.indexOf("/",info7+1);
|
|
| 3616 |
+ int info9 = rec_cert.indexOf("/",info8+1);
|
|
| 3617 |
+ int info10 = rec_cert.indexOf("/",info9+1);
|
|
| 3618 |
+ int info11 = rec_cert.indexOf("/",info10+1);
|
|
| 3619 |
+ int info12 = rec_cert.indexOf("/",info11+1);
|
|
| 3620 |
+ int info13 = rec_cert.indexOf("/",info12+1);
|
|
| 3621 |
+ int info14 = rec_cert.indexOf("/",info13+1);
|
|
| 3622 |
+ int info15 = rec_cert.indexOf("/",info14+1);
|
|
| 3623 |
+ int info16 = rec_cert.indexOf("/",info15+1);
|
|
| 3624 |
+ int info17 = rec_cert.indexOf("/",info16+1);
|
|
| 3625 |
+ int info18 = rec_cert.indexOf("/",info17+1);
|
|
| 3626 |
+ |
|
| 3627 |
+ certNum = rec_cert.substring(0,info1); kmcVO.setCertNum(certNum); |
|
| 3628 |
+ date = rec_cert.substring(info1+1,info2); kmcVO.setDate(date); |
|
| 3629 |
+ CI = rec_cert.substring(info2+1,info3); kmcVO.setCI(CI); |
|
| 3630 |
+ phoneNo = rec_cert.substring(info3+1,info4); kmcVO.setPhoneNo(phoneNo); |
|
| 3631 |
+ phoneCorp = rec_cert.substring(info4+1,info5); kmcVO.setPhoneCorp(phoneCorp); |
|
| 3632 |
+ birthDay = rec_cert.substring(info5+1,info6); kmcVO.setBirthDay(birthDay); |
|
| 3633 |
+ gender = rec_cert.substring(info6+1,info7); kmcVO.setGender(gender); |
|
| 3634 |
+ nation = rec_cert.substring(info7+1,info8); kmcVO.setNation(nation); |
|
| 3635 |
+ name = rec_cert.substring(info8+1,info9); kmcVO.setName(name); |
|
| 3636 |
+ result = rec_cert.substring(info9+1,info10); kmcVO.setResult(result); |
|
| 3637 |
+ certMet = rec_cert.substring(info10+1,info11); kmcVO.setCertMet(certMet); |
|
| 3638 |
+ ip = rec_cert.substring(info11+1,info12); kmcVO.setIp(ip); |
|
| 3639 |
+ M_name = rec_cert.substring(info12+1,info13); kmcVO.setMName(M_name); |
|
| 3640 |
+ M_birthDay = rec_cert.substring(info13+1,info14); kmcVO.setMBirthDay(M_birthDay); |
|
| 3641 |
+ M_Gender = rec_cert.substring(info14+1,info15); kmcVO.setMGender(M_Gender); |
|
| 3642 |
+ M_nation = rec_cert.substring(info15+1,info16); kmcVO.setMNation(M_nation); |
|
| 3643 |
+ plusInfo = rec_cert.substring(info16+1,info17); kmcVO.setPlusInfo(plusInfo); |
|
| 3644 |
+ DI = rec_cert.substring(info17+1,info18); kmcVO.setDI(DI); |
|
| 3645 |
+ |
|
| 3646 |
+ //07. CI, DI 복호화 |
|
| 3647 |
+ CI = seed.getDec(CI, k_certNum); kmcVO.setCI(CI); |
|
| 3648 |
+ DI = seed.getDec(DI, k_certNum); kmcVO.setDI(DI); |
|
| 3649 |
+ |
|
| 3650 |
+ if("Y".equals(result)) {
|
|
| 3651 |
+ |
|
| 3652 |
+ } |
|
| 3653 |
+ |
|
| 3654 |
+ //-------------------------------------------------------------- |
|
| 3655 |
+ String regex = ""; |
|
| 3656 |
+ if( certNum.length() == 0 || certNum.length() > 40){
|
|
| 3657 |
+ errMessage = "요청번호 비정상."; |
|
| 3658 |
+ return returnPage(model , errMessage , kmcVO) ; |
|
| 3659 |
+ } |
|
| 3660 |
+ |
|
| 3661 |
+ regex = "[0-9]*"; |
|
| 3662 |
+ if( date.length() != 14 || !paramChk(regex, date) ){
|
|
| 3663 |
+ errMessage = "요청일시"; |
|
| 3664 |
+ return returnPage(model , errMessage , kmcVO) ; |
|
| 3665 |
+ } |
|
| 3666 |
+ |
|
| 3667 |
+ regex = "[A-Z]*"; |
|
| 3668 |
+ if( certMet.length() != 1 || !paramChk(regex, certMet) ){
|
|
| 3669 |
+ errMessage = "본인인증방법 비정상" + certMet; |
|
| 3670 |
+ return returnPage(model , errMessage , kmcVO) ; |
|
| 3671 |
+ } |
|
| 3672 |
+ |
|
| 3673 |
+ |
|
| 3674 |
+ regex = "[0-9]*"; |
|
| 3675 |
+ if( (phoneNo.length() != 10 && phoneNo.length() != 11) || !paramChk(regex, phoneNo) ){
|
|
| 3676 |
+ errMessage = "휴대폰번호 비정상" ; |
|
| 3677 |
+ return returnPage(model , errMessage , kmcVO) ; |
|
| 3678 |
+ } |
|
| 3679 |
+ |
|
| 3680 |
+ regex = "[A-Z]*"; |
|
| 3681 |
+ if( phoneCorp.length() != 3 || !paramChk(regex, phoneCorp) ){
|
|
| 3682 |
+ errMessage = "이동통신사 비정상"; |
|
| 3683 |
+ return returnPage(model , errMessage , kmcVO) ; |
|
| 3684 |
+ } |
|
| 3685 |
+ |
|
| 3686 |
+ regex = "[0-9]*"; |
|
| 3687 |
+ if( birthDay.length() != 8 || !paramChk(regex, birthDay) ){
|
|
| 3688 |
+ errMessage = "생년월일 비정상"; |
|
| 3689 |
+ return returnPage(model , errMessage , kmcVO) ; |
|
| 3690 |
+ } |
|
| 3691 |
+ |
|
| 3692 |
+ regex = "[0-9]*"; |
|
| 3693 |
+ if( gender.length() != 1 || !paramChk(regex, gender) ){
|
|
| 3694 |
+ errMessage = "성별 비정상"; |
|
| 3695 |
+ return returnPage(model , errMessage , kmcVO) ; |
|
| 3696 |
+ } |
|
| 3697 |
+ |
|
| 3698 |
+ regex = "[0-9]*"; |
|
| 3699 |
+ if( nation.length() != 1 || !paramChk(regex, nation) ){
|
|
| 3700 |
+ errMessage = "내/외국인 비정상"; |
|
| 3701 |
+ return returnPage(model , errMessage , kmcVO) ; |
|
| 3702 |
+ } |
|
| 3703 |
+ |
|
| 3704 |
+ regex = "[\\sA-Za-z가-�R.,-]*"; |
|
| 3705 |
+ if( name.length() > 60 || !paramChk(regex, name) ){
|
|
| 3706 |
+ errMessage = "성명 비정상"; |
|
| 3707 |
+ return returnPage(model , errMessage , kmcVO) ; |
|
| 3708 |
+ } |
|
| 3709 |
+ |
|
| 3710 |
+ regex = "[A-Z]*"; |
|
| 3711 |
+ if( result.length() != 1 || !paramChk(regex, result) ){
|
|
| 3712 |
+ errMessage = "결과값 비정상"; |
|
| 3713 |
+ return returnPage(model , errMessage , kmcVO) ; |
|
| 3714 |
+ } |
|
| 3715 |
+ |
|
| 3716 |
+ regex = "[\\sA-Za-z가-?.,-]*"; |
|
| 3717 |
+ if( M_name.length() != 0 ){
|
|
| 3718 |
+ if( M_name.length() > 60 || !paramChk(regex, M_name) ){
|
|
| 3719 |
+ errMessage = "미성년자 성명 비정상"; |
|
| 3720 |
+ return returnPage(model , errMessage , kmcVO) ; |
|
| 3721 |
+ } |
|
| 3722 |
+ } |
|
| 3723 |
+ |
|
| 3724 |
+ regex = "[0-9]*"; |
|
| 3725 |
+ if( M_birthDay.length() != 0 ){
|
|
| 3726 |
+ if( M_birthDay.length() != 8 || !paramChk(regex, M_birthDay) ){
|
|
| 3727 |
+ errMessage = "미성년자 생년월일 비정상"; |
|
| 3728 |
+ return returnPage(model , errMessage , kmcVO) ; |
|
| 3729 |
+ } |
|
| 3730 |
+ } |
|
| 3731 |
+ |
|
| 3732 |
+ regex = "[0-9]*"; |
|
| 3733 |
+ if( M_Gender.length() != 0 ){
|
|
| 3734 |
+ if( M_Gender.length() != 1 || !paramChk(regex, M_Gender) ){
|
|
| 3735 |
+ errMessage = "미성년자 성별 비정상"; |
|
| 3736 |
+ return returnPage(model , errMessage , kmcVO) ; |
|
| 3737 |
+ } |
|
| 3738 |
+ } |
|
| 3739 |
+ |
|
| 3740 |
+ regex = "[0-9]*"; |
|
| 3741 |
+ if( M_nation.length() != 0 ){
|
|
| 3742 |
+ if( M_nation.length() != 1 || !paramChk(regex, M_nation) ){
|
|
| 3743 |
+ errMessage = "미성년자 내/외국인 비정상"; |
|
| 3744 |
+ return returnPage(model , errMessage , kmcVO) ; |
|
| 3745 |
+ } |
|
| 3746 |
+ } |
|
| 3747 |
+ |
|
| 3748 |
+ |
|
| 3749 |
+ //KMC 본인인증 로그 |
|
| 3750 |
+ AuthCertVO certVO = new AuthCertVO(); |
|
| 3751 |
+ certVO.setMberId(kmcVO.getPlusInfo()); |
|
| 3752 |
+ certVO.setCertNum(kmcVO.getCertNum()); |
|
| 3753 |
+ certVO.setCertDate(kmcVO.getDate()); |
|
| 3754 |
+ certVO.setCertDi(kmcVO.getDI()); |
|
| 3755 |
+ certVO.setCertPhone(kmcVO.getPhoneNo()); |
|
| 3756 |
+ certVO.setCertNation(kmcVO.getNation()); |
|
| 3757 |
+ certVO.setCertName(kmcVO.getName()); |
|
| 3758 |
+ certVO.setCertResult(kmcVO.getResult()); |
|
| 3759 |
+ certVO.setCertType("KMC_회원정보 변경");
|
|
| 3760 |
+ certVO.setCertIpaddr(kmcVO.getIp()); |
|
| 3761 |
+ certVO.setBirthDay(kmcVO.getBirthDay()); |
|
| 3762 |
+ certVO.setSexdstnCode(kmcVO.getGender()); |
|
| 3763 |
+ |
|
| 3764 |
+ model.addAttribute("kmcVO", kmcVO);
|
|
| 3765 |
+ |
|
| 3766 |
+ return "web/user/securityAuthnPage"; |
|
| 3767 |
+ } |
|
| 3768 |
+ |
|
| 3497 | 3769 |
} |
--- src/main/java/itn/let/uat/uia/web/KmcCertChecker.java
+++ src/main/java/itn/let/uat/uia/web/KmcCertChecker.java
... | ... | @@ -586,4 +586,77 @@ |
| 586 | 586 |
|
| 587 | 587 |
return certVO; |
| 588 | 588 |
} |
| 589 |
+ |
|
| 590 |
+ |
|
| 591 |
+ |
|
| 592 |
+ // 마이페이지 보안인증 |
|
| 593 |
+ public AuthCertVO authCertCheckNine(String trUrl, String id) {
|
|
| 594 |
+ |
|
| 595 |
+ AuthCertVO certVO = new AuthCertVO(); |
|
| 596 |
+ |
|
| 597 |
+ //kmc step 01 데이터 |
|
| 598 |
+ //날짜 생성 |
|
| 599 |
+ Calendar today = Calendar.getInstance(); |
|
| 600 |
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
|
|
| 601 |
+ String day = sdf.format(today.getTime()); |
|
| 602 |
+ |
|
| 603 |
+ Random ran = new Random(); |
|
| 604 |
+ //랜덤 문자 길이 |
|
| 605 |
+ int numLength = 6; |
|
| 606 |
+ String randomStr = ""; |
|
| 607 |
+ |
|
| 608 |
+ for (int i = 0; i < numLength; i++) {
|
|
| 609 |
+ //0 ~ 9 랜덤 숫자 생성 |
|
| 610 |
+ randomStr += ran.nextInt(10); |
|
| 611 |
+ } |
|
| 612 |
+ |
|
| 613 |
+ //reqNum은 최대 40byte 까지 사용 가능 |
|
| 614 |
+ String reqNum = day + randomStr; //요청번호 |
|
| 615 |
+ |
|
| 616 |
+ String tr_cert = ""; |
|
| 617 |
+ String cpId = "MJOM1001"; // 회원사ID |
|
| 618 |
+ String urlCode = "001014"; // URL코드 |
|
| 619 |
+ //kmc 본인인증 실/개발 서버 구분 |
|
| 620 |
+ if(trUrl.contains("192.168.0.60") || trUrl.contains("localhost")) {
|
|
| 621 |
+ urlCode = "010001"; |
|
| 622 |
+ } |
|
| 623 |
+ String certNum = reqNum; // 요청번호 ( 본인인증 요청시 중복되지 않게 생성해야함. (예-시퀀스번호) ) |
|
| 624 |
+ String date = day; // 요청일시 |
|
| 625 |
+ String certMet = "M"; // 본인인증방법 - M:휴대폰 본인인증, C:신용카드인증, P:공인인증서 인증 |
|
| 626 |
+ String name = ""; // 성명 |
|
| 627 |
+ String phoneNo = ""; // 휴대폰번호 |
|
| 628 |
+ String phoneCorp = ""; // 이동통신사 |
|
| 629 |
+ if(phoneCorp == null) phoneCorp = ""; |
|
| 630 |
+ String birthDay = ""; // 생년월일 |
|
| 631 |
+ String gender = ""; // 성별 |
|
| 632 |
+ if(gender == null) gender = ""; |
|
| 633 |
+ String nation = ""; // 내외국인 구분 - 0:내국인, 1:외국인 |
|
| 634 |
+ String plusInfo = id; // 추가DATA정보 |
|
| 635 |
+ String extendVar = "0000000000000000"; // 확장변수 |
|
| 636 |
+ //End-tr_cert 데이터 변수 선언 --------------------------------------------------------------- |
|
| 637 |
+ |
|
| 638 |
+ String tr_url = trUrl;//"http://www.munjaon.co.kr/web/cop/kmc/authRequestAjax.do"; // 본인인증서비스 결과수신 POPUP URL |
|
| 639 |
+ String tr_add = "N"; // IFrame사용여부 |
|
| 640 |
+ |
|
| 641 |
+ //01. 한국모바일인증(주) 암호화 모듈 선언 |
|
| 642 |
+ IcertSecuManager seed = new IcertSecuManager(); |
|
| 643 |
+ |
|
| 644 |
+ //02. 1차 암호화 (tr_cert 데이터변수 조합 후 암호화) |
|
| 645 |
+ String enc_tr_cert = ""; |
|
| 646 |
+ tr_cert = cpId +"/"+ urlCode +"/"+ certNum +"/"+ date +"/"+ certMet +"/"+ birthDay +"/"+ gender +"/"+ name +"/"+ phoneNo +"/"+ phoneCorp +"/"+ nation +"/"+ plusInfo +"/"+ extendVar; |
|
| 647 |
+ enc_tr_cert = seed.getEnc(tr_cert, ""); |
|
| 648 |
+ |
|
| 649 |
+ //03. 1차 암호화 데이터에 대한 위변조 검증값 생성 (HMAC) |
|
| 650 |
+ String hmacMsg = ""; |
|
| 651 |
+ hmacMsg = seed.getMsg(enc_tr_cert); |
|
| 652 |
+ |
|
| 653 |
+ //04. 2차 암호화 (1차 암호화 데이터, HMAC 데이터, extendVar 조합 후 암호화) |
|
| 654 |
+ tr_cert = seed.getEnc(enc_tr_cert + "/" + hmacMsg + "/" + extendVar, ""); |
|
| 655 |
+ |
|
| 656 |
+ certVO.setTr_cert(tr_cert); |
|
| 657 |
+ certVO.setTr_url(tr_url); |
|
| 658 |
+ certVO.setTr_add(tr_add); |
|
| 659 |
+ |
|
| 660 |
+ return certVO; |
|
| 661 |
+ } |
|
| 589 | 662 |
} |
--- src/main/webapp/WEB-INF/jsp/web/user/mberInfoIndex.jsp
+++ src/main/webapp/WEB-INF/jsp/web/user/mberInfoIndex.jsp
... | ... | @@ -436,7 +436,46 @@ |
| 436 | 436 |
}); |
| 437 | 437 |
} |
| 438 | 438 |
|
| 439 |
+//휴대푠 번호 등록 [시작]-------------------------------------------------------------------------------------------- |
|
| 440 |
+window.name = "kmcis_web_sample"; |
|
| 441 |
+var KMCIS_window; |
|
| 442 |
+//휴대폰 인증팝업 열기 |
|
| 443 |
+function openKMCISWindow(){
|
|
| 444 |
+ var UserAgent = navigator.userAgent; |
|
| 445 |
+ /* 모바일 접근 체크*/ |
|
| 446 |
+ // 모바일일 경우 (변동사항 있을경우 추가 필요) |
|
| 447 |
+ if (UserAgent.match(/iPhone|iPod|Android|Windows CE|BlackBerry|Symbian|Windows Phone|webOS|Opera Mini|Opera Mobi|POLARIS|IEMobile|lgtelecom|nokia|SonyEricsson/i) != null || UserAgent.match(/LG|SAMSUNG|Samsung/) != null) {
|
|
| 448 |
+ document.reqKMCISForm.target = 'KMCISWindow'; // 모바일 |
|
| 449 |
+ } else { // 모바일이 아닐 경우
|
|
| 450 |
+ KMCIS_window = window.open('', 'KMCISWindow', 'width=425, height=550, resizable=0, scrollbars=no, status=0, titlebar=0, toolbar=0, left=435, top=250' );
|
|
| 451 |
+ |
|
| 452 |
+ if(KMCIS_window == null){
|
|
| 453 |
+ alert(" ※ 윈도우 XP SP2 또는 인터넷 익스플로러 7 사용자일 경우에는 \n 화면 상단에 있는 팝업 차단 알림줄을 클릭하여 팝업을 허용해 주시기 바랍니다. \n\n※ MSN,야후,구글 팝업 차단 툴바가 설치된 경우 팝업허용을 해주시기 바랍니다.");
|
|
| 454 |
+ } |
|
| 455 |
+ |
|
| 456 |
+ document.reqKMCISForm.target = 'KMCISWindow'; |
|
| 457 |
+ } |
|
| 458 |
+ |
|
| 459 |
+ document.reqKMCISForm.action = 'https://www.kmcert.com/kmcis/web/kmcisReq.jsp'; |
|
| 460 |
+ document.reqKMCISForm.submit(); |
|
| 461 |
+} |
|
| 462 |
+ |
|
| 463 |
+// /web/user/selectSecurityAuthn.do 리다이렉트 URL |
|
| 464 |
+ |
|
| 465 |
+//자식창에서 호출 |
|
| 466 |
+function callTo() {
|
|
| 467 |
+ alert("호출입니다.");
|
|
| 468 |
+} |
|
| 469 |
+ |
|
| 470 |
+//휴대푠 번호 등록 [끝]-------------------------------------------------------------------------------------------- |
|
| 471 |
+ |
|
| 439 | 472 |
</script> |
| 473 |
+ |
|
| 474 |
+<form name="reqKMCISForm" method="post" action="#"> |
|
| 475 |
+ <input type="hidden" id="tr_url" name="tr_url" value = "${certVO.tr_url}">
|
|
| 476 |
+ <input type="hidden" id="tr_add" name="tr_add" value = "${certVO.tr_add}">
|
|
| 477 |
+ <input type="hidden" id="tr_cert" name="tr_cert" value = "${certVO.tr_cert}">
|
|
| 478 |
+</form> |
|
| 440 | 479 |
|
| 441 | 480 |
<form id="levelForm" name="levelForm" method="post"> |
| 442 | 481 |
<input type="hidden" id="pageType" name="pageType" value=""/> |
... | ... | @@ -685,7 +724,7 @@ |
| 685 | 724 |
<p class="lately_date">최근 변경일시 : <span>2024-11-01 12:49</span></p> |
| 686 | 725 |
|
| 687 | 726 |
<div class="tab_depth1"> |
| 688 |
- <a href="#none" class="on">ON</a> |
|
| 727 |
+ <a href="#none" class="on" onclick="openKMCISWindow()">ON</a> |
|
| 689 | 728 |
<a href="#none">OFF</a> |
| 690 | 729 |
</div> |
| 691 | 730 |
</div> |
+++ src/main/webapp/WEB-INF/jsp/web/user/securityAuthnPage.jsp
... | ... | @@ -0,0 +1,29 @@ |
| 1 | +<%@ page contentType="text/html; charset=utf-8"%> | |
| 2 | +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> | |
| 3 | +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> | |
| 4 | +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> | |
| 5 | +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> | |
| 6 | +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> | |
| 7 | +<% | |
| 8 | + //************************************************************************ | |
| 9 | + // // | |
| 10 | + // 본 샘플소스는 개발 및 테스트를 위한 목적으로 만들어졌으며, // | |
| 11 | + // // | |
| 12 | + // 실제 서비스에 그대로 사용하는 것을 금합니다. // | |
| 13 | + // // | |
| 14 | + //************************************************************************ | |
| 15 | +%> | |
| 16 | +<!-- [본인인증서비스 테스트 결과 수신 Sample] <br> <br> --> | |
| 17 | +<script src="<c:url value='/js/jquery.js' />"></script> | |
| 18 | +<html> | |
| 19 | + <head> | |
| 20 | + <meta name="robots" content="noindex"> | |
| 21 | + | |
| 22 | + <script language=javascript> | |
| 23 | + opener.callTo(); | |
| 24 | + self.close(); | |
| 25 | + </script> | |
| 26 | + </head> | |
| 27 | + <body> | |
| 28 | + </body> | |
| 29 | +</html> (No newline at end of file) |
Add a comment
Delete comment
Once you delete this comment, you won't be able to recover it. Are you sure you want to delete this comment?