Spring Boot + Social Login(Kakao)

Spring Boot & Kakao Social Login 연동

JIM KIM
jimmyberg.kim
6 min readOct 7, 2020

--

OAuth 2.0

타사의 API 사용하고 싶을 때 권한 획득 및 인증을 위한 Open Standard Protocol

OAuth 구조

OAuth 구성

  • Client : 사용자
  • Resource Owner : API DB 사용자
  • Resource Server : API 서버
  • AUthorization Server : OAuth 인증 서버

OAuth Flow

(A) Client 가 Social Login 요청
(B) Resource Owner 는 Social Login 할 수 있게 화면 이동
© Client 는 Social Login 완료
(D) 로그인이 성공하면 AUthorization Server 는 Client 에게 Access Token 발급
(E) Client 는 발급받은 Token 으로 Resource Server 에게 Resource 를 요청
(D) Resource Server 는 Token 유효한지 검증하고 응답 처리

Kakao Soical Login

Token 종류

  • Access Token : API 호출 권한 인증용 Token
  • Refresh Token : Access Token 갱신용 Token

Kakao Developer 관리

구현 순서

Kakao Login 구현 공통 가이드

RestTemplate Bean 등록

  • Main Application Class 에 RestTemplate Class Bean 등록

GSON dependency 추가

Social Login 관련 설정 추가

Social Login 처리 Controller 추가

  • Kakao Login 화면으로 Fowording 할 수 있는 Demo 페이지 연동 처리
  • Kakao 연동 후 redirect 처리

로그인 화면

  • /resource/templates/social/login.ftl

(만약 View Mapping 안된다면, Freemarker Bean 등록!)

User Entity 수정

  • provoider 필드 추가
  • Social Login 은 비밀번호가 필요없으므로 password 필드는 Null 허용으로 변경

User JPA Repository 수정

  • Uid 와 Provider 로 회원 정보 조회하는 Method 추가

Social Login 에 필요한 Model 객체 생성

  • RetKakaoAuth.java
  • KakaoProfile.java

Kakao 연동 Service 생성

  • Kakao Token 조회 method 구현
  • Kakao profile 조회 method 구현

Social Login 연동할 REST API 추가

  • Kakao 와 연동 여부 확인한 후 JWT Token 발급 처리

Security Config 관련 설정 수정

  • “/social/**” API 권한 승인 처리

추가

Social Login TEST Flow

  1. /social/login 접속
  2. 소셜 로그인 요청
  3. 소셜 로그인 완료 후 access_token 발급
  4. /swagger-ui.html 접속
  5. /api/sign/signup/{provider} 사용자 가입
  6. 발급받은 Social Login access_token 필요
  7. /api/sign/singin 사용자 로그인하여 JWT Token 발급
  8. 발급받은 JWT Token 으로 API 테스트

Social Login 관련 기타 Class 및 Interface2

RestTemplate Class

  • Spring 에서 지원하는 REST API 를 호출하고 응답 받을 때까지 기다리는 동기 방식의 내장 Class (비동기식은 AsyncRestTemplate.class)
  • HTTP 프로토콜의 메서드들 제공

--

--