현대 애플리케이션은 다양한 authentication 메커니즘을 사용합니다 — session 기반, token 기반(JWT), 위임 authentication(OAuth/OpenID Connect). 각각의 작동 방식과 트레이드오프를 이해하는 것은 안전한 authentication을 구현하는 데 중요합니다.
Session 기반 authentication
SESSION 기반(전통적):
→ 사용자 로그인 → 서버가 SESSION 생성(서버 측 저장) → session ID 쿠키 전송 →
브라우저가 매 요청마다 전송 → 서버가 session 조회
✓ 서버가 session 제어(폐기 용이); 단순; 쿠키 자동 전송
✗ stateful(서버가 session 저장); 확장하려면 공유 session 저장소 필요
Token 기반 (JWT)
JWT (JSON Web Token):
→ 사용자 로그인 → 서버가 클레임(사용자 id 등)을 담은 SIGNED token 발급 →
클라이언트가 저장 → 매 요청마다 전송(보통 Authorization 헤더) →
서버가 SIGNATURE를 VERIFY(서버 측 조회 불필요)
✓ STATELESS(확장 용이; session 저장소 불필요); API/SPA/모바일에 적합
✗ 만료 전 REVOKE가 어려움(자체 완결적) → 짧은 만료 + refresh token 사용
⚠️ 안전하게 저장; (읽을 수 있는) payload에 secret을 넣지 마라; 제대로 검증
