Issue 요약
Apple OAuth 2.0 / OpenID Connect를 연동하여 사용자가 Apple 계정으로 로그인할 수 있도록 구현합니다.
기존 Google / Kakao / Naver OAuth에서 적용한 백엔드 중심 handoff token 방식을 참고하여, Apple 로그인 요청 / callback 수신 / authorization code 검증 / Apple ID Token 검증 / 사용자 정보 조회 및 매핑 / 서비스 토큰 발급 흐름을 구현합니다.
Issue 상세
기존 소셜 로그인 API에서는 Google, Kakao, Naver OAuth 2.0을 연동하여 사용자가 소셜 계정으로 로그인할 수 있도록 구현했습니다.
이번 이슈에서는 Apple 로그인을 추가하여 사용자가 Apple 계정으로도 서비스에 로그인할 수 있도록 확장합니다.
로그인 흐름은 기존 Google OAuth 리팩토링 구조 및 Naver 소셜 로그인 API 구현 방식과 동일하게 백엔드 중심으로 처리합니다.
참고 ISSUE
AS-IS
- Google / Kakao / Naver 소셜 로그인만 지원
- Apple 계정 기반 로그인 미지원
- iOS 환경에서 Apple 로그인 지원 필요
- 소셜 제공자별 로그인 확장 구조 필요
TO-BE
- 앱이 백엔드의 Apple 로그인 시작 endpoint 호출
- 백엔드가 Apple OAuth Authorization URL 생성 및 redirect 수행
- Apple 로그인 완료 후 Apple이 백엔드 callback URL로 redirect
- 백엔드가 authorization code를 수신
- 백엔드가 Apple token endpoint에 code를 전달하여 token 응답 수신
- 백엔드가 Apple ID Token을 검증
- Apple ID Token의 subject 값을 provider id로 사용
- Apple에서 제공하는 email, name 등 사용자 정보를 매핑
- email이 null이거나 비공개 릴레이 이메일일 수 있으므로 방어적 코드 작성
- 조회한 사용자 정보를 기반으로 기존 회원 여부 확인
- 기존 회원은 로그인 처리
- 신규 회원은 회원가입 처리 후 로그인 처리
- 백엔드가 짧은 수명의 1회용 handoff token 생성
- 백엔드가 앱 deep link로 handoff token 전달
- 앱이 handoff token을 백엔드에 전달
- 백엔드가 handoff token 검증 후 서비스 access token / refresh token 발급
이번 구현을 통해 소셜 로그인 제공자를 Apple까지 확장하고, OAuth 핵심 흐름을 백엔드에서 일관되게 관리할 수 있도록 합니다.
또한 앱 딥링크에는 서비스 JWT 또는 Apple access token / id token을 직접 노출하지 않고, 짧은 수명의 handoff token만 전달하여 보안성을 유지합니다.
To do
Issue 요약
Apple OAuth 2.0 / OpenID Connect를 연동하여 사용자가 Apple 계정으로 로그인할 수 있도록 구현합니다.
기존 Google / Kakao / Naver OAuth에서 적용한 백엔드 중심 handoff token 방식을 참고하여, Apple 로그인 요청 / callback 수신 / authorization code 검증 / Apple ID Token 검증 / 사용자 정보 조회 및 매핑 / 서비스 토큰 발급 흐름을 구현합니다.
Issue 상세
기존 소셜 로그인 API에서는 Google, Kakao, Naver OAuth 2.0을 연동하여 사용자가 소셜 계정으로 로그인할 수 있도록 구현했습니다.
이번 이슈에서는 Apple 로그인을 추가하여 사용자가 Apple 계정으로도 서비스에 로그인할 수 있도록 확장합니다.
로그인 흐름은 기존 Google OAuth 리팩토링 구조 및 Naver 소셜 로그인 API 구현 방식과 동일하게 백엔드 중심으로 처리합니다.
참고 ISSUE
AS-IS
TO-BE
이번 구현을 통해 소셜 로그인 제공자를 Apple까지 확장하고, OAuth 핵심 흐름을 백엔드에서 일관되게 관리할 수 있도록 합니다.
또한 앱 딥링크에는 서비스 JWT 또는 Apple access token / id token을 직접 노출하지 않고, 짧은 수명의 handoff token만 전달하여 보안성을 유지합니다.
To do