[Spring Security+JWT] 프론트에서 소셜 로그인 처리 - 백엔드는 사용자 정보로 인증, 인가

손지민·2024년 4월 2일

Spring Security

목록 보기
11/11

개요

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

네이티브 앱 개발을 위해서는 보안을 위해 프론트와 백 사이에 토큰을 전달하는 것을 지양하고 프론트나 백 한쪽에서 인증 서버, 리소스 서버와의 통신을 전담할 것을 권장하고있습니다. 그러나 많은 블로그에서는 프론트와 백 간에 access token 을 전달하며 소셜로그인을 구현하고 있습니다.

본 글에서는 프론트단에서 소셜 로그인 서비스(kakao,naver 등)와 통신하는 모든 과정(로그인 -> 코드 발급 -> Access 토큰 -> 유저 정보 획득)을 일임하고, 백엔드단에서는 Spring Security, JWT를 활용하여 (유저 정보 -> JWT 발급) 방식으로 인증, 인가 시스템 개발을 합니다.

  • 주로 네이티브앱에서 사용하는 방식
  • 프론트에서 보낸 유저 정보의 진위 여부 판별할 보안 로직 필요 (ex. 대칭키/비대칭키)

소스코드 GitHub 링크: https://github.com/s0nnyday/SecurityJwtRESTAPIforSocialLogin


목표

프론트

  1. 외부 소셜 로그인 서비스(kakao, naver)와 통신하는 모든 과정 처리하여 유저 정보 발급
  2. 백엔드로 유저 정보 전달
  3. JWT 획득

백엔드

  1. 프론트로부터 받은 유저 정보 확인
  2. JWT 발급

구현

API 서버 형태로 구현 진행
1. 인증: 프론트에서 받은 유저 정보로 인증 JWT 발급
2. 인가: JWT 를 통한 경로별 접근 권한
3. 인증 정보 DB 저장 후 추가 정보 기입


버전 및 의존성

  • Spring Boot 3.2.4
  • JAVA 17
  • Spring Security 6.2.3
  • jwt 4.4.0
  • Lombok
  • Spring Data JPA
  • MySQL
  • Gradle - kotlin
  • IntelliJ Community

profile
Developer

0개의 댓글