Skip to Content
Suffering builds character

2.시큐리티 컨텍스트

1. SecurityContextHolder

스프링 시큐리티 모델의 핵심으로 SecurityContext를 포함하고 있으며, SecurityContext 인스턴스를 현재 실행 중인 스레드에 연동하는 역할 수행 → 스프링 시큐리티에서 인증이 성공한 사용자에 대한 상세 정보를 담고 있는 저장소(Store)

또한 SecurityContextHolderSecurityContext 객체 자체를 관리하는 역할을 수행 → 컵(SecurityContext)과 컵 받침용 홀더(SecurityContextHolder)

2. SecurityContext

인증이 완료된 사용자의 상세 정보(Authentication)를 보관하는 객체 SecurityContextHolder를 통해 얻을 수 있음

SecurityContext 객체는 현재 인증된 사용자의 상세 정보인 자격 증명 정보를 나타내는 Authentication 객체를 포함하고 있음

사용자가 인증을 수행하기 전에는 비어 있는 SecurityContextSecurityContextHolder에 추가됨

실제 개발 시나리오에서는 사용자의 인증 프로세스가 수행되어 사용자가 인증이 성공했을 경우, 추후 비즈니스 로직 작성 과정 등 다양한 곳에서 인증된 엔티티에 대한 세부 정보가 필요할 수 있음 예를 들어, 현재 인증된 사용자의 이름이나 권한을 참조해야 하는 상황 등

따라서 인증 프로세스가 완료된 후에도 개발자가 필요에 맞게 이러한 정보에 접근할 수 있도록,

AuthenticationManager는 인증 프로세스를 성공적으로 완료한 후 요청이 유지되는 동안 Authentication 인스턴스를 SecurityContext에 저장하는데, 이 객체를 보관해두는 장소가 SecurityContext

따라서 컨트롤러는 필요할 때 SecurityContext 객체를 통해 이러한 세부 정보에 접근할 수 있음 이처럼 SecurityContext의 주요 역할 중 하나는 Authentication 객체를 관리하는 것

Last updated on