개발 slecs

Apple OAuth 콜백 세션 유실

목차

feat: 무료 체험 관련 기능 및 UI 제거

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

첫 댓글 달아줘.