SecurityContextPersistenceFilter

SecurityContextPersistenceFilter

  • SecurityContext 객체의 생성, 저장, 조회를 담당하는 Filter이다
    • 익명사용자
      • 새로운 SecurityContetxt 객체를 생성하여 SecurityContextHolder에 저장
      • AnonymousAuthenticationFilter에서 AnonymousAuthenticationToken 객체를 SecurityContext에 저장함.
    • 인증 시
      • 새로운 SecurityContetxt 객체를 생성하여 SecurityContextHolder에 저장
      • 인증이 최종 완료가 되면 Session에 SecurityContext를 저장.
    • 인증 후 
      • Session에서 SecurityContext 꺼내어 SecurityContextHolder 에 저장
      • SecurityContext 안에 Authentication 객체가 존재하면 계속 인증을 유지함.
    • 최종 응답 시 공통
      • SecurityContext.Holder.clearContext() 메소드를 수행하여 인증 객체를 초기화 시킴.

 


SecurityContextPersistenceFilter Flow

 

 

  • 먼저 인증을 받지 않는 유저가 접근 시 진행 되는 과정을 설명
    • 사용자가 요청시 SecurityContextPersistenceFilter가 수행됨. 
    • SecurityContextPersistenceFilter 에 있는 HttpSecurityContextRepository 가 인증여부를 검토함. 
    • 인증이 없으니 새로운 SecurityContext를 SecurityContextHolder에 생성.
    • 인증 과정을 거치고 난후, 인증이 된 SecurityContext를 SecurityContextHolder 에 저장.
    • 이후 해당 SecurityContext를 Session에 저장시킴. 
    • 요청시 끝날시에 SecurityContextHolder에 있는 정보들을 초기화 시킴.

 

  • 인증을 받고 난후의 과정을 설명 
    • 사용자가 요청시 SecurityContextPersistenceFilter가 수행됨. 
    • SecurityContextPersistenceFilter 에 있는 HttpSecurityContextRepository 가 인증여부를 검토함.
    • 인증이 되어 있으니 Session에서 SecurityContext 객체를 꺼내와서 SecurityContextHolder에 저장함.