이번엔 Spring Boot 개발환경에서 카카오 로그인 API를 사용해서 OAuth2.0 기반의 사용자 인증서비스를 구현해보도록 하겠습니다.
스프링 부트(Spring Boot)의 개발환경을 처음 접하신다면 최상단의 링크를 통해 참고하시면 됩니다.
OAuth란?
OAuth가 사용되기 전에는 인증방식의 표준이 없었기 때문에 기존의 기본인증인 아이디와 비밀번호를 사용하였는데, 이는 보안상 취약한 구조이다.
기본인증이 아닐 경우는 각 애플리케이션들이 각자의 개발한 회사의 방법대로 사용자를 확인하였다. 예를 들면 구글의 AuthSub, AOL의 OpenAuth, 야후의 BBAuth, 아마존의 웹서비스 API 등이 있다.
OAuth는 이렇게 제각각인 인증방식을 표준화한 인증방식이다. OAuth를 이용하면 이 인증을 공유하는 애플리케이션끼리는 별도의 인증이 필요없다. 따라서 여러 애플리케이션을 통합하여 사용하는 것이 가능하게 된다. - 출처 : 위키백과
그냥 쉽게말해서 우리가 흔히 사용하는 카카오, 구글, 페이스북, 네이버 로그인과 같은 소셜 로그인 기능은 그 해당 기업에 가입된 유저의 정보를 이용해서 내가 만들 사이트에서 로그인 및 회원가입을 가능하게 해줍니다.
예를들면 어떤 클라이언트가 카카오 로그인을 요구할때 우리가 그 정보를 받아서 카카오로부터 인증 결과를 받아 그 결과가 성공이라면 세션을 주거나 회원가입 절차를 밟을 수 있게 해줍니다.
이때의 우리가 카카오로부터 요청한 인증에 대한 결과로는 OAuth의 용어 및 개념 중 하나인 접근 토큰(access token)이 존재합니다. (물론 인증에 실패한다면 실패와 관련된 메세지가 날아옵니다.)
- 접근 토큰(access token) : 인증 후에 사용자가 서비스 제공자가 아닌 소비자를 통해서 보호된 자원에 접근하기 위한 키를 포함한 값.
일반적으로 OAuth의 인증 절차는 다음과 같이 이루어집니다.
- 소비자가 서비스제공자에게 요청토큰을 요청한다.
- 서비스제공자가 소비자에게 요청토큰을 발급해준다.
- 소비자가 사용자를 서비스제공자로 이동시킨다. 여기서 사용자 인증이 수행된다.
- 서비스제공자가 사용자를 소비자로 이동시킨다.
- 소비자가 접근토큰을 요청한다.
- 서비스제공자가 접근토큰을 발급한다.
- 발급된 접근토큰을 이용하여 소비자에서 사용자 정보에 접근한다.
그럼 이제 실제로 직접 카카오 로그인 API를 구현해보도록 하겠습니다.
1. 먼저 카카오 개발자 센터로 접속을 합니다.
https://developers.kakao.com/docs
2. 접속한 뒤 본인의 카카오 계정을 통해 로그인을 하고 아래에 표시된 드롭다운 메뉴를 통해 내 애플리케이션 목록 창으로 들어가서 앱을 하나 만듭니다.
3. 이름은 아무렇게나 지정하시고 회사가 있으시다면 회사명 적으시고 앱을 만듭니다.
(이때 작성하는 이름은 우리가 만들 프로젝트명과 달라도 관계없습니다.)
4. 앱 만들기를 누르신 후 알려주는 app key중 REST API키를 메모장 또는 어디에 고이 보관해둡니다.
- 해당 APP KEY는 우리가 만들 프로젝트에서 어떠한 API들을 사용하려고 할때 필요로하는 아이디, 비밀번호과 같은 존재인 KEY 입니다.
5. 만든 앱의 정보창에서 "카카오 로그인 API를 사용하겠다"라는 등록과정을 거치기 위해서 아래의 사용자 관리로 들어갑니다.
6. 카카오 로그인 API를 활성화 합니다.
7. 아래와 같이 클라이언트의 이메일을 추가로 요구할수 있도록 선택하고, 해당 항목의 수집목적을 각각 적어줍니다.
7.5. 저장
8. 이제 우리가 만들 프로젝트에서 실제로 사용할 도메인을 등록해야 됩니다.
9. Spring Boot의 내장 톰캣으로 서버를 구동할것이기 때문에 아래와 같이 설정해줍니다.
- 저는 Oracle DB의 포트번호가 8080으로 되어있기 때문에 톰캣의 PORT번호를 임의로 8000번으로 설정해주겠습니다.
10. Redirect Path는 카카오 로그인을 처리해줄 경로로서 우리가 만들어줄 Controller의 요청 경로를 미리 정해줍니다.
- 추후에 Controller 클래스에서 @RequestMapping("/login")과 같이 만들어줄겁니다.
11. 이제 기본적인 설정이 끝났습니다. 아래와 같은 순서로 들어갑니다.
12. 아래의 버튼을 통해서 우리가 평소에 여러 사이트를 사용하면서 자주 누르던 "카카오로 로그인하기" 버튼의 이미지를 다운받습니다.
이로써 카카오 로그인 API를 사용하기 위한 준비는 마쳤습니다.
다음장에서는 본격적으로 카카오 로그인을 통한 인증 서비스를 구현하기 위해 프로젝트를 생성하고 기본 구성파일을 작성해보도록 하겠습니다.
댓글