목록Web (10)
이것저것
JWT 에 대해 설명하기 이전에 간단하게 "토큰 기반 인증"과 "서버 기반 인증" 에 대해 알아보겠다. "서버 기반 인증 시스템이란?" 이전 포스팅에서 언급한 세션 기반의 인증 시스템이다. 서버 측에서 사용자들의 정보를 기억하기 위해 세션을 유지하는데 이는 메모리, 디스크, 데이터베이스 등을 통해 관리한다. 그러다 보니, 클라이언트로부터 요청을 받으면 클라이언트의 상태를 계속에서 유지해놓고 사용한다. (Stateful) 이는 사용자가 증가함에 따라 성능의 문제를 일으킬 수 있으며 확장성이 어렵다는 단점을 지닌다. "토큰 기반 인증 시스템이란?" 이러한 단점을 극복하기 위해서 "토큰 기반 인증 시스템"이 나타났다. 인증받은 사용자에게 토큰을 발급하고, 로그인이 필요한 작업일 경우 헤더에 토큰을 함께 보내 ..
JSON (JavaScript Object Notation) - 브라우저 통신을 위한 속성-값 또는 키-값 쌍으로 이루어진 데이터 포맷이다. 특징 - 사용하기 쉽다. - 적은 메모리 공간을 사용하기 때문에 빠르다. - 매핑을 생성하지 안하도 된다. (Jackson API 가 직렬화할 여러 개체에 대한 기본 매핑을 제공한다.) - 종속성 : JSON 을 사용하기 위해 다른 라이브러리가 필요하지 않다. JSON의 장점 - 모든 브라우저에 대한 지원을 제공한다. - 구문이 간단하고, 직렬화가 가능하다. - 생성, 조작, 읽기, 쓰기가 쉽다. JSON의 단점 - 네임 스페이스 지원이 없다. ( 확장성이 부족) - 형식적인 문법 정의 지원( 문법을 지켜야한다) - 제한된 개발 도구 지원 //JSON 예 {"pet..
1. 정의 "무엇을(a) 어떻게(b) 한다" 로 잘 정의된 API를 REST API라고 한다. a) 무엇을? - HTTP URI 로 정의된 리소스 - 리소스는 처리되는 대상을 의미하며, JSON, XML, 그림, 음악, HTML 등 다양한 형태의 형식을 지원한다. - URI 는 특정 자원의 위치를 나타내는 유일한 주소를 의미하며, 대표적으로 URL 이 있다. b) 어떻게? Method + Payload로 구성 Method - REST API 는 리소스의 타입이 뭐든 간에, 리소스에 대한 행위가 일관되게 정의한다. (=같은 메서드에 의해 다뤄진다.) - Method의 종류는 대표적으로 POST, GET, PUT, DELETE 등이 있다. - DB CRUD 와 매핑해보면 POSTCREATE, GETSELEC..
1. 개요 HTTP는 데이터를 암호화하지 않아, 서버와 클라이언트가 주고 받는 메시지를 그대로 노출하기 때문에, 보안에 취약하다. HTTPS 는 SSL이라는 보안 프로토콜 위에서 동작하는 HTTP SSL (Secure Socket Layer), TLS (Transport Layer Security) → 그냥 같은 의미이다. 비대칭키(공개 키, 비공개 키)를 사용한다. HTTPS는 세 가지 주요 기능을 제공한다. Authentication Data Integrity Encrpytion 2. Hand Shake 과정 그림 1 - SSL Hand Shaking https://imp51.tistory.com/entry/보안-암호 3. 비대칭 키 방식이란? 2개의 키 (공개 키, 비밀 키)로 암호화 & 복호화한다..
1. 사용 이유 HTTP 프로토콜의 특징이자 약점을 보완하기 위해 사용한다. HTTP 프로토콜의 특징으로 Stateless가 있다. Stateless는 커넥션을 끊는 순간, 클라이언트와 서버와의 통신이 끝나고 상태 정보를 유지하지 않는 속성이다. Stateless의 특성 때문에, 상태를 유지해야 할 필요가 있는 경우에는(ex, 로그인 상태 유지) 통신할 때마다 인증 절차를 밟아야 한다. 별도의 인증을 하지 않고 상⁷⅞태 유지를 하기 위해 쿠키와 세션을 사용한다. 2. 쿠키 쿠키는 클라이언트에 저장되는 key, value 형태의 작은 데이터 파일 사용자 인증이 유효한 시간을 명시할 수 있으며, 유효 시간이 정해지면 브라우저가 종료되어도 인증이 유지되는 특징이 있다. 쿠키는 클라이언트의 상태 정보를 로컬에 ..
Web Socket이란? 두 프로그램 간의 메시지를 교환하기 위한 통신 방법 중 하나 W3C와 IETF에 의해 자리잡은 표준 프로토콜 중 하나 W3C : 월드 와이드 웹을 위한 표준을 개발하고 장려하는 조직 IETF : 인터넷의 운영, 관리, 개발에 대해 협의하고 프로토콜과 구조적인 사안들을 분석하는 인터넷 표준화 작업 기구 현재 인터넷 환경(HTML5) 에서 많이 사용된다. Web Socket을 지원하는 브아주어의 경우 (Internet Explorer, Chrome 등) 은 Web Socket 프로토콜을 지원 Web Socket의 특징 양방향 통신 (Full-Duplex) 데이터 송수신을 동시에 처리할 수 있는 통신 방법 클라이언트와 서버가 서로에게 원할 때 데이터를 주고 받을 수 있다. 통상적인 H..
Browser Web Server에서 이동하며 쌍방향으로 통신하고 HTML 문서나 파일을 출력하는 GUI 기반의 응용 SW이다. 웹 브라우저는 대표적인 HTTP 사용자 에이전트의 하나이다. 즉, 브라우저는 웹 서버에 원하는 정보를 요청(Requset)를 하고 응답(Response) 받아 사용자에게 보여준다. 어떻게 요청을 보내나? URL 을 통해! (URL : 네트워크 상에서 자원이 어디 있는지를 알려주기 위한 규약) 요청 흐름 1) URL 해석 : URL 을 입력했을 때 브라우저에서 처음 하는 일은 URL 을 해석해 요청을 만드는 일 http://localhost:8080/index.html http - 프로토콜 localhost - Domain 8080 - 포트 번호 index.html - 파일의 위..
Network Proxy란? 대리(Proxy) : 남을 대신하여 일을 처리함 Proxy Server는 대신 처리하는 서버 클라이언트와 서버간의 중계 서버로 통신을 대리 수행하는 서버 Forward Proxy 일반적으로 이야가하는 Proxy 캐싱 : 클리이언트가 요청한 내용을 캐싱 ex) Client가 서버에게 오늘 날씨가 어떤지에 대한 request를 보낸다 서버는 오늘 비가 올거라는 response를 Client에게 보낸다. Forward Proxy에 오늘 비가 올거라는 response 를 캐싱해둠으로써 다른 Client가 request했을 때 빠르게 응답 가능 전송 시간 절약 불필요한 외부 전송 X 외부 요청 감소 → 네트워크 병목 현상 방지 익명성 : 클라이언트가 보낸 내용을 감춤 Server가 응..