Spring Security - Architectrue에서 설명했던 아키텍쳐는 서블릿에서 스프링 시큐리티가 어떻게 Servlet 구조에서 인증, 인가를 하기위해 어떻게 동작하는지 살펴보았다. 클라이언트 요청이 일련의 필터체인을 거치면서 각 체인에 필요한 단계들을 거치는데 이러한 단계 뿐만 아니라 실제 애플리케이션 로직에서 사용할 공통적인 정보들을 공유하기 위해 ThreadLocal에 일련의 정보들을 보관하고 관리하는데 SecurityContextHolder이다. 위 그림의 SecurityContextHolder를 보면 여러 내부 하위 정보를 감싸는 형태로 구성되어 있는데, 실제 인증, 권한 정보를 저장하는 Principal, Credentials, Authorities 객체를 Authentication이..
보안(Security)에는 크게 두가지 개념, 인증(authentication)과 인가(authorization) 부분으로 나뉜다. 인증은 이 사용자가 현재 사용자가 누구인지 확인하는 과정이며 인가는 이 사용자가 특정 리소스를 사용할 자격이 있는지에 대한 부분이다. 예를들어 로그인을 한다는 행위는 사용자가 누구인지 특정할 수 있는 인증에 해당하고, 로그인 한 사용자가 일반 사용자인지, 관리자인지에 따라 관리자 페이지를 보여줄지 등을 결정하는 과정이 인가 과정이다. 스프링 시큐리티는 애플리케이션에 대한 인증, 인가를 지원하기 위해 여러개의 필터들로 구성된 필터 체인과 연관된 여러 모듈로 구성되어 있다. 이러한 필터들을 개발자가 직접 생성 또는 수정할 수 있도록 되어있다. 오염된 물을 정수하기 위해서 여러개..