WEBBOOK CHAPTER

Next.js 16.3, 서비스로 완성하기: 29장. OAuth callback을 공격자의 눈으로 시험한다

29장. OAuth callback을 공격자의 눈으로 시험한다

로그인 버튼을 누르면 browser는 provider로 이동하고 callback에는 code와 state가 온다. 서버는 session에 보관한 state와 정확히 비교하고, PKCE verifier로 code를 한 번만 교환한다. ID token은 서명만 보지 말고 issuer, audience, expiry, nonce를 검증한다. email 문자열이 같다는 이유만으로 기존 계정을 자동 연결하지 않는다.

실습은 정상 로그인 외에 state 누락·변조, callback 재전송, 만료 code, 다른 redirect URI, provider key rotation, 이미 연결된 provider account를 시험한다. 로그에는 code·token·cookie를 남기지 않고 provider error class와 correlation id만 남긴다. logout은 local cookie 제거와 server session revoke 범위를 구분한다.

운영 도메인 전환 때는 provider console, application base URL, cookie domain, email link, CSP 대상이 함께 바뀐다. Preview URL을 wildcard callback으로 열지 않는다. Provider 장애 시 기존 session이 유지되는지와 새 로그인 안내도 출시 조건이다.