Spring Security - HeaderWriterFilter Security FilterChain에서 3번째로 동작하는 SecurityFilter이다. 크게 신경쓸일이 없는 필터이다. 특별한 설정이 필요없음. HeaderWriterFilter 응답 헤더에 시큐리티 관련 헤더를 추가해주는 역할을 담당한다. 기본적으로 5개의 헤더 Writer가 적용된다. XContentTypeOptionsHeaderWriter: MIME TYPE SNIFFING ATTACK PROTECITON 브라우저가 컨텐츠 타입을 알아내기위해 MIME타입을 분석하는 경우가 있음. 실행할수 없는 MIME타입임에 불구하고 실행하려고 시도하는 과정에서 보안 관련 문제가 존재함. 뭔가를 실행한다 -> 브라우저가 다운로드를 받는 동작 등 ..
Spring Security - SecurityContextPersistenceFilter SecurityContextPersistenceFilter SpringSecurity FilterChain에서 2번째로 실행되는 Filter이다. 기존에 인증된 정보가 있다면 다음 요청에서도 다시 인증을 하지않도록 SecurityContext를 공유하는 기능을 제공한다. Spring Session 을 활용하여 세션 클러스터를 구현할 수 있다. SecurityContextRepository SecurityContextPersistenceFilter가 기존의 SecurityContext를 로드 및 초기화하는데 사용한다. 기본 전략은 HttpSession 이다.
Spring Security - @Async Async한 기능과 스프링 시큐리티가 어떻게 동작하는지 살펴본다. Async-Service 이번에는 Async한 Handler가 아닌 Service를 생성한다. 다음은 Async-Service를 호출하는 간단한 Handler 코드이다. Async-Service를 호출하기 전 후로 SecurityLogger를 사용하여 로깅을 하는 매우 간단한 핸들러이다. Async한 동작을 한다면, SecurityLogger를 활용한 로그가 순서대로 출력을 보장하지 않는다. 다음은 Async-Service 코드를 살펴보자 마찬가지로 SecurityLogger를 활용하여 로깅을 하는 매우 간단한 메서드이다. @Async 애노테이션을 활용하여 Async하게 동작하는 메서드를 정의했..
Spring Security - WebAsyncManagerIntegrationFilter SpringSecurityContextHolder는 ThreadLocal기반으로 동작한다. 즉 같은 Thread내에서만 SecurityContext가 공유된다. WebAsyncManagerIntegrationFilter는 SpringMVC에서 Async과 관련된 기능을 사용할때 SecurityContext를 공유할수있도록 도와주는 필터이다. Callable java에서 지원하는 기능이고, SpringMVC에서 Async한 요청을 처리할때 응답으로 사용할 수 있다. return 타입을 Callable로 지정하면 asyncHandler() 내에서의 Thread는 Tomcat에서 할당한 NIO Thread를 사용한다. ..