Project Reactor
📘 Backend/Spring2023. 4. 4. 13:17Project Reactor

📘 Project Reactor 완전한 Non-Blocking 통신 지원 Publisher 타입으로 Mono[0|1] , Flux[N] 존재, 숫자는 가능한 데이터 emit의 수 MSA 기반 Application에 적합한 Library BackPresure 전략 사용 BackPresure 전략이란? Subscriber의 emit 데이터 처리 속도가 Publisher의 emit 속도를 따라가지 못할때 제어하는 전략 📘 Marble Diagram Reactor의 데이터 타입 중 하나인 Mono 마블 다이어 그램 (1) 원본 Mono에서 시작되는 Sequence를 타임라인으로 표현 (2) Sequence에서 구슬 1개가 생기는걸 데이터 Emit으로 표현 (3) 수직 막대바( | ) -> Sequence 정상 ..

Spring - Reactive Streams
📘 Backend/Spring2023. 4. 4. 13:15Spring - Reactive Streams

📘 Reactive System & Reactive Programming 선언형 프로그래밍(Lambda 표현식, Stream API), 순차 실행 X Reactive System은 Requst Thread의 응답 대기시간을 최소화 할 수 있게 Non-Bloking 통신 지원함 Reactive Programming 에서의 반응은 Thread의 Non-Blocking과 관련이 있다. Reactive System 설계 원칙 Means - 리액티브 시스템의 커뮤니케이션을 담당 Message Driven 리액티브 시스템은 메세지 기반 통신을 통한 시스템 간 느슨한 결합 유지 Form - 메세지 기반 통신을 통한 구조 형성 Elastic 트래픽량에 관계없이 일정한 응답성 유지 Resiilient 시스템 장애 발생 ..

OAuth2 (Google API)
📘 Backend/Spring2023. 4. 4. 13:12OAuth2 (Google API)

📘 OAuth2 [출처] OAuth 2.0 동작 방식의 이해|작성자 MDS인텔리전스](https://blog.naver.com/mds_datasecurity/222182943542) JWT는 사용자의 Credential을 직접 백엔드 어플리케이션에서 관리하는 구조이지만 OAuth2의 인증 방식은 백엔드 어플리케이션의 직접적인 관여가 없고, ThirdParty에서 사용자의 인증처리를 위임하고 Resource에 대한 자격증명 토큰을 발급한다. OAuth2를 적용하기 적합한 Application 유형 ThirdParty Application의 직접적인 API 사용하는 경우 다중 인증 목적 (보안성 ↑)의 경우 User의 Credential 정보의 흔적을 남기고 싶지 않을 경우 OAuth2 구성요소 Resour..

Implements JWT Login
📘 Backend/Spring2023. 4. 4. 13:07Implements JWT Login

📘 Processing Flow JWT 생성 흐름 JWT 검증 처리 흐름 📘 구현 사전 작업 UserDto의 Post 내부클래스에 password 필드 추가 Entity 클래스에 password 필드, 권한테이블 생성 로직 추가 SecurityConfiguration : Spring Security를 이용한 보안 강화를 위한 보안 구성 Annotation @Configuration implementation, extends None Dependency Injection JwtTokenizer Method @Bean public SecurityFilterChain -> 보안 설정 param = HttpSecurity throws = Exception 로그인 방식, csrf공격 방지 등 보안 옵션 설정 re..

JWT & Sticky Session
📘 Backend/Spring2023. 4. 4. 13:05JWT & Sticky Session

📘 JWT 인증 (CSR 방식) 기존 SSR 세션 기반 방식 HTTP는 Request 전송 후 & Response 수신 후 Connection을 끊는 비연결성, Request, Response에 대한 상태를 버리는 비상태성의 특성이 있는데, 서버에서는 매번 인증된 사용자가 보낸 Request인지 어떻게 구분할까? 답은 세션 기반의 자격증명 방식을 사용해 유저의 정보를 세션의 형태로 저장한다 JWT 유래 SSR 방식에서의 세션 기반 FilterChain 인증을 사용했을때 인증에 필요한 리소스는 모두 서버가 부담해야했다. 이 리소스 부담을 덜어줄 방법을 고안해낸게 CSR방식의 JWT인증으로, 인증부담을 클라이언트에게 전가한다. 민감정보를 클라이언트 측에서 보관하는 보안관점에서의 취약점 -> 인증정보 암호화로..

Spring EL 접근제어 표현식
📘 Backend/Spring2023. 4. 4. 12:55Spring EL 접근제어 표현식

📘 Spring Expression Language (SpEL) Spring Data Redis와 Cache 기능을 사용하면서 @Cacheable()의 속성값으로 SpEL을 자주 사용하게 되어 정리해봅니다. SpEL 이란? 런타임 시 객체에 대한 쿼리와 조작을 지원하는 강력한 표현 언어입니다. SpEL 표현식은 # 기호로 시작하며 중괄호로 묶어서 표현합니다. #{Expressions} 속성 값을 참조할 땐 $ 기호와 중괄호로 묶어서 표현합니다. ${prop.name} ex) #{${prop} + 2} 📘 연산자 📕 산술 연산자 @Value("#{19 + 1}") // 20 private double add; @Value("#{2 ^ 10}") // 1024 private double powerOf; @V..

Security Authentication & Authorization
📘 Backend/Spring2023. 4. 4. 12:53Security Authentication & Authorization

📘 Authentication Processing Flow 인증 처리 과정 User의 로그인 시도, Request를 제일 먼저 만나는 컴포넌트 - UsernamePasswordAuthenticationFilter Login Form 방식의 로그인 시 사용 ID, PW를 전달받은 UsernamePasswordAuthenticationFilter는 UsernamePasswordAuthenticationToken을 생성 * UsernamePasswordAuthenticationFilter는 AbstractAuthenticationProcessingFilter를 상속한다. UsernamePasswordAuthenticationToken은 Authentication 인터페이스의 구현체이다 인증이 되지않은 Auth..

image