누구인지 증명(OIDC)
→ 무엇을 할 수 있는지 허가(OAuth2)
→ 어느 API에 갈 수 있는지 지정(Audience)
→ 정확히 어떤 권한인지 세부 지정(Scopes)
[User] --(OIDC 로그인)--> [Auth 서버]
↳ ID 토큰: "난 누구" (클라이언트/UI용)
[Client] --(aud=API, scope=xxx)-> [Auth 서버]
↳ Access 토큰: "이 API에서 이런 권한 OK" (서버/API용)
[API] <-- Access 토큰 검증 (iss, aud, exp, scope 등) -- [Client]
Auth.js (구 NextAuth.js)
Next.js에 딱 맞춘 오픈소스·셀프호스트형 인증 라이브러리. OAuth/Email/크리덴셜, JWT/DB 세션, Prisma 어댑터 등으로 유연하게 구성. App Router와 공식적으로 잘 맞고 v5에서 구성 방식이 많이 단순해짐.
Auth0 ⇒ 결정
Okta 산하의 매니지드(SaaS) 아이덴티티 플랫폼. Universal Login, 소셜/엔터프라이즈 SSO(SAML/OIDC), MFA/Adaptive MFA, Organizations(B2B 멀티테넌트), Actions(서버리스 확장) 등 엔터프라이즈 기능이 풍부. Next.js App Router/Edge 런타임 지원 SDK 제공
[사용자] → (Universal Login) → [Auth0] ──▶ ID 토큰(누구)
└──▶ Access 토큰(무엇/어디: audience+scopes)
[Next.js] ← 세션(쿠키) 관리
[API] ← Access 토큰 검증(iss/aud/scope/exp)