iOS 앱 출시를 위해 Spring Boot 서버 개발을 담당하게 됐습니다.
네이티브 앱 개발을 위해서는 보안을 위해 프론트와 백 사이에 토큰을 전달하는 것을 지양하고 프론트나 백 한쪽에서 인증 서버, 리소스 서버와의 통신을 전담할 것을 권장하고있습니다. 그러나 많은 블로그에서는 프론트와 백 간에 access token 을 전달하며 소셜로그인을 구현하고 있습니다.
본 글에서는 프론트단에서 소셜 로그인 서비스(kakao,naver 등)와 통신하는 모든 과정(로그인 -> 코드 발급 -> Access 토큰 -> 유저 정보 획득)을 일임하고, 백엔드단에서는 Spring Security, JWT를 활용하여 (유저 정보 -> JWT 발급) 방식으로 인증, 인가 시스템 개발을 합니다.
- 주로 네이티브앱에서 사용하는 방식
- 프론트에서 보낸 유저 정보의 진위 여부 판별할 보안 로직 필요 (ex. 대칭키/비대칭키)

소스코드 GitHub 링크: https://github.com/s0nnyday/SecurityJwtRESTAPIforSocialLogin
API 서버 형태로 구현 진행
1. 인증: 프론트에서 받은 유저 정보로 인증 JWT 발급
2. 인가: JWT 를 통한 경로별 접근 권한
3. 인증 정보 DB 저장 후 추가 정보 기입

