본인인증 기능을 개발하기 위해서 나이스(NICE)에서 제공하는 본인확인(통합형) 서비스를 도입했습니다.
개발 가이드 문서에 맞지 않는 부분도 있고, 스프링을 사용하여 개발된 경우의 게시글을 찾을 수 없어서 여러 시행착오를 겪었습니다.
저처럼 스프링으로 나이스 본인인증을 도입하는 분들이 어려움을 겪지 않으셨으면 하는 바람으로 글을 작성합니다.
📍 들어가며
나이스 본인확인(통합형) 공식 개발 가이드문서에 나와있는 본인인증 서비스의 동작 구조입니다. 처음 보면 어떤방식으로 동작하는지 이해하기가 쉽지 않아서, 다음의 순서대로 구현이 진행된다고 생각해주시면 됩니다.
지금부터 위의 모든 과정을 거쳐 본인인증을 구현하는 과정을 포스팅하겠습니다.
0. NICE 본인인증 초기 설정
기능개발에 앞서 먼저 나이스아이디 초기 설정을 진행해야합니다. 나이스 홈페이지로 이동하여 로그인 후 마이 앱 리스트로 접속해주세요.
0-1. 허용 IP 등록
수정하기 버튼을 클릭하여 나이스 API 서버에 요청을 허용할 IP를 등록해줍니다.
0-2. 인증키 조회
상세보기 버튼을 클릭하여 다음과 같은 화면으로 이동하여 인증키 조회를 진행합니다.
Client ID
와 Client Secret
은 추후 개발과정에서 사용되기에 어딘가에 메모해두는걸 추천드립니다.
💳 기관 토큰 발급
기관 토큰 발급은 1, 2번 과정을 통해 발급됩니다.
개발 가이드문서를 살펴보면 기관토큰 발급 API는 아래 사진과 같습니다.
[Authorization 생성가이드]
"Basic " + Base64Encoding(${client_id}+":"+${client_secret})
* client_id : APP등록 시 생성값
* client_secret : APP등록 시 생성값
기관토큰의 경우 최초 1회만 발급하면 50년간 사용할 수 있는 반 영구토큰이기 때문에 코드로 작성하는것 대신 Postman같은 API 요청 도구를 사용해 발급받도록 하겠습니다.
Authorization헤더를 만들기 위해 우선 base64인코딩 사이트로 이동해줍니다.
client_id:client_secret 형태로 입력 후 인코딩을 진행하면 Base64로 인코딩된 결과값이 추출됩니다.
Postman을 실행시켜 새 API요청을 만들어줍니다.
요청 메서드 : POST
요청 URL : https://svc.niceapi.co.kr:22001/digital/niceid/oauth/oauth/token
두가지 항목을 설정하고 Headers 탭으로 이동하여 Authorization 헤더를 추가해줍니다.
Base64인코딩 결과값의 앞에 "Basic "을 붙여 추가해야합니다.
ex) AuthorizationBasic MTExMTExMTEtMjlyMi0zMzMzLTQ0ND...
Body 탭으로 이동하여 필요한 데이터를 추가해줍니다.
콘텐츠 타입 : x-www-form-urlencoded
scope : default
grant_type : client_credentials
데이터 세팅이 끝났으면 요청 버튼을 눌러 성공하면 다음과 같은 JSON 결과값을 반환 받습니다.
{
"dataHeader": {
"GW_RSLT_CD": "1200",
"GW_RSLT_MSG": "오류 없음"
},
"dataBody": {
"access_token": "11111111-2222-3333-4444-555555555555",
"token_type": "bearer",
"expires_in": 1111111111,
"scope": "default"
}
}
발급된 기관토큰(access_token)은 잘 저장해두시기 바랍니다.
🌆 마치며
다음 글에서는 암호화 토큰 발급과 요청정보 암호화 등 3번부터 7번까지의 과정을 살펴보겠습니다.
📖 참고자료
'BackEnd' 카테고리의 다른 글
[Spring+Vue] 나이스 본인인증 API 구현하기3 (0) | 2025.02.03 |
---|---|
[Spring+Vue] 나이스 본인인증 API 구현하기2 (0) | 2025.01.21 |
[JPA, PostgreSQL] PK컬럼이 아닌 컬럼에 Sequence 적용하기 (2) | 2024.11.19 |