OAuth 콜백은 외부 프로필을 내부 로그인으로 바꾸는 경계다
콜백 라우트에서는 제공자 응답을 그대로 넘기지 않는다. Strategy가 외부 프로필을 정리하고, AuthService가 내부 사용자와 토큰을 만든 뒤, Controller가 클라이언트 전달만 맡는다.
| 단계 | 책임 | 실패 처리 |
|---|---|---|
| Guard | provider strategy 실행, code 교환, profile 확보 | provider 오류나 동의 거부면 실패 리다이렉트 |
| Strategy | provider id, email, displayName을 내부 형식으로 정리 | 필수 식별자가 없으면 인증 실패 |
| AuthService | 기존 사용자 연결 또는 새 사용자 생성 | 중복 계정 정책에 따라 명확히 분기 |
| Controller | 서비스 토큰 발급 후 클라이언트로 전달 | 토큰을 URL에 오래 노출하지 않도록 처리 |
핵심: OAuth 성공은 provider 인증 성공이 아니라, 내부 사용자 연결과 서비스 토큰 발급까지 끝났다는 뜻이어야 한다.