Sfoglia il codice sorgente

아이핀 인증 추가

jsshin 5 anni fa
parent
commit
4e273df70a

+ 9 - 2
pom.xml

@@ -97,7 +97,7 @@
 			<scope>system</scope>
 			<systemPath>${basedir}/src/main/webapp/WEB-INF/lib/gagaframework-web-util-1.7-RELEASE.jar</systemPath>
 		</dependency>
-		<!--NICE-->
+		<!--NICE 본인인증 -->
 		<dependency>
 			<groupId>com.NiceID</groupId>
 			<artifactId>NiceID</artifactId>
@@ -105,7 +105,14 @@
 			<scope>system</scope>
 			<systemPath>${basedir}/src/main/webapp/WEB-INF/lib/NiceID.jar</systemPath>
 		</dependency>
-		<!--//NICE-->
+		<dependency>
+			<groupId>com.IPIN2Client</groupId>
+			<artifactId>IPIN2Client</artifactId>
+			<version>1.0</version>
+			<scope>system</scope>
+			<systemPath>${basedir}/src/main/webapp/WEB-INF/lib/IPIN2Client.jar</systemPath>
+		</dependency>
+		<!--//NICE 본인인증-->
 		<!-- \\\ WEB-INF lib -->
 	</dependencies>
 	

+ 2 - 0
src/main/java/com/style24/front/biz/service/TsfCustomerService.java

@@ -2,6 +2,7 @@ package com.style24.front.biz.service;
 
 import com.style24.core.biz.service.TscCustomerService;
 import com.style24.core.support.env.TscConstants;
+import com.style24.core.support.session.TscSession;
 import com.style24.persistence.domain.Customer;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -38,6 +39,7 @@ public class TsfCustomerService {
 	public Customer getCustomerFindId(Customer customer) {
 		customer.setSiteCd(TscConstants.Site.STYLE24.value());
 		customer.encryptData(); // 데이터 암호하
+		TscSession.setAttribute("maskingYn","Y");
 		return coreCustomerService.getCustomerInfo(customer);
 	}
 }

+ 122 - 24
src/main/java/com/style24/front/biz/thirdparty/NiceCertify.java

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

+ 7 - 1
src/main/java/com/style24/front/biz/web/TsfCustomerController.java

@@ -72,7 +72,13 @@ public class TsfCustomerController extends TsfBaseController {
 		if (custInfo != null) {
 			isFind = true;
 		}
-		result.set("custInfo", custInfo);
+
+		result.setString("authType",customer.getAuthType()); // 화면에서 받은 인증방법
+		result.setString("maskingCustId", custInfo.getMaskingCustId());
+		result.setString("joinDt", custInfo.getJoinDt());
+		result.setString("ysJoinDt", custInfo.getYsJoinDt());
+		result.setString("nvJoinDt", custInfo.getNvJoinDt());
+		result.setString("kkJoinDt", custInfo.getKkJoinDt());
 		result.setBoolean("isFind", isFind);
 		return result;
 	}

+ 4 - 0
src/main/resources/config/application.yml

@@ -31,6 +31,10 @@ certify:
         id: G2860
         pwd: A2G93CK87ZP8
         callback: /customer/nice/certify/callback
+    ipin:
+        id: A621
+        pwd: 73350165
+        callback: /customer/nice/certify/callback
 
 # 네이버 API
 naver:

BIN
src/main/webapp/WEB-INF/lib/IPIN2Client.jar


+ 214 - 164
src/main/webapp/WEB-INF/views/web/customer/FindIdFormWeb.html

@@ -26,194 +26,196 @@
 				<h3>style24</h3>
 			</div>
 			<div class="cont_body">
-				<div class="form_head">
-					<h4>아이디&#47;비밀번호 찾기</h4>
-				</div>
-				<div class="registration_nav">
-					<ul>
-						<li class="active"><a href="javascript:void(0)">아이디 찾기</a></li>
-						<li><a href="javascript:void(0)">비밀번호 찾기</a></li>
-					</ul>
-				</div>
-				<div class="registration_tap">
-					<div class="form_group" style="display: block;">
-						<!-- 아이디찾기일경우 -->
-						<div class="foldGroup checkcase">
-							<ul>
-								<li>
-									<form id="searchCustInfo" name="searchCustInfo" class="form_wrap" method="post">
-										<div class="fold_head">
-											<a href="javascript:void(0)">
-												<div>
-													<div class="fold_tit">
-														<span>회원정보로 찾기</span>
+				<div class="form_wrap form_col_c">
+					<div class="form_head">
+						<h4>아이디&#47;비밀번호 찾기</h4>
+					</div>
+					<div class="registration_nav">
+						<ul>
+							<li class="active"><a href="javascript:void(0)">아이디 찾기</a></li>
+							<li><a href="javascript:void(0)">비밀번호 찾기</a></li>
+						</ul>
+					</div>
+					<div class="registration_tap">
+						<div class="form_group" style="display: block;">
+							<!-- 아이디찾기일경우 -->
+							<div id="searchDiv" class="foldGroup checkcase">
+								<ul>
+									<li>
+										<form id="searchCustInfo" name="searchCustInfo" class="form_wrap" method="post">
+											<div class="fold_head">
+												<a href="javascript:void(0)">
+													<div>
+														<div class="fold_tit">
+															<span>회원정보로 찾기</span>
+														</div>
 													</div>
-												</div>
-											</a>
-										</div>
-										<div class="fold_cont">
-											<div class="txt mb30">
-												<p>등록된 내 회원정보로 찾을 수 있습니다.</p>
+												</a>
 											</div>
-											<div class="form_field">
-												<label class="input_label sr-only">이름</label>
-												<div class="ui_col_12">
-													<div class="input_wrap">
-														<input type="text" name="custNm" placeholder="이름" class="form_control" maxlength="30"/>
+											<div class="fold_cont">
+												<div class="txt mb30">
+													<p>등록된 내 회원정보로 찾을 수 있습니다.</p>
+												</div>
+												<div class="form_field">
+													<label class="input_label sr-only">이름</label>
+													<div class="ui_col_12">
+														<div class="input_wrap">
+															<input type="text" name="custNm" placeholder="이름" class="form_control" maxlength="30"/>
+														</div>
 													</div>
 												</div>
-											</div>
-											<div class="form_field">
-												<label class="input_label sr-only">생년월일 8자리 (예:19880912)</label>
-												<div class="ui_col_12">
-													<div class="input_wrap">
-														<input type="text" name="birthYmd" placeholder="생년월일 8자리 (예:19880912)" class="form_control" maxlength="8" data-valid-type="numeric"/>
+												<div class="form_field">
+													<label class="input_label sr-only">생년월일 8자리 (예:19880912)</label>
+													<div class="ui_col_12">
+														<div class="input_wrap">
+															<input type="text" name="birthYmd" placeholder="생년월일 8자리 (예:19880912)" class="form_control" maxlength="8" data-valid-type="numeric"/>
+														</div>
 													</div>
 												</div>
-											</div>
-											<div class="form_field">
-												<label class="input_label sr-only">이메일</label>
-												<div class="ui_col_12">
-													<div class="input_wrap">
-														<input type="text" name="email" placeholder="이메일" class="form_control" maxlength="30"/>
+												<div class="form_field">
+													<label class="input_label sr-only">이메일</label>
+													<div class="ui_col_12">
+														<div class="input_wrap">
+															<input type="text" name="email" placeholder="이메일" class="form_control" maxlength="30"/>
+														</div>
 													</div>
 												</div>
-											</div>
-											<div class="btn_group_block ui_row mt20">
-												<div class="ui_col_12">
-													<button type="button" id="btnInfoConfirm" class="btn_dark btn_block">
-														확인
-													</button>
+												<div class="btn_group_block ui_row mt20">
+													<div class="ui_col_12">
+														<button type="button" id="btnInfoConfirm" class="btn btn_dark btn_block">
+															<span>확인</span>
+														</button>
+													</div>
 												</div>
 											</div>
-										</div>
-									</form>
-								</li>
-								<li>
-									<form id="certifyPhone" name="certifyPhone" class="form_wrap" role="form">
-										<div class="fold_head">
-											<a href="javascript:void(0)">
-												<div>
-													<div class="fold_tit" style="width: inherit;">
-														<span style="width: inherit;">휴대폰 본인인증으로 찾기</span>
+										</form>
+									</li>
+									<li>
+										<form id="certifyPhone" name="certifyPhone" class="form_wrap" role="form">
+											<div class="fold_head">
+												<a href="javascript:void(0)">
+													<div>
+														<div class="fold_tit" style="width: inherit;">
+															<span style="width: inherit;">휴대폰 본인인증으로 찾기</span>
+														</div>
 													</div>
-												</div>
-											</a>
-										</div>
-										<div class="fold_cont">
-											<div class="txt">
-												<p>회원님의 명의로 등록된 휴대폰으로 본인확인을 진행합니다.</p>
+												</a>
 											</div>
-											<div class="ui_row mt20">
-												<div class="ui_col_12">
-													<button type="button" id="btnPhoneConfirm" class=" btn_dark btn_block">
-														<span>본인명의 휴대폰으로 인증</span>
-													</button>
+											<div class="fold_cont">
+												<div class="txt">
+													<p>회원님의 명의로 등록된 휴대폰으로 본인확인을 진행합니다.</p>
 												</div>
-											</div>
-										</div>
-									</form>
-								</li>
-								<li>
-									<form id="certifyIpin" name="certifyIpin" class="form_wrap" role="form">
-										<div class="fold_head">
-											<a href="javascript:void(0)">
-												<div>
-													<div class="fold_tit" style="width: inherit;">
-														<span style="width: inherit;">아이핀 인증으로 찾기</span>
+												<div class="ui_row mt20">
+													<div class="ui_col_12">
+														<button type="button" id="btnPhoneConfirm" class="btn btn_dark btn_block">
+															<span>본인명의 휴대폰으로 인증</span>
+														</button>
 													</div>
 												</div>
-											</a>
-										</div>
-										<div class="fold_cont">
-											<div class="txt">
-												<p>아이핀 인증을 통해 찾을 수 있습니다.</p>
-											</div>
-											<div class="ui_row mt20">
-												<div class="ui_col_12">
-													<button type="button" id="btnIpinConfirm" class="btn btn_dark btn_block">
-														<span>아이핀 인증</span>
-													</button>
-												</div>
 											</div>
-										</div>
-									</form>
-								</li>
-							</ul>
-						</div>
-						<!-- //아이디찾기일경우 -->
-						<!-- 아이디찾기 성공일경우 -->
-						<div id="succeedCustId" class="find_result clear" style="display:none;">
-							<div class="form_info">
-								<span class="ico_content_find"></span>
-								<p>아이디 찾기 결과 안내</p>
-							</div>
-							<div class="form_print_bar mt40">
-								<ul>
-									<li>
-										<span class="t_span">아이디</span>
-										<span id="resultId" name="resultId"  class="c_primary bold" data-font="lato"></span>
-									</li>
-									<li>
-										<span class="t_span">가입일자</span>
-										<span id="joinDt" name="joinDt" class="bold" data-font="lato"></span>
+										</form>
 									</li>
 									<li>
-										<span class="t_span">가입경로</span>
-										<span id="joinPath" name="joinPath" class="bold" data-font="lato"></span>
+										<form id="certifyIpin" name="certifyIpin" class="form_wrap" role="form">
+											<div class="fold_head">
+												<a href="javascript:void(0)">
+													<div>
+														<div class="fold_tit" style="width: inherit;">
+															<span style="width: inherit;">아이핀 인증으로 찾기</span>
+														</div>
+													</div>
+												</a>
+											</div>
+											<div class="fold_cont">
+												<div class="txt">
+													<p>아이핀 인증을 통해 찾을 수 있습니다.</p>
+												</div>
+												<div class="ui_row mt20">
+													<div class="ui_col_12">
+														<button type="button" id="btnIpinConfirm" class="btn btn_dark btn_block">
+															<span>아이핀 인증</span>
+														</button>
+													</div>
+												</div>
+											</div>
+										</form>
 									</li>
 								</ul>
 							</div>
-							<div class="btn_group_block btn_group_md ui_row">
-								<div class="ui_col_12">
-									<button class="btn btn_dark btn_block">
-										<span>로그인 하기</span>
-									</button>
+							<!-- //아이디찾기일경우 -->
+							<!-- 아이디찾기 성공일경우 -->
+							<div id="succeedCustId" class="find_result clear" style="display:none;">
+								<div class="form_info">
+									<span class="ico_content_find"></span>
+									<p>아이디 찾기 결과 안내</p>
 								</div>
-							</div>
-						</div>
-						<!-- //아이디찾기 성공일경우 -->
-						<!-- 회원정보로 아이디찾기 실패일경우 -->
-						<div id="failCustId" class="find_result clear" style="display: none;">
-							<div class="form_info">
-								<span class="ico_content_none"></span>
-								<p>입력한 정보와 일치하는 아이디가 존재하지 않습니다.</p>
-								<p class="t_info mt10">
-									정확한 확인을 위해 휴대폰 인증/아이핀 인증을 통한<br>아이디 찾기를 진행해 주세요.
-								</p>
-							</div>
-							<div class="btn_group_block btn_group_md ui_row">
-								<div class="ui_col_6">
-									<button class="btn btn_primary btn_block">
-										<span>회원가입</span>
-									</button>
+								<div class="form_print_bar mt40">
+									<ul>
+										<li>
+											<span class="t_span">아이디</span>
+											<span id="resultId" name="resultId"  class="c_primary bold" data-font="lato"></span>
+										</li>
+										<li>
+											<span class="t_span">가입일자</span>
+											<span id="joinDt" name="joinDt" class="bold" data-font="lato"></span>
+										</li>
+										<li id="liJoinPath" style="display: none;">
+											<span class="t_span">가입경로</span>
+											<span id="joinPath" name="joinPath" class="bold" data-font="lato"></span>
+										</li>
+									</ul>
 								</div>
-								<div class="ui_col_6">
-									<button class="btn btn_dark btn_block">
-										<span>다시 찾기</span>
-									</button>
+								<div class="btn_group_block btn_group_md ui_row">
+									<div class="ui_col_12">
+										<button type="button" class="btn btn_dark btn_block">
+											<span>로그인 하기</span>
+										</button>
+									</div>
 								</div>
 							</div>
-						</div>
-						<!-- //회원정보로 아이디찾기 실패일경우 -->
-						<!-- 휴대폰,아이핀 본인인증으로 아이디찾기 실패일경우 -->
-						<div id="failCertification" class="find_result clear" style="display: none;">
-							<div class="form_info">
-								<span class="ico_content_none"></span>
-								<p>입력한 정보와 일치하는 아이디가 존재하지 않습니다.</p>
-								<p class="t_info mt10">
-									<span class="c_primary">STYLE24의 새로운 가족이 되어 주세요!</span>
-								</p>
+							<!-- //아이디찾기 성공일경우 -->
+							<!-- 회원정보로 아이디찾기 실패일경우 -->
+							<div id="failCustId" class="find_result clear" style="display: none;">
+								<div class="form_info">
+									<span class="ico_content_none"></span>
+									<p>입력한 정보와 일치하는 아이디가 존재하지 않습니다.</p>
+									<p class="t_info mt10">
+										정확한 확인을 위해 휴대폰 인증/아이핀 인증을 통한<br>아이디 찾기를 진행해 주세요.
+									</p>
+								</div>
+								<div class="btn_group_block btn_group_md ui_row">
+									<div class="ui_col_6">
+										<button type="button" class="btn btn_primary btn_block">
+											<span>회원가입</span>
+										</button>
+									</div>
+									<div class="ui_col_6">
+										<button type="button" class="btn btn_dark btn_block">
+											<span>다시 찾기</span>
+										</button>
+									</div>
+								</div>
 							</div>
-							<div class="btn_group_block btn_group_md ui_row">
-								<div class="ui_col_12">
-									<button class="btn btn_primary btn_block">
-										<span>회원가입</span>
-									</button>
+							<!-- //회원정보로 아이디찾기 실패일경우 -->
+							<!-- 휴대폰,아이핀 본인인증으로 아이디찾기 실패일경우 -->
+							<div id="failCertification" class="find_result clear" style="display: none;">
+								<div class="form_info">
+									<span class="ico_content_none"></span>
+									<p>입력한 정보와 일치하는 아이디가 존재하지 않습니다.</p>
+									<p class="t_info mt10">
+										<span class="c_primary">STYLE24의 새로운 가족이 되어 주세요!</span>
+									</p>
+								</div>
+								<div class="btn_group_block btn_group_md ui_row">
+									<div class="ui_col_12">
+										<button class="btn btn_primary btn_block">
+											<span>회원가입</span>
+										</button>
+									</div>
 								</div>
 							</div>
+							<!-- //휴대폰,아이핀 본인인증으로 아이디찾기 실패일경우 -->
 						</div>
-						<!-- //휴대폰,아이핀 본인인증으로 아이디찾기 실패일경우 -->
 					</div>
 				</div>
 			</div>
@@ -226,7 +228,6 @@
 
 	// 회원정보로 아이디 찾기
 	$('#btnInfoConfirm').on('click', function() {
-
 		let custInfo = $('#searchCustInfo').serializeObject();
 
 		if (gagajf.isNull(custInfo.custNm)) {
@@ -243,6 +244,7 @@
 			alert('이메일 형식에 맞게 입력해주세요.');
 			return;
 		}
+		custInfo.authType = 'custInfo';
 
 		let jsonData = JSON.stringify(custInfo);
 		console.log('jsonData', jsonData);
@@ -252,10 +254,54 @@
 
 	// 찾기 결과
 	var fnInfoConfirmCallBack = function (result) {
-		console.log(typeof result.isFind);
 		console.log(result);
+		$('#searchDiv').hide();
+		// 1. 성공여부
+		if (result.isFind) {
+			fnDataBinding(result.authType, result, result.isFind);
+		} else {
+			fnDataBinding(result.authType, result, result.isFind);
+		}
 	};
 
+	var fnDataBinding = function (authType, custInfo, isFind) {
+		$('#resultId').text(custInfo.maskingCustId);
+		$('#joinDt').text(toDateFormat(custInfo.joinDt).replaceAll('-','.'));
+		let joinPath = fnSnsJoinPath(custInfo); // 가입경로 : 직접이면 표시 안함, 간편가입 연동 표시
+		if (!gagajf.isNull(joinPath)) {
+			$('#liJoinPath').show();
+			$('#joinPath').text(joinPath);
+		}
+		if (authType === 'custInfo') {
+			if (isFind) {
+				$('#succeedCustId').show();
+			} else {
+				$('#failCustId').show();
+			}
+		}
+
+	}
+
+	var fnSnsJoinPath = function (custInfo) {
+		let snsType = '';
+		if (!gagajf.isNull(custInfo.ysJoinDt)) {
+			snsType += 'YES24로 연동';
+		}
+		if (!gagajf.isNull(custInfo.nvJoinDt)) {
+			if (!gagajf.isNull(snsType)) {
+				snsType += '/'
+			}
+			snsType = '네이버로 연동'
+		}
+		if (!gagajf.isNull(custInfo.kkJoinDt)) {
+			if (!gagajf.isNull(snsType)) {
+				snsType += '/'
+			}
+			snsType += '카카오로 연동';
+		}
+		return snsType;
+	}
+
 
 	// 이메일 체크
 	var fnCheckValidationEmail = function (email) {
@@ -266,8 +312,13 @@
 		}
 		return result;
 	};
-	
-	
+
+	var toDateFormat =  function(value) {
+		if (gagajf.isNull(value))
+			return "";
+		return value.replaceAll("/", "").replaceAll("-", "").toDate("YYYYMMDD").format("YYYY-MM-DD");
+	}
+
 	var ajaxJsonSubmit = function (url, json, callback) {
 		$.ajax({
 			type : "POST",
@@ -283,7 +334,6 @@
 				xhr.setRequestHeader('Content-Type', 'application/json');
 			},
 			success : function(result) {
-				console.log(result);
 				if (typeof(result.status) == 'undefined' || result.status === 200) { // 성공
 					if (!gagajf.isNull(result.message)) {
 						if (alert(result.message)) {