189 lines
6.3 KiB
Java
189 lines
6.3 KiB
Java
package kcc.let.uat.uia.web;
|
|
|
|
import org.apache.poi.poifs.crypt.Decryptor;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
import org.springframework.stereotype.Controller;
|
|
import org.springframework.ui.Model;
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
|
import com.barocert.BarocertException;
|
|
import com.barocert.kakaocert.KakaocertService;
|
|
import com.barocert.navercert.NavercertService;
|
|
|
|
/**
|
|
* @packageName : kcc.let.uat.uia.web
|
|
* @fileName : SocialCertController.java
|
|
* @author : JunHo Lee
|
|
* @date : 2024.11.21
|
|
* @description : 소셜 로그인(네이버, 카카오)
|
|
* ===========================================================
|
|
* DATE AUTHOR NOTE
|
|
* -----------------------------------------------------------
|
|
* 2024.11.21 JunHo Lee 최초 생성
|
|
*/
|
|
@Controller
|
|
public class SocialCertController {
|
|
|
|
@Autowired
|
|
private NavercertService navercertService;
|
|
|
|
@Autowired
|
|
private KakaocertService kakaocertService;
|
|
|
|
@Value("#{NAVER_CONFIG.ClientCode}")
|
|
private String NaverClientCode;
|
|
|
|
@Value("#{KAKAO_CONFIG.ClientCode}")
|
|
private String KakaoClientCode;
|
|
|
|
/**
|
|
* 본인인증 요청
|
|
*
|
|
* @param clientCode
|
|
* 이용기관코드
|
|
* @param identity
|
|
* 본인인증 요청정보
|
|
* @return ResponseVerify
|
|
* 본인인증 요청 응답정보
|
|
* @throws BarocertException
|
|
*/
|
|
@RequestMapping(value = "/web/user/cert/nCert.do")
|
|
public String requestIdentity(Model m) throws BarocertException {
|
|
|
|
// 본인인증 요청 정보 객체
|
|
com.barocert.navercert.identity.Identity identity = new com.barocert.navercert.identity.Identity();
|
|
|
|
// 수신자 휴대폰번호 - 11자 (하이픈 제외)
|
|
identity.setReceiverHP(navercertService.encrypt("01030266269"));
|
|
// 수신자 성명 - 80자
|
|
identity.setReceiverName(navercertService.encrypt("이준호"));
|
|
// 수신자 생년월일 - 8자 (yyyyMMdd)
|
|
identity.setReceiverBirthday(navercertService.encrypt("19890202"));
|
|
|
|
// 고객센터 연락처 - 최대 12자
|
|
identity.setCallCenterNum("1600-9854");
|
|
// 인증요청 만료시간 - 최대 1,000(초)까지 입력 가능
|
|
identity.setExpireIn(1000);
|
|
|
|
// AppToApp 인증요청 여부
|
|
// true - AppToApp 인증방식, false - 푸시(Push) 인증방식
|
|
identity.setAppUseYN(false);
|
|
|
|
try {
|
|
com.barocert.navercert.identity.IdentityReceipt request = navercertService.requestIdentity(NaverClientCode, identity);
|
|
|
|
// Boolean test = navercertService.isUseStaticIP();
|
|
|
|
System.out.println("ReceiptID :: " + request.getReceiptID());
|
|
System.out.println("Scheme :: " + request.getScheme());
|
|
System.out.println("MarketUrl :: " + request.getMarketUrl());
|
|
|
|
|
|
|
|
/**
|
|
* 본인인증 서명검증
|
|
* 인증되었을경우 State : 1
|
|
* 인증안되었을경우 State : 0
|
|
*/
|
|
// if(status.getState() == 0) {
|
|
//
|
|
// }else if(status.getState() == 1) {
|
|
//
|
|
// }
|
|
|
|
|
|
//서명이 되지 않았을경우
|
|
com.barocert.navercert.identity.IdentityStatus status = navercertService.getIdentityStatus(NaverClientCode, request.getReceiptID());
|
|
|
|
//서명이 되었을경우
|
|
com.barocert.navercert.identity.IdentityStatus status2 = navercertService.getIdentityStatus(NaverClientCode, request.getReceiptID());
|
|
|
|
com.barocert.navercert.identity.IdentityResult result = navercertService.verifyIdentity(NaverClientCode, request.getReceiptID());
|
|
|
|
System.out.println("Ci :: " + result.getCi());
|
|
System.out.println("ReceiptID :: " + result.getReceiptID());
|
|
System.out.println("ReceiverDay :: " + result.getReceiverDay());
|
|
System.out.println("ReceiverEmail :: " + result.getReceiverEmail());
|
|
System.out.println("ReceiverForeign :: " + result.getReceiverForeign());
|
|
System.out.println("ReceiverGender :: " + result.getReceiverGender());
|
|
System.out.println("ReceiverHP :: " + result.getReceiverHP());
|
|
System.out.println("ReceiverName :: " + result.getReceiverName());
|
|
System.out.println("ReceiverYear :: " + result.getReceiverYear());
|
|
System.out.println("SignedData :: " + result.getSignedData());
|
|
System.out.println("State :: " + result.getState());
|
|
|
|
|
|
m.addAttribute("result", result);
|
|
} catch (BarocertException ne) {
|
|
m.addAttribute("Exception", ne);
|
|
return "exception";
|
|
}
|
|
|
|
return "uat/uia/NCert";
|
|
}
|
|
|
|
// @RequestMapping(value = "navercert/requestIdentity", method = RequestMethod.GET)
|
|
@RequestMapping(value = "/web/user/cert/kCert.do")
|
|
public String requestIdentity_k(Model m) throws BarocertException {
|
|
|
|
// 본인인증 요청 정보 객체
|
|
com.barocert.kakaocert.identity.Identity identity = new com.barocert.kakaocert.identity.Identity();
|
|
|
|
// 수신자 휴대폰번호 - 11자 (하이픈 제외)
|
|
identity.setReceiverHP(kakaocertService.encrypt("01012341234"));
|
|
// 수신자 성명 - 80자
|
|
identity.setReceiverName(kakaocertService.encrypt("홍길동"));
|
|
// 수신자 생년월일 - 8자 (yyyyMMdd)
|
|
identity.setReceiverBirthday(kakaocertService.encrypt("19700101"));
|
|
|
|
// 인증요청 메시지 제목 - 최대 40자
|
|
identity.setReqTitle("본인인증 요청 메시지 제목");
|
|
// 커스텀 메시지 - 최대 500자
|
|
identity.setExtraMessage(kakaocertService.encrypt("본인인증 커스텀 메시지"));
|
|
// 인증요청 만료시간 - 최대 1,000(초)까지 입력 가능
|
|
identity.setExpireIn(1000);
|
|
// 서명 원문 - 최대 40자 까지 입력가능
|
|
identity.setToken(kakaocertService.encrypt("본인인증 요청 원문"));
|
|
|
|
// AppToApp 인증요청 여부
|
|
// true - AppToApp 인증방식, false - Talk Message 인증방식
|
|
identity.setAppUseYN(false);
|
|
|
|
|
|
try {
|
|
com.barocert.kakaocert.identity.IdentityReceipt result = kakaocertService.requestIdentity(KakaoClientCode, identity);
|
|
m.addAttribute("result", result);
|
|
} catch (BarocertException ke) {
|
|
m.addAttribute("Exception", ke);
|
|
return "exception";
|
|
}
|
|
|
|
return "uat/uia/KCert";
|
|
}
|
|
|
|
|
|
|
|
private String decryptNaver() {
|
|
|
|
//복호화 키
|
|
String secretKey = "LqZ8a…";
|
|
// 초기화 벡터 (고정값)
|
|
String iv = "6C2Syq8t…";
|
|
// 암호문
|
|
String cipherText = "6MXhzI8yDVdCDktJ/Qdz9S…";
|
|
|
|
try {
|
|
// 복호화
|
|
// Decryptor decryptor = new Decryptor();
|
|
// String decryptedCI = decryptor.decrypt(secretKey, iv, cipherText);
|
|
// System.out.println(decryptedCI);
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
}
|
|
return "";
|
|
}
|
|
}
|
|
|
|
|