Java - SpringMVC 개발환경에서 kakaoCert Java SDK를 추가하여 본인인증 요청 기능을 구현하는 예시입니다.
① kakaoCert Java SDK를 추가하기 위해 Spring 프로젝트 "pom.xml" 파일에 kakaoCert Java SDK dependency 정보를 추가하고 Maven 업데이트합니다.
<dependency>
<groupId>kr.co.linkhub</groupId>
<artifactId>kakaocert-sdk</artifactId>
<version>2.52.0</version>
</dependency>
② 아래의 코드를 참고하여 "servlet-context.xml" 파일을 수정합니다. KakaocertService 클래스를 Spring 빈으로 추가하고 연동신청하여 발급 받은 링크아이디(LinkID)와 비밀키(SecretKey)을 입력해주시기 바랍니다.
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
<!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure -->
<!-- Enables the Spring MVC @Controller programming model -->
<annotation-driven />
<!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory -->
<resources mapping="/resources/**" location="/resources/" />
<!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->
<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<beans:property name="prefix" value="/WEB-INF/views/" />
<beans:property name="suffix" value=".jsp" />
</beans:bean>
<context:component-scan base-package="com.kakaocert.example" />
<!--
LinkID : 링크허브에서 발급받은 파트너 링크아이디.
SecretKey : 링크허브에서 발급받는 비밀키.
ClientCode : 이용기관코드, 파트너가 등록한 이용기관의 코드, (파트너 사이트에서 확인가능)
IPRestrictOnOff : 인증토큰 발급 IP 제한 On/Off, true-사용, false-미사용, 기본값(true)
useStaticIP : 카카오써트 API 서비스 고정 IP 사용여부, true-사용, false-미사용, 기본값(false)
UseLocalTimeYN : 로컬시스템 시간 사용여부 true-사용, false-미사용, 기본값(true)
-->
<util:properties id="EXAMPLE_CONFIG">
<beans:prop key="LinkID">TESTER</beans:prop>
<beans:prop key="SecretKey">SwWxqU+0TErBXy/9TVjIPEnI0VTUMMSQZtJf3Ed8q3I=</beans:prop>
<beans:prop key="ClientCode">020040000001</beans:prop>
<beans:prop key="IsIPRestrictOnOff">true</beans:prop>
<beans:prop key="UseStaticIP">false</beans:prop>
<beans:prop key="UseLocalTimeYN">true</beans:prop>
</util:properties>
<beans:beans>
<!-- kakaocert Service Implementation Bean registration. -->
<beans:bean id="kakaocertService" class="com.kakaocert.api.KakaocertServiceImp">
<beans:property name="linkID" value="#{EXAMPLE_CONFIG.LinkID}"/>
<beans:property name="secretKey" value="#{EXAMPLE_CONFIG.SecretKey}"/>
<beans:property name="IPRestrictOnOff" value="#{EXAMPLE_CONFIG.IsIPRestrictOnOff}"/>
<beans:property name="useStaticIP" value="#{EXAMPLE_CONFIG.UseStaticIP}"/>
<beans:property name="useLocalTimeYN" value="#{EXAMPLE_CONFIG.UseLocalTimeYN}"/>
</beans:bean>
</beans:beans>
</beans:beans>
① 서비스 클래스 빈 객체 추가를 위해 @Autowired 어노테이션과 RequestVeriftAuth 함수 코드를 추가합니다.
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 org.springframework.web.bind.annotation.RequestMethod;
import com.kakaocert.api.KakaocertException;
import com.kakaocert.api.KakaocertService;
import com.kakaocert.api.verifyauth.RequestVerifyAuth;
@Controller
public class KakaocertController {
@Autowired
private KakaocertService kakaocertService;
// 이용기관코드
// 파트너가 등록한 이용기관의 코드, (파트너 사이트에서 확인가능)
@Value("#{EXAMPLE_CONFIG.ClientCode}")
private String ClientCode;
@RequestMapping(value = "/RequestVerifyAuth", method = RequestMethod.GET)
public String RequestVerifyAuth(Model m) {
try {
// 본인인증 요청 정보 Object
RequestVerifyAuth request = new RequestVerifyAuth();
// 고객센터 전화번호 , 카카오톡 인증메시지 중 "고객센터" 항목에 표시
request.setCallCenterNum("1600-9999");
// 고객센터명 , 카카오톡 인증메시지 중 "고객센터명" 항목에 표시
request.setCallCenterName("고객센터명");
// 인증요청 만료시간(초), 최대값 : 1000 인증요청 만료시간(초) 내에 미인증시, 만료 상태로 처리됨 (권장 : 300)
request.setExpires_in(300);
// 수신자 생년월일, 형식 : YYYYMMDD
request.setReceiverBirthDay("19700101");
// 수신자 휴대폰번호
request.setReceiverHP("01012345117");
// 수신자 성명
request.setReceiverName("테스트");
// 인증요청 메시지 부가내용, 카카오톡 인증메시지 중 상단에 표시
request.setTMSMessage("부가메시지 내용");
// 별칭코드, 이용기관이 생성한 별칭코드 (파트너 사이트에서 확인가능)
// 카카오톡 인증메시지 중 "요청기관" 항목에 표시
// 별칭코드 미 기재시 이용기관의 이용기관명이 "요청기관" 항목에 표시
request.setSubClientID("");
// 인증요청 메시지 제목, 카카오톡 인증메시지 중 "요청구분" 항목에 표시
request.setTMSTitle("TMS Title");
// 원문, 보안을 위해 1회용으로 생성
// 인증완료시, getVerifyAuthResult API의 returnToken 항목값으로 반환
request.setToken("20200504-01");
/*
* 인증서 발급유형 선택
* true : 휴대폰 본인인증만을 이용해 인증서 발급
* false : 본인계좌 점유 인증을 이용해 인증서 발급
*
* - 인증메시지를 수신한 사용자가 카카오인증 비회원일 경우,
* 카카오인증 회원등록 절차를 거쳐 은행계좌 실명확인 절차이후 전자서명 가능
*/
request.setAllowSimpleRegistYN(false);
/*
* 수신자 실명확인 여부
* true : 카카오페이가 본인인증을 통해 확보한 사용자 실명과 ReceiverName 값을 비교
* false : 카카오페이가 본인인증을 통해 확보한 사용자 실명과 RecevierName 값을 비교하지 않음.
*/
request.setVerifyNameYN(true);
// PayLoad, 이용기관이 API 요청마다 생성한 payload(메모) 값
request.setPayLoad("memo Info");
String receiptID = kakaocertService.requestVerifyAuth(ClientCode, request);
m.addAttribute("receiptID", receiptID);
} catch(KakaocertException ke) {
m.addAttribute("Exception", ke);
return "exception";
}
return "RequestVerifyAuth";
}
}
② 함수 호출결과 코드와 메시지를 매핑하는 "src/main/webapp/WEB-INF/views/RequestVerifyAuth.jsp" 페이지를 추가합니다.
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>Kakaocert Spring Example</title>
</head>
<body>
<div>
<p>Response</p>
<br>
<fieldset>
<legend>본인인증 요청</legend>
<ul>
<li>receiptID(접수아이디) : ${receiptID}</li>
</ul>
</fieldset>
</div>
</body>
</html>
③ 웹브라우저 페이지를 호출하여 함수호출 결과를 확인합니다.
기술지원센터
kakaoCert 기술지원은 유선, 메일, 원격지원 등 다양한 채널을 통해 제공됩니다.
T. 1600-9854E. code@linkhubcorp.com
Copyright (C) LinkHub. All Rights Reserved.