WEBBOOK CHAPTER

Spring Security 6, 인증에서 운영까지: 8장. 세션 고정과 동시 로그인을 정책으로 다룬다

8장. 세션 고정과 동시 로그인을 정책으로 다룬다

로그인 성공 때 세션 식별자를 바꾸는 세션 고정 방어는 기본 동작을 유지한다. 예외를 만들기보다 legacy 연동이 왜 기존 ID를 요구하는지 제거한다. 인증 전 장바구니 같은 상태는 필요한 값만 새 세션으로 옮긴다.


http.sessionManagement(session -> session
    .sessionFixation(fixation -> fixation.changeSessionId())
    .maximumSessions(2));

동시 세션 제한은 숫자 하나보다 사용자 경험과 사고 대응이 중요하다. 새 로그인을 거부할지 기존 세션을 끊을지, 모바일과 브라우저를 합칠지, 관리자가 모든 세션을 폐기할 수 있는지 정한다. 사용자에게 기기, 최근 사용 시각, 대략적 위치를 보여 줄 때도 개인정보 최소화를 적용한다.

비밀번호 변경, 계정 복구, 역할 강등, 퇴사 시 기존 세션을 언제 무효화하는지도 정책이다. 분산 세션에서 즉시 폐기가 실패하면 TTL만 기다리는 위험을 평가한다. remember-me는 장기 인증 수단이므로 편의 기능으로 가볍게 켜지 않는다.