-
[Spring Security5] SecurityContext에 가졌던 작은 오해개발/Spring 2023. 12. 18. 16:01
- 익명 사용자든 인증된 사용자든 매 요청 때마다 인증 객체(authentication)가 생성됨
- 인증 객체는 SecurityContext에 저장됨
- 익명 사용자의 요청일 때는 SecurityContext 객체를 만들어야 하지만, 인증 사용자는 Session에서 가져오기 때문에 미생성
- 인증 사용자는 SecurityContext 객체를 Session에 저장하지만, 익명 사용자는 Session에 저장하지 않음
- 각 요청마다 ThreadLocal이 만들어지고 SecurityContext는 각 ThreadLocal에 저장
- 이를 전역적으로 관리하는 SecurityContextHolder도 ThreadLocal에서 생성
- 이 안에서 ThreadLocal을 key, SecurityContext 객체를 값으로 하는 Map에 저장
- 필터들이 차례대로 호출될 동안 SecurityContext는 SecurityContextHolder에 저장되어 있지만 응답이 끝나고 나서는 마지막에
SecurityContextHolder.clearContext()를 호출
- 매 요청 때마다 저장되고 응답이 끝나기 전에 비운다
- 인증 사용자는 Session에 SecurityContext가 저장되어 있음
'개발 > Spring' 카테고리의 다른 글
[Spring Security5] 인가 예외(접근 거부) (1) 2023.12.23 [Spring Security5] Config에서 defaultSuccessUrl(), successHandler()의 순서 문제 (0) 2023.12.22 [Spring security5] 인증/인가에 대한 간략한 흐름 (0) 2023.12.16 내부 트랜잭션의 롤백과 외부 트랜잭션의 커밋 (0) 2023.07.06 트랜잭션 AOP (0) 2023.07.06