인증은 Provider보다 세션 위치와 서버 보호 경계를 먼저 정한다
로그인 버튼만 붙이는 문제가 아니다. Server Component에서 세션을 읽고, Proxy에서 진입을 선별하며, Server Action과 Route Handler에서 권한을 다시 확인한다.
| 결정 항목 | Auth.js에서 보는 것 | Next.js 연결 지점 | 주의할 점 |
|---|---|---|---|
| 로그인 방식 | OAuth Provider, Credentials | Auth.js handlers, callback URL | Provider callback URL과 AUTH_* 환경 변수의 정합성 |
| 세션 전략 | JWT 또는 Database Session | auth(), jwt/session callbacks | 쿠키 크기, 만료, 서버 조회 비용 |
| 페이지 보호 | authorized callback | proxy.ts matcher | 정적 자산과 공개 페이지를 잘못 막지 않기 |
| 서버 데이터 접근 | auth() | Server Component, Server Action, Route Handler | 클라이언트 세션만 믿고 서버 권한을 생략하지 않기 |
| 운영 추적 | events, logger | Runtime Logs, monitoring | 인증 실패 이유와 개인정보 노출을 분리 |