728x90
SessionManagementFilter
- 세션 관리
- 인증 시 사용자의 세션정보를 등록, 조회, 삭제 등의 세션 이력을 관리
- 동시적 세션 제어
- 동일 계정으로 접속이 허용되는 최대 세션수를 제한
- 세션 고정 보호
- 인증할 때마다 세션 쿠키를 새로 발급하여 공격자의 쿠키 조작을 방지
- 세션 생성 정책
- Always, If_Required, Never, Stateless
ConcurrentSessionFilter
- 매 요청 마다 현재 사용자의 세션 만료 여부 체크
- 세션이 만료로 설정되었을 경우 즉시 만료 처리
- session.isExpired() == true
-
로그아웃 처리
-
즉시 오류 페이지 응답
-

- SessionManagermentFilter 가 이전 사용자 세션 만료 정책을 쓰고 있다면 이전 사용자 세션을 만료시킨다.
- 이전 사용자가 세션이 만료되 있는 상태에서 접근하게 된다면 ConcurrentSessionFilter가 isExpired 메서드를 통해 Logout 페이지나, 오류 페이지를 응답해 준다.

- 초기 접속시, SessionManagementFilter가 동작한다.
- RegisterSessionAuthenticationStrategy(세션 등록), changeSessionIdAuthenticationStrategy(세션 새로 발급), ConcurrentSessionControlAuthenticationStrategy(동시 접속 세션 개수 체크)가 동작한다.
- 동시접속 세션갯수가 초과될 경우
- 인증 실패 전략일 경우 SessionAuthenticationException을 발생시킨다.
- 세션 만료 전략일 경우 ConcurrentSessionControlAuthenticationStrategy에서 expireNow()를 설정하여 준 뒤, 후에 만료된 세션으로 접속하게 되면, ConcurrentSessionFilter가 isExpired()가 true가 되어 로그아웃되고, 에러 메시지를 출력한다.
- ConcurrentSessionFilter와 같은 경우 자원에 접근 시 매번 동작되는 필터이며, 세션이 만료되었는지 확인해 준다,
728x90