티스토리 뷰

728x90

인증 API - SessionManagementFilter

1. 세션 관리

- 인증 시 사용자의 세션 정보르 등록, 조회, 삭제 등의 세션 이력을 관리

2. 동시적 세션 제어

- 동일 계정으로 접속이 허용되는 최대 세션수를 제한

3. 세션 고정 보호

- 인증 할 때마다 세션쿠키를 새로 발급하여 공격자의 쿠키 조작을 방지

4. 세션 생성 정책

- Always, If_Required, Never, Stateless

인증 API - ConcurrentSessionFilter

- 매 요청 마다 현재 사용자의 세션 만료 여부 체크

- 세션이 만료되었을 경우 즉시 만료 처리

- session.isExpired() 값이 true이면 로그아웃 처리하고 즉시 오류페이지를 응답한다.

기존 세션 만료가 default로 설정되있는 sessionManagement() 설정일 경우

새로운 사용자가 로그인을 하면 SessionManagementFilter가 이전 사용자 세션을 만료 시킨다.

그리고 나서 이전 사용자가 다시 재요청을 했을 시에는 ConcurrentSessionFilter가 세션이 만료되었는지 체크 session.isExpired()를 통해서 세션이 만료된걸 확인하고 로그아웃하고 오류페이지를 응답한다.

ConcurrentSessionFilter는 매 요청마다 사용자의 세션을 체크한다.

시퀀스 다이어그램

user1과 user2가 인증을 시도하는 시퀀스 다이어그램이다.

user1 로그인

  • ConcurrentSessionControlAuthenticationStrategy 동시적 세션처리를 하는 클래스를 호출한다.
  • session의 허용개수를 확인. (최대 세션 허용개수가 1개라고 가정)
  • ChangeSessionIdAuthenticationStrategy 세션고정 보호 기능을 처리하는 클래스
  • RegisterSessionAuthenticationStrategy 사용자의 세션 정보를 등록하고 저장하는 클래스
  • 인증성공

user2 로그인 

인증 실패 전략인경우

  • ConcurrentSessionControlAuthenticationStrategy 호출 
  • session의 허용 개수를 확인했더니 최대 허용개수를 초과 했다. 
  • 인증실패 SessionAuthenticationException 호출

세션 만료 전략인 경우

  • 먼저 user2가 로그인이되고 인증이 성공한다. 이때 user1의 세션을 만료시킨다. session.expireNow()
  • user2는 세션고정보호 및 세션정보를 등록한다.
  • user1이 다시 접근하고자 하면 session.isExpired()를 통해 세션이 만료되었는지 확인
  • 세션 만료 전략이므로 이미 user1의 세션은 만료된 상태이다.
  • 로그아웃 & 페이지 튕긴다.
@Override
protected void configure(HttpSecurity http) throws Exception {
    //인가정책
    http
            .authorizeRequests()
            .anyRequest().authenticated();
    //인증정책
    http
            .formLogin();
    //동시 세션 제어
    http
            .sessionManagement()
            .maximumSessions(1)
            .maxSessionsPreventsLogin(true); //세션 만료 전략으로 설정

}

참고

https://www.inflearn.com/course/%EC%BD%94%EC%96%B4-%EC%8A%A4%ED%94%84%EB%A7%81-%EC%8B%9C%ED%81%90%EB%A6%AC%ED%8B%B0

 

스프링 시큐리티 - Spring Boot 기반으로 개발하는 Spring Security - 인프런 | 강의

초급에서 중.고급에 이르기까지 스프링 시큐리티의 기본 개념부터 API 사용법과 내부 아키텍처를 학습하게 되고 이를 바탕으로 실전 프로젝트를 완성해 나감으로써 스프링 시큐리티의 인증과

www.inflearn.com

 

728x90
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함