Develop

[Project] 나이스 본인확인 API 적용 (feat.JAVA)

빈급 2024. 11. 7. 22:08

들어가며

회사에서 준비 중인 B2C 서비스에 나이스 보인확인 서비스를 도입하기로 했습니다. 평소 라이브러리를 사용한 개발 경험은 있었지만 API를 활용한 경험은 없었기 때문에, 궁금증을 가지고 있었습니다. 때문에 자원해서 본인인증 API를 적용하는 것을 맡았지만, 조금 헤맸던 부분이 있었어서 같은 실수를 반복하지 않기 위해 포스팅을 해보려고 합니다.

 


 

나이스 본인확인 서비스

 

나이스 본인확인 개발가이드

개발 가이드는 로그인 후 Products 메뉴에서 맞는 상품을 선택 후 나오는 페이지에서 [개발 가이드]라는 텍스트를 누르면 다운로드할 수 있습니다.

NICE API 개발 가이드 다운로드 페이지

 

 다운로드한 폴더를 열면 3가지 종류의 파일이 있습니다. 1) 서비스 이융 구조, 메타 데이터와 같은 내용을 볼 수 있는 개발 가이드와 2) 자주하는 질문, 관련 오류들에 대한 정보가 담긴 FAQ 파일. 마지막으로 3) JSP, Node.js, PHP, Python 언어 샘플코드 파일. 필요한 정보는 모두 파일들 안에 있기 때문에 상황에 맞는 자료를 참고하시면 될 거 같습니다. (저의 경우 개발 가이드를 상세히 보지 않아서 아깝게 흘러간 시간이 있었습니다.. 자세한 건 글을 써가면서 기재하겠습니다.) 

 

나이스 표준창 서비스 요청 흐름

 

 위 사진은 나이스 공식 개발 가이드에 있는 서비스 요청 흐름도입니다.

 

 처음 봤을 때 클라이언트 없이 이용기관과 NICE만 있어서 당황스러웠던 기억이 있습니다. 그래서 개발자 입장에서의 흐름도를 다시 그려봤습니다.

 

나이스 본인인증 흐름도

 

아마 나이스 본인인증을 구현하시는 분들 대부분이 위 그림과 비슷한 흐름으로 개발을 하시지 않을까 생각을 합니다. 그럼 이제 본격적으로 개발 이야기를 시작해 보겠습니다.

 

 

기관 Token 발급

먼저 개발 가이드를 통해 필수로 보내야 하는 파라미터와 응답으로 오는 데이터들에 대해서 알아보겠습니다.

기관용 토큰 발급 요청과 응답 파라미터

 

 기관 Token의 경우 유효기간이 50년이고 폐기 후 재요청을 통해 다시 발급받을 수 있습니다. 파라미터의 경우 필수로 scope와 grant_type을 보내주면 되는데, 이때 설명을 보면 둘 다 고정된 값이 있는 것을 알 수 있습니다. 그렇다면 아무에게나 발급이 되는 게 아닌가...라는 생각을 할 수도 있겠지만 아닙니다. 

 

기관 Token을 발급받는 프로세스는 Client Credentials Grant입니다. OAuth 2에는 4가지 정도의 인증 방식이 있는데 그중 하나로 클라이언트의 자격증명만으로 Token을 획득하는 방식이라고 할 수 있습니다. 이 방식은 서버로 인증받은 Client Id와 Client Secret을 인증 서버(NICE)에 보내 토큰을 발급받고, 발급받은 토큰을 API 헤더에 붙여서 사용합니다. 

 

즉, 기관 Token을 발급받으려면 Client Id와 Client Secret을 알아야 합니다. 알아내는 방법은 아래의 사진과 같습니다.

 

Client Id, Client Secret 알아내는 순서

 

 

알아냈다면 개발 가이드에 나와있는 요청 예시에 맞춰서 기관 토큰 요청을 보내면 됩니다.

API 요청 예시

 

저의 경우 기관 토큰 요청을 하는 Controller를 하나 만들어서 진행했습니다. 요청 url의 일부와   Client Id, Client Secret의 경우 다른 프로세스에서도  공통적으로 쓰이는 값들 이기 때문에. yaml에 기재했습니다. 

요청 코드

 

요청에 필요한 정보를 만들어 내는 메서드

 

프로퍼티 정보

 

 기관 토큰이 발급된 후 console에 찍힌 값을 다시 프로퍼티에 저장해서 다른 프로세스에서도 쓸 수 있도록 했습니다.

 

 


 

 

 사실 나이스 인증 API를 적용한 지는 이 글을 쓴 시점보다 훨씬 이전인데요.. 이제야 쓰게 되다니..! 게으른 나 자신 반성합니다!