JAVA 28

[Spring Web Flux] Project Reactor

1. Reactor? 리액티브 스트림즈 표준 사양을 구현한 구현체 중 하나이다. 리액티브 스택에 포함되어 리액티브한 애플리케이션으로 동작하는데 있어 핵심적인 역할을 담당하는 리액티브 프로그래밍을 위한 라이브러리. 2. Reactor의 특징 리액티브 스트림즈(Reactive Streams)를 구현한 리액티브 라이브러리이다. Non-Blocking 통신을 지원한다. ※ Non-Blockong : 리액티브 프로그래밍의 핵심적인 특징, 요청 쓰레드가 차단이 되지 않는다. Publisher 타입으로 Mono[0|1], Flux[N] 이 두가지 타입을 제공한다. ※ Mono[0|1] : 0건 또는 1건의 데이터를 emit 할 수 있다. ※ Flux[N] : 여러 건의 데이터를 emit 할 수 있다. 서비스들 간의 ..

JAVA/Spring 2022.11.30

[Spring Web Flux] Reactive programming

1. 리액티브 시스템(Reactive System) 클라이언트 요청에 반응을 잘 하는 시스템 리액티브 시스템의 특징 Means Means는 리액티브 시스템에서 사용하는 커뮤니티 수단을 의미한다. Message Driven : 메세지 기반 통신을 통해 여러 시스템간의 느슨한 결합을 유지한다. Form Form은 메시지 기반 통신을 통해 리액티브 시스템이 어떤 특성을 가지는 구조로 형성되는지 의미한다. Elastic : 시스템으로 들어오는 요청량이 적거나 많거나 상관없이 일정한 응답성을 유지하는 것을 의미한다. Resillient : 시스템의 일부분에 장애가 발생하더라고 응답성을 유지하는 것을 의미한다. Value 리액티브 시스템의 핵심 가지가 무엇인지를 표현하는 영역이다. Responsive : 리액티브 ..

JAVA/Spring 2022.11.30

[인증/보안] OAuth2

1. OAuth2? 특정 어플리케이션에서 사용자의 인증을 직접 처리하는 것이 아니라 사용자 정보를 보유하고 있는 신뢰할만한 써드파티 애플리케이션(Google, Facebook등)에서 사용자의 인증을 대신 처리해 주고 Resource에 대한 자격 증명용 토큰을 발급 후 Client가 해당 토큰을 이용해 써드파티 애플리케이션의 서비스를 이용하게 해주는 방식이다. 또한 제공받은 인증정보를 크리덴셜 저장소에 저장하지 않는다. 2. OAuth2 인증 컴포넌트들의 역할 Resource Owner Resource를 사용하고자 하는 소유자(서비스를 이용하는 사용자) Client Resource Owner를 대신해 보호된 Resource에 액세스하는 애플리케이션 예들들어 내가 A라는 애플리케이션을 통해 Google의 소..

JAVA/인증&보안 2022.11.30

[인증/보안] JWT(JSON Web Token)

1. JWT 토큰기반 인증이라고 하며 기존의 세션기반 인증은 서버나 데이터베이스에 유저 정보를 담는 방식이라 유저가 정보를 요청할 때 마다 세션의 정보값과 일치하는지 확인하는데 이러한 절차를 덜어내기 위해 고안된 인증방법이다. 여기서 토큰은 유저정보를 암호화한 상태로 담을 수 있고, 암호화를 했기 때문에 클라이언트에 담을 수 있다. 세션기반 자격 증명 / 토큰기반 자격 증명방식 2. JWT의 종류 Access Token Refresh Token 클라이언트가 처음 인증을 받을 때, 두 가지의 토큰을 다 받고 실제로 권한을 얻는 데에 사용하는 토큰은 Access Token이다. Refresh Token이 필요한 이유는? Access Token이 탈튀 당했을 때 큰 문제가 발생할 수 있기 때문에 Access ..

JAVA/인증&보안 2022.11.30

[인증/보안] Spring Security

1. Spring Security? Spring MVC 기반 애플리케이션의 인증과 인가 기능을 지원하는 보안 프레임워크 Spring Security로 할 수 있는 보안 강화 기능 다양한 유형의 사용자 인증기능 적용(폼 로그인 인증, 토큰 기반 인증, OAuth 2 기반 인증, LDAP 인증) 애플리케이션 사용자의 역할에 따른 권한 레벨 적용(관리자, 일반사용자 등등) 애플리케이션에서 제공하는 리소스에 대한 접근 제어 민감한 정보에 대한 데이터 암호화 SSL적용 웹 보안 공격 차단 기타 보안을 위한 대부분의 기능 지원 Spring Security에서 사용하는 용어 정리 Principal(주체) : 애플리케이션에서 작업을 수행할 수 있는 사용자, 디바이스, 시스템 등이 될 수 있으며, 일반적으로 인증 프로세..

JAVA/인증&보안 2022.11.30

[인증/보안] 기초

1. HTTPS(Hyper Text Transfer Protocol Secure Socket layer) 기존 HTTP에 S(Secure)를 더해 보안을 한 것 암호화 제 3자가 서버와 클라이언트가 주고받는 정보를 탈취할 수 없도록 하는 것 인증서 서버의 신원을 보증하여 진짜 인증받은 사이트인지 아닌지 확인해주는 것 2. Hashing 알고리즘을 이용해 정보를 관리하는 과정 해싱의 특징 해시 값을 해독할 때에는 많은 시간이 걸려야하지만 해시 값을 만드는 데에는 오래걸리지 않아야 한다. 해시 값들은 최대한 다른 해시 값을 피해야 하며, 모든 값은 고유한 해시 값을 가져야 한다. 문자열에 아주 작은 단위의 변경이 있더라도 반환되는 해시 값은 완전히 다른 값을 가져야 한다. 3. Cookie 서버에서 클라이언..

JAVA/인증&보안 2022.11.30

[SPRING]Spring Framework

1. Spring Framework의 장점? POJO(Plan Old Java Object)기반의 구성 DI(Dependency Injection)지원 AOP(Aspect Oriented Programming, 관점지향 프로그래밍)지원 JAVA언어 사용 개발 생산성 향상 시키고 앨플리케이션의 유지보수를 용이하게 한다. 2. POJO? IoC/DI, AOP, PSA 의 핵심 개념이 있다. Java로 생성하는 순수한 객체지향 프록그래밍이다. POJO 프로그래밍? Java나 Java스펙에 정의된 것 이외에는 다른 기술이나 규약에 얽메이지 않아야 한다. 특정횐경에 종속적이지 않아야 한다. POJO 프로그래밍이 필요한 이유 1. 특정 환경이나 기술에 종속적이지 않으면 재사용 가능하고, 확장 가능한 유연한 코드를 ..

JAVA/Spring 2022.11.30