세션 인증은 서버가 인증 상태를 저장하고 클라이언트는 세션 ID만 전달하는 방식이며, JWT 기반 토큰 인증은 클라이언트가 서버가 발급한 자체 완결형 토큰을 요청마다 전달하고 서버는 이를 검증하는 방식입니다.
다중 서버 환경에서 두 방식은 어떻게 확장하나요?
세션 방식은 모든 서버가 인증 상태를 볼 수 있도록 Redis 같은 공용 세션 저장소나 Sticky Session 등이 필요합니다. 자체 완결형 토큰은 각 서버가 같은 검증 키를 사용하면 별도의 세션 조회 없이 검증할 수 있지만, 폐기 목록이나 Refresh Token을 관리하면 공용 저장소가 다시 필요할 수 있습니다.
로그아웃과 강제 만료는 어느 방식이 더 쉬운가요?
세션 방식은 서버 저장소에서 세션을 삭제하면 즉시 무효화할 수 있습니다. 자체 완결형 토큰은 만료 전까지 유효하므로 짧은 만료 시간, Refresh Token 폐기, 블랙리스트 같은 추가 전략이 필요합니다.
세션 방식과 토큰 방식은 어떤 기준으로 선택하나요?
중앙에서 로그인 상태를 세밀하게 제어해야 하는 웹 서비스라면 세션 방식이 단순할 수 있습니다. 여러 서비스나 다양한 클라이언트가 인증 정보를 전달해야 한다면 토큰 방식이 유리할 수 있지만, 저장 위치와 폐기 전략까지 고려해야 하며 토큰이 항상 세션보다 우수한 것은 아닙니다.