본문 바로가기

Spring Framework/Spring Security

(4)
[Spring Security] Spring Security 환경에서 CORS 제대로 이해하고 설정하기 CORS란?CORS(Cross-Origin Resource Sharing)는 브라우저가 현재 페이지의 출처(Origin)와 다른 출처로 HTTP 요청을 보낼 때 적용되는 보안 정책이다. 여기서 Origin이란 프로토콜 + 호스트 + 포트의 조합을 말하며, 이 중 하나라도 다르면 Cross-Origin으로 간주된다. 예를 들어 프론트엔드가 http://localhost:3000, 백엔드가 http://localhost:8080이면 포트가 다르므로 Cross-Origin이다. 중요한 점은 CORS는 서버가 아닌 브라우저가 적용하는 정책이라는 것이다. 서버 간 통신이나 Postman 같은 도구에서는 CORS가 적용되지 않는다. 브라우저가 서버의 응답 헤더를 확인해서 "이 Origin에서의 요청이 허용됐는가?"..
[Spring Security] SecurityFilterChain SecurityFilterChain의 개요이 글은 Spring Security 6.4.3을 기반으로 작성되었습니다.  SecurityFilterChain은 FilterChainProxy에 의해서 사용되고,여러 개의 Security Filter들로 구성되어 있습니다. 이 SecurityFilterChain을 통해 보안 처리가 이루어진다고 생각하시면 됩니다.    Security Filter들은 보통 Bean이지만,DelegatingFilterProxy나 Servlet container에 등록되는 대신 FilterChainProxy에 등록됩니다.  이를 통해 얻는 장점이 몇 가지 있습니다.1. Spring Security 디버깅이 편리해집니다.- FilterChainProxy는 모든 스프링 시큐리티 지원의 ..
[Spring Security] DelegatingFilterProxy와 FilterChainProxy DelegatingFilterProxy이 글은 Spring Security 6.4.3을 기반으로 작성되었습니다.  위 그림은 Client의 하나의 HTTP request에 대해서 Filter들을 거쳐 Servlet까지 가는 그림입니다. DelegatingFilterProxy는 이 Filter중 하나입니다.  DelegatingFilterProxy는 스프링에서 제공하는 필터 구현체로서,Servlet 컨테이너와 스프링 IoC 컨테이너의 다리 역할을 합니다. 다리 역할?서블릿 컨테이너는 스프링 IoC 컨테이너에서 관리하는 Bean들에 대해 알지 못합니다.하지만 DelegatingFilterProxy는 스프링 컨테이너에서 Filter를 구현한 Bean(Bean Filter)들을 찾아 등록할 수 있습니다.※ 아래..
[Spring Security] Servlet 기반 어플리케이션 보안의 개요 - FilterChain 개요이 글은 Spring Security 6.4.3을 기반으로 작성되었습니다.  스프링 시큐리티의 Servlet 지원은 Servlet 필터(Filter) 위에서 동작합니다.따라서 필터가 뭔지 아는 것이 먼저입니다. 위의 이미지는 하나의 HTTP request에 대해서 어떻게 처리하는 지 보여줍니다. 만약 클라이언트(Clinet)가 request를 하나 보내면, container에서는 FilterChain을 생성합니다.이 FilterChain에는 여러 개의 Filter들과 하나의 Servlet이 포함되어 있습니다. Spring MVC 어플리케이션에서는 주로 DispatcherServlet의 객체가 Servlet이 됩니다.  이 그림에서 중요한 건 두 가지입니다.첫째, 대부분의 경우 1개의 Servlet이 ..