WEBBOOK CHAPTER

Spring Security 6, 인증에서 운영까지: 7장. 브라우저에는 세션을 기본값으로 검토한다

7장. 브라우저에는 세션을 기본값으로 검토한다

브라우저가 같은 서버의 화면과 API를 사용할 때 서버 세션은 좋은 기본값이다. 민감 토큰을 JavaScript 저장소에 두지 않고, HttpOnly, Secure, 적절한 SameSite cookie와 CSRF 방어를 결합할 수 있다. JWT가 무조건 현대적이고 세션이 낡았다는 구분은 잘못이다.


server:
  servlet:
    session:
      cookie:
        http-only: true
        secure: true
        same-site: lax
      timeout: 30m

Secure cookie는 HTTPS 환경에서만 전달된다. 로컬 HTTP 설정과 운영 설정을 profile로 구분하되 운영 기본을 느슨하게 만들지 않는다. reverse proxy 뒤에서는 forwarded header를 신뢰할 범위를 제한하고, 외부 사용자가 X-Forwarded-Proto를 위조하지 못하게 네트워크 경계를 구성한다.

세션 저장 위치도 결정한다. 한 인스턴스 메모리는 재시작과 scale-out에서 끊긴다. Spring Session과 Redis 등을 쓰면 공유되지만, 장애 반경과 만료·직렬화·logout 전파가 새 과제가 된다. 세션은 작은 신원 참조로 유지하고 큰 도메인 객체를 넣지 않는다.