이 포스트는 정수원님의 스프링 시큐리티 강의 수강 후 정리한 글입니다.

http.sesssionManagement() // 세션 관련 기능 작동
.maximumSession(1) // 최대 세션 허용 개수 설정 * -1은 무제한 허용
.maxSessionsPreventsLogin(true) // 동시 로그인 차단 * 2번 정책, false는 1번 정책
.invalidSessionUrl("/invalid") // 세션이 유효하지 않을 때 이동할 URL
.expiredUrl("/expired") // 세션이 만료될 경우 이동할 URL

http.sessionManagement()
.sessionFixation().changeSessionId() // default, 서블릿 3.1 이상 기본값으로 SessionId를 계속 변경하며, 이전의 세션에서 설정한 값들을 그대로 사용할 수 있다.
//.sessionFixation().migrateSession() // 서블릿 3.1 이하 기본값으로 SessionId를 계속 변경하며, 이전의 세션에서 설정한 값들을 그대로 사용할 수 있다.
//.sessionFixation().newSession() // SessionId를 계속 변경하며, 이전의 세션에서 설정한 값들은 계속 새로 설정해야된다.
//.sessionFixation().none() // SessionId를 그대로 사용해 공격에 취약하다.
http.sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.IF_REQUIRED) // 스프링 시큐리티가 필요시 세션 생성
//sessionCreationPolicy(SessionCreationPolicy.ALWAYS) // 스프링 시큐리티가 항상 세션 생성
//sessionCreationPolicy(SessionCreationPolicy.NEVER) // 스프링 시큐리티가 세션을 생성하지 않지만 이미 존재한다면 사용
//sessionCreationPolicy(SessionCreationPolicy.STATELESS) // 스프링 시큐리티가 생성하지 않고 존재해도 사용하지 않음
if(session.isExpired() == true)
session.isExpired() == true를 확인하는데 이전에 SessionManagementFilter가 진행한 session.expireNow()로 인해 세션 만료를 확인This session has been expired)를 응답한다