Spring23 [Spring] Spring Security SecurityFilter란? SecurityFilterChain 출처 웹 요청이 발생하면 서블릿은 DelegatatingFilterProxy를 통해 FilterChainProxy에 설정 된 필터들을 실행시킵니다. 하지만 각 요청에 적용 될 필터 체인에 대한 유효성 검증이 필요한데 이를 관리하기 위해서는 SecurityFilterChain을 통해 해당 요청에 적용되는 필터 체인이 있는지 결정할 수 있게끔 서포트합니다.(in order to decide whether it applies to that request.) 이를 위해 SecurityFilterChain의 표준 구현체로 DefaultSecurityFilterChain을 사용하며 발생한 요청이 RequestMatcher에 일치하면 Spring Security에 정의된 필터를 반.. 2023. 12. 3. [Spring] Spring Security 구성 요소 설정 @EnableWebSecurity WebSecurityConfigurer 또는 SecurityFilterChain을 사용하기 위해서는 @EnableWebSecurity 어노테이션을 선언해야합니다. 또한 @EnableWebSecurity 어노테이션을 명시함으로써 Spring Security 를 활성화하고 설정되어 있는 기본 설정을 비활성화한 후 필요한 보안 규칙을 정의하고 구성할 수 있습니다. 즉 EnableWebSecurity 는 Spring Security 자동 구성(Auto Configuration)을 사용함을 나타내는 어노테이션으로 Spring Security 5.7.0-M2부터 Deprecated 된 WebSecurityConfigurer 또는 SecurityFilterChain의 설정 파일.. 2023. 9. 20. [Spring] Spring Security란? Spring Security Spring Security는 강력하고 사용자 정의가 가능한 인증 및 액세스 제어 프레임워크입니다. Spring 기반 애플리케이션 보안을 위한 사실상 표준 프레임워크며 사용자 인증, 권한 부여, 세션 관리, CSRF(Cross-Site Request Forgery) 및 XSS(Cross-Site Scripting) 방어, 보안 헤더 설정, 사용자 로그인 및 로그아웃 관리, 접근 제어, 그리고 다양한 인증 및 인가 메커니즘을 제공하여 웹 애플리케이션의 보안을 강화할 수 있습니다. 또한 Spring Web MVC와 선택적 통합을 제공하여 웹 애플리케이션의 보안 구현을 간편하게 설정 할 수 있습니다. Spring Security의 필터 체인(Filter Chain)을 사용하요 HT.. 2023. 9. 14. [Spring] Spring AOP 동작 방식 @EnableAspectJAutoProxy 기본적으로 ProxyFactory 클래스를 사용하여 AOP 프록시를 생성하고 관리할 수 있지만 이는 수동적이며 번거로운 작업입니다. 그렇기 때문에 Spring은 프록시 생성과 관리의 작업을 자동화하고 추상화한 org.springframework.context.annotation.EnableAspectJAutoProxy 어노테이션을 제공합니다. @EnableAspectJAutoProxy는 IoC 컨테이너가 org.aspectj.lang.annotation.Aspect가 적용된 클래스를 스캔하고 필요한 프록시를 자동으로 생성하여 AOP를 적용할 수 있게끔 설정합니다. @Target(ElementType.TYPE) @Retention(RetentionPolicy.RU.. 2023. 8. 30. [Spring] Spring AOP JDK Dynamic & CGLIB Proxy 생성 방식 ProxyFactory org.springframework.aop.framework.ProxyFactory 설명하기 앞서 Spring에서 AopProxy를 어떤 식으로 관리하는지 살펴 보겠습니다. public interface AopProxy { Object getProxy(); Object getProxy(@Nullable ClassLoader classLoader); Class getProxyClass(@Nullable ClassLoader classLoader); } 스프링은 org.springframework.aop.framework.AopProxy를 통해 AOP Proxy 객체를 추상화했습니다. 그 중 제공하는 구현체로는 인터페이스 기반의 JDK Dynamic Proxy와 클래스 기반의 CGLI.. 2023. 8. 28. [Spring] Spring AOP란? AOP AOP는 Aspect Oriented Programming의 약자로 관점 지향 프로그래밍을 뜻합니다. AOP는 시스템을 구성하고 모듈화하는 새로운 방법을 제공하는 프로그래밍 방법론으로 OOP(Object Oriented Programming)의 보완적인 개념으로 등장했습니다. OOP는 주로 주요 비즈니스 로직을 객체로 추상화하여 모델링하는데 중점을 두기 때문에 중복되는 관심사(Concerns) 문제를 해결하기에는 제한적입니다. AOP는 이러한 OOP의 한계를 극복하기 위해 등장한 개념으로 Cross-cutting Concerns와 Core Concerns를 분리하여 모듈화하는 것을 목표로 합니다. 관심사를 Aspect 라는 모듈로 모델링하여 주요 비즈니스 로직과는 별개로 존재하면서도 여러 모듈에 .. 2023. 8. 27. [Spring] DL(Dependency Lookup) 의존성 조회(Dependency Lookup: DL)이란? 의존성 조회(Dependency Lookup: DL)은 제어의 역전(Inversion of Control: IoC) 원칙을 구현한 디자인 패턴 중 하나입니다. IoC 컨테이너가 객체 생성과 의존성 주입을 담당하는 의존성 주입(Dependency Injection: DI)과는 다르게 DL은 개발자가 필요한 시점에 의존성을 요청하여 컨테이너로부터 해당 의존성을 가져옵니다. DL은 컨택스트별 의존성 조회(Contextualized Dependency Lookup: CDL)를 사용하여 의존성을 조회하는데, 이는 결국 스프링에서 관리하는 컨택스트인 ApplicationContext를 기반으로 빈과 빈들의 의존성을 조회한다는 뜻입니다. 즉, 특정 설정 파일.. 2023. 7. 31. [Spring] Spring Container 스프링 컨테이너 스프링 컨테이너는 스프링에서 객체의 생성, 관리, 조립 등을 담당하는 컨테이너입니다. org.springframework.context.ApplicationContext 인터페이스를 스프링 컨테이라 부르며, XML 또는 어노테이션 기반의 자바 설정 클래스로 생성이 가능합니다. ApplicationContext는 다양한 인터페이스를 상속받으며 빈 관리 기능 & 어플리케이션 부가 기능을 제공합니다. ApplicationContext가 상속 받는 인터페이스의 제공 기능은 아래와 같습니다. BeanFactory: 빈 객체를 생성하고 빈의 인스턴스화, 의존성 주입, 라이프사이클 관리하는 역할을 담당하는 인터페이스입니다. HierarchicalBeanFactory: 부모-자식 관계를 가지는 Bean.. 2023. 7. 27. [Spring] 스프링의 예외 처리 방법 스프링의 기본 예외 처리 방법 자바 프로그램은 예외가 발생하면 예외 정보를 남기고 스레드가 종료되는 반면에 스프링은 예외가 발생했을 때 웹 애플리케이션이 종료되지 않고 HTTP 상태 코드가 노출이 됩니다. 스프링 부트는 컨트롤러 이하에서 발생한 예외를 캐치하여 스레드를 종료 시키는 것이 아닌 예외 내용을 디스패처서블릿에서 에러컨트롤러로 다시 요청을 보냄으로써 마치 정상 요청인 것처럼 예외 내용을 처리하도록 동작하게 됩니다. 하지만 최초 요청과 더불어 예외 요청을 위해 컨트롤러를 2번 호출한다는 것은 꽤나 복잡하다고 느껴지며 또 이는 필터나 인터셉터를 2번 호출하는 것과 같은 다른 문제를 야기할 수 있습니다. 이런 중복 호출을 방지하기 위해 필터는 등록할 때 DispatcherType을 설정 할 수 있으며.. 2023. 7. 26. 이전 1 2 3 다음