목록전체 글 (110)
ㅅㅇ
MQ(Message queue) 란? 크게, Producer, Consumer 로 구성되며, Producer는 메시지를 큐에 전송하고 Consumer가 큐의 메시지를 처리하는 방식이다. MQ는 비동기로 요청을 처리하고 queue에 저장하여 consumer에게 병목을 줄여줄 수 있다. MQ의 종류 RabbitMQ, Kafka, ActiveMQ … 각 시스템 목적에 맞춰 사용하는 게 가장 바람직하다. 쓰이는 이유 일반적으로 Server-Client 구조에서는 사용자가 요청을 하면 Server에서는 Request에 대한 처리를 한 후 Response 한다. 이런 간단한 구조는 MQ와 같은 미들웨어를 사용할 필요가 없다. 서버 간 데이터를 주고받을 때 만약 서버가 죽거나 서버 점검 등으로 다운 타임이 발생하는 ..
아래 아키텍처와 같이 SpringSecurity 의 여러 필터 처리 과정을 통해서 우린 사용자의 로그인 요청과 특정 자원 요청에 대해 인증 및 인가 보안 처리를 할 수 있다. 1. 인증 (로그인 요청) 1. 클라이언트에서 로그인 요청. id, password 을 전달 받음. - DelegatingFilterProxy 2. DelegatingFilterProxy는 springSecurityFilterChain 이라는 이름을 가진 Bean 을 찾음. 3. DelegatingFilterProxy는 그 이름을 가진 빈인 FilterChainProxy에게 인증요청을 위임 - FilterChainProxy 4. FilterChainProxy 의 필터가 인증 인가 보안 처리 수행 시작!! - SecurityConte..
처리 순서대로 정리한 거 아님. 1. SecurityContextPersistenceFilter : SecurityContext 객체를 생성, 조회 하는 필터 크게 세 가지 일을 한다. SecurityContext 를 영속화 하는 역할 인증 성공 후 후처리 로직 수행 시점에서 동시에 수행 되는 로직 필터 내부의 SecutrityContextRepository(HttpSecurityContextRepository) 에서 처리 : HttpSession 의 Attribute에 SecurityContext 객체를 저장하는 클래스 해당 필터는 매 번 요청마다 수행 요청 전반에 걸쳐 필요시, SecurityContext를 조회하는 역할 Session에서 SecurityContext를 꺼내 SecurityContex..
0. Spring Securtiy 스프링 기반의 애플리케이션의 보안(인증과 권한, 인가 등)을 담당하는 스프링 하위 프레임워크 1. 스프링 필터를 사용하기 위한 위임 서블릿 필터 1. DelegatingProxyChain : 필터와 빈을 연결해주는 클래스 즉, 서블릿 필터에서 스프링 빈들을 주입하거나 사용하기 위해 필요한 클래스가 바로 DelegatingProxyChain 이다. 왜 필요한가 ? 서블릿 필터는 스프링 빈을 주입해서 사용할 수 없다. 스프링 빈은 스프링 컨테이너에서 생성 및 하는 컴포너트이고 서블릿필터는 서블릿 컨테이너에서 생성 및 관리하는 필터들이기 때문에 서로 실행되는 위치가 다르기 때문이다. 스프링 시큐리티는 요청에 대한 인증 및 인가와 같은 보안 처리를 필터 기반으로 처리하는데, 개..
1. RestAPI 요청 시, 발생할 수 있는 400 대 ClientRequest(Series.CLIENT_ERROR)에러와 사용자 정의 예외 처리를 제외한 모든 500 에러(Internal Server Error) 예외 처리 알아보기 ⇒ “스프링 예외를 미리 처리해둔 추상 클래스ResponseEntityExceptionHandler 를 상속받을 것인데, 내가 클라이언트에게 응답하고자 하는 페이로드로 재정의한다." 1. 먼저, 코드 작성 전에 아래 두 가지를 살펴봐야 한다. HttpStatus(org.springframework.http.HttpStatus) 아래 url 확인 [spring-framework/HttpStatus.java at 4.3.x · spring-projects/spring-fram..
Exception 스프링 부트의 예외 처리방식은 크게 2가지가 존재 @ControllerAdvice 를 통한 모든 Controller 에서 발생할 수 있는 예외처리 @ExceptionHandler 를 통한 특정 Controller 의 예외처리 ⇒ @ControllerException 로 모든 컨크롤러에서 발생한 예외를 정의하고, @ExceptionHandler 를 통한 발생하는 예외 마다 처리할 메소드를 정의 1. 예외 클래스 크게 말하면 로직 상 문제가 있어보인다와 없어보인다의 차이 Checked Exception (그 외 Exception) UnChecked Exception(RuntimeException) 처리 여부 반드시 예외 처리 필요 명시적 처리 강제하지 않음 확인 시점 컴파일 단계 문법적으로..