Apple OAuth 콜백 차단·세션 유실 문제 해결
목차
feat: QR 프로모션 관리 및 랜딩 페이지 기능 추가
Apple OAuth가 구글/카카오랑 달리 까다로운 이유가 있음. form_post 방식을 강제하기 때문에 콜백이 POST로 들어오고, 이 과정에서 세션이 끊기거나 CORS 문제가 발생함.
Apple OAuth 특이사항
- 콜백이 GET이 아닌 POST (form_post)
- 봇 차단 필터가 Apple 서버 IP를 막아버릴 수 있음
- CORS 설정에 Apple 콜백 URL 명시 필요
- 연동 후 세션 재설정 필수
수정 흐름
BotBlockFilter → Apple 콜백 URL 예외 추가
WebMvcConfig → CORS 허용 URL 추가
OAuthController → 세션 재설정 로직 추가
| 버그 | 증상 | 해결책 |
|---|---|---|
| CORS 차단 | 콜백 400 에러 | WebMvcConfig에 Apple URL 허용 |
| 봇 필터 차단 | 콜백 403 에러 | BotBlockFilter 예외 처리 |
| 세션 유실 | 로그인 실패 | 콜백 후 세션 강제 재설정 |
// 콜백 후 세션 재설정
session.setAttribute("loginUser", member);
session.setAttribute("sysId", member.getSysId());
SNS 연동은 provider마다 동작 방식이 달라서 결국 분기 처리함. 특히 Apple은 최초 인증 시만 이름/이메일을 넘겨주고 이후엔 안 줌. 첫 콜백 때 반드시 저장해야 함.
개발 원칙 정리
이 작업을 진행하면서 재확인한 원칙들:
작은 커밋: 변경 단위를 작게 유지해서 코드 리뷰와 롤백이 쉽게.
테스트 먼저: 변경 전 현재 동작을 파악하고, 변경 후 동일하게 동작하는지 확인.
문서 동기화: 코드가 바뀌면 관련 주석과 문서도 같이 업데이트.
| 원칙 | 이유 |
|---|---|
| 단일 책임 | 하나의 함수/클래스는 하나의 역할만 |
| 명시적 코드 | 영리한 코드보다 읽기 쉬운 코드 |
| 실패 우선 처리 | happy path보다 에러 케이스 먼저 설계 |
끝
댓글 0
첫 댓글 달아줘.