주식회사 누리아이티

정보자산의 보안강화를 위한 3단계 인증 보안SW(BaroPAM) 전문기업인 누리아이티

▶ BaroSolution/가이드

기억할 필요 없는 비밀번호를 위한 BaroPAM과 SMS/이메일 연동 가이드

누리아이티 2020. 1. 30. 11:19

 

3. BaroPAM 연동 API

 

어플리케이션 로그인 시 2차 인증하기 위하여 BaroPAM OTP SMS/이메일을 연동하기 위한 절차는 다음과 같습니다.

 

 

 

3.1 연동 API 사용 전 준비사항

 

 

BaroPAM에서 사용하는 인증 코드인 OTP Java를 기반으로 작성되었기 때문에 반드시 최신 JDK 1.6.x 이상이 설치 되어 있어야 한다. 만약, 설치되어 있지 않은 Linux/Unix인 경우 "yum install java*" 명령어로 설치하면 된다.

 

JDK 설치 확인)

[root]# rpm -qa | grep java
java-1.4.2-gcj-compat-devel-1.4.2.0-40jpp.115
java-1.7.0-openjdk-javadoc-1.7.0.131-2.6.9.0.el5_11
java-1.4.2-gcj-compat-1.4.2.0-40jpp.115
java-1.4.2-gcj-compat-javadoc-1.4.2.0-40jpp.115
bsh-javadoc-1.3.0-9jpp.1
tzdata-java-2016j-1.el5
java-1.6.0-openjdk-devel-1.6.0.41-1.13.13.1.el5_11
java-1.7.0-openjdk-src-1.7.0.131-2.6.9.0.el5_11
java-1.4.2-gcj-compat-src-1.4.2.0-40jpp.115
java-1.7.0-openjdk-1.7.0.131-2.6.9.0.el5_11
java-1.7.0-openjdk-demo-1.7.0.131-2.6.9.0.el5_11
java-1.4.2-gcj-compat-devel-1.4.2.0-40jpp.115
xmlrpc-javadoc-2.0.1-3jpp.1
gcc-java-4.1.2-55.el5
java-1.6.0-openjdk-1.6.0.41-1.13.13.1.el5_11
java-1.7.0-openjdk-devel-1.7.0.131-2.6.9.0.el5_11

 

JDK 설치 디렉토리 확인)

[root]# env | grep JAVA_HOME
JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.121.x86_64

 

Java 버젼 확인)

[root]# java -version
java version "1.7.0_121"
OpenJDK Runtime Environment (rhel-2.6.8.1.el5_11-x86_64 u121-b00)
OpenJDK 64-Bit Server VM (build 24.121-b00, mixed mode)

 

 

3.2 BaroPAM 연동 API

 

 

어플리케이션 로그인 시 사용되는 OTP 생성 및 검증하는 API "barokey.jar"로 제공되며, WAS "~/WEB-INF/lib" 디렉토리에 "barokey.jar"를 위치 시켜야 한다.

 

/home/tomcat/webapps/ROOT/WEB-INF/lib > ls -al barokey.jar
-rw-r--r-- 1 root root 6746 12 29 07:43 barokey.jar

 

BaroPAM 검증 API에서 발생하는 Exception 로그는 WAS(Web Application Server) Console 로그에 제공된다.

 

1. OTP 생성 부분

 

1) generateKEYL 메소드

 

- NAME

  generateKEYL

 

- SYNOPSIS

  String tkey = barokey.generateKEYL(String login_id, String phone_no, String cycle_time);

 

- DESCRIPTION

  OTP를 생성하는 메소드

 

login_id는 사용자의 로그인-ID를 설정해야 한다.

phone_no는 사용자의 스마트 폰 번호를 숫자만 설정해야 한다.

cycle_time은 사용자별로 지정한 인증키 생성 주기(3~60)를 설정해야 한다.(60초 권고)

 

- RETURN VALUES

 성공 시에는 OTP 6자리, 실패 시는 ""을 반환한다.

 

2) OTP 생성 예시

 

...
import com.barokey.barokey;
...
로그인 ID 유효성 확인하여 성공인 경우만 인증키 검증 모듈을 호출
...
String tkey = barokey.generateKEYL(String login_id, String phone_no, String cycle_time);
 
if (!"".equals(tkey)) {
    // 생성 성공
    // 생성한 OTP를 전송할 SMS 연동 API 호출
    //   메시지: OTP 번호는 999999 입니다.
} else {
    // 생성 실패
}
...

 

 

2. 인증키 검증 부분

 

1) verifyKEYL 메소드

 

- NAME

  verifyKEYL

 

- SYNOPSIS

  boolean bauth_key = barokey.verifyKEYL(String login_id, String phone_no, String cycle_time, String tkey);

 

- DESCRIPTION

  OTP를 맞는지 검증하는 메소드

 

login_idOTP를 생성한 사용자의 로그인-ID를 설정해야 한다.

phone_noOTP를 생성한 사용자의 스마트 폰 번호를 숫자만 설정해야 한다.

cycle_timeOTP를 생성한 사용자별로 지정한 인증키 생성 주기(3~60)를 설정해야 한다.(60초 권고)

tkeySMS로 전송한 OTP를 설정해야 한다.

 

- RETURN VALUES

 성공 시에는 true을 반환하며, 실패 시는 false을 반환한다.

 

2) 인증키 검증 예시

 

...
import com.barokey.barokey;
...
boolean bauth_key = barokey.verifyKEYL(String login_id, String phone_no, String cycle_time, String tkey);
 
if (bauth_key == true) {
    // 검증 성공
} else {
    // 검증 실패
}
...