[Spring Security+OAuth2.0+JWT] 백엔드에서 소셜 로그인 모두 구현

손지민·2024년 4월 2일

Spring Security

목록 보기
10/11
post-thumbnail

개요

iOS 앱 출시를 위해 Spring Boot 서버 개발을 담당하게 됐습니다.

본 글에서는 Spring Security + OAuth2.0 + JWT 를 활용하여 백엔드에서 소셜 로그인의 모든 과정을 일임하여 인증, 인가 시스템 개발을 하며 배운 것을 정리하고자 합니다.

네이티브 앱 개발을 위해서는 보안을 위해 프론트와 백 사이에 토큰을 전달하는 것을 지양합니다. 많은 블로그에서는 프론트와 백 간에 access token 을 전달하며 소셜로그인을 구현하고 있습니다.

권장되는 방법에 따라 외부 소셜 로그인 지원 서비스와의 통신을 프론트나 백엔드에서 일임하는 방식으로 개발하고 그 중 백엔드에서 일임하는 방식으로 개발하였습니다.

소스코드 GitHub 링크 : https://github.com/s0nnyday/SpringSecurity-OAuth2-JWTforWebview


목표

프론트

  1. 하이퍼링크로 백엔드API GET 요청
  2. 쿠키에 포함된 JWT 획득

백엔드

  1. OAuth2.0 Client 와 Spring Security6.x 프레임워크를 활용하여 외부 사이트(카카오, 네이버)로부터 인증을 받고 인증받은 데이터는 MySQL DB 에 저장, 관리한다.
  2. 전달 받은 사용자 정보를 활용하여 JWT를 발급하고 인가를 진행한다.
  3. 프론트로 쿠키 JWT 전달


구현

API 서버 형태로 구현 진행

  • 인증: Kakao/Naver 소셜 로그인 후 JWT 발급
  • 인가: JWT 를 통한 경로별 접근 권한
  • 인증 정보 DB 저장 후 추가 정보 기입

버전 및 의존성

  • Spring Boot 3.2.4
  • Spring Security 6.2.3
  • OAuth2 Client
  • Lombok
  • Spring Data JPA
  • MySQL
  • JJWT 0.12.3
  • Gradle - kotlin
  • IntelliJ Community

profile
Developer

0개의 댓글