전체 글 (70) 썸네일형 리스트형 REST API REST (Representational State Transfer) REST란, 자원을 이름으로 구분하고 해당 자원의 상태를 주고 받는 모든 것을 의미한다. 조금 더 자세히 말하자면, HTTP URL을 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD를 적용하는 것을 의미한다. REST 구성 요소 REST는 자원, 행위, 표현으로 구성되어 있다. 자원(Resource) : URL 자원은 서버에 있는 것으로, DB 안에 들어가 있는 데이터 하나하나를 의미한다. 클라이언트는 URL를 통해 자원을 지정하고 해당 자원의 상태(정보)에 대한 조작을 서버에 요청한다. 행위(Verb) : HTTP Method 클라이언트는 HT.. CORS (Cross Origin Resource Sharing) CORS(Cross Origin Resource Sharing, 교차 출저 리소스 공유)란 HTTP 헤더를 사용하여 한 출처(origin)에서 실행중인 웹 어플리케이션이 다른 출처(cross-origin)의 자원에 접근할 수 있는 권한을 부여하도록 브라우저에 알려주는 정책이다. 출처(Origin) 출처(Origin)에 대해 알아보기 전 URL 구조에 대해 살펴보자. URL 구조는 아래 그림과 같다. 출처(Origin)란 URL 구조에서 살펴본 프로토콜, 호스트 주소, 포트번호를 합친 것을 말한다. 따라서 이 중 하나라도 다르다면 다른 출처(Cross-Origin)인 것이다. SOP와 CORS SOP(Same Origin Policy, 동일 출처 정책)란 다른 출처로 요청을 보낼 수 없도록 금지하는 브라우.. 프록시 서버와 클라이언트 사이에 중계기로서 대리로 통신을 수행하는 것을 가리켜 프록시, 그 중계 기능을 하는 것을 프록시 서버라고 부른다. 말 그대로 두 PC가 통신할 때 직접 하지않고, 중간에 프록시 서버가 대리로 통신을 하는 것을 말한다. 프록시 서버란 시스템에 방화벽을 가지고 있는 경우 외부와의 통신을 위해 만들어 놓은 서버라는 의미도 있다. 프록시 서버의 위치에 따라 포워드 프록시와 리버스 프록시 2가지로 나뉜다. 포워드 프록시 (Forward Proxy) 위의 그림과 같이, 클라이언트에서 프록시 서버를 거쳐서 서버로 요청한다. 서버에서 받은 IP는 클라이언트의 IP가 아니라, 프록시 서버의 IP이기 때문에 서버는 클라이언트가 누군지 알 수 없다. 인터넷 입장에서 클라이언트가 감춰지는 것이다. 특징 캐싱.. Scale Out & Scale Up 서버를 운영하다 보면 갑작스럽운 이용자의 증가, 사업 확장 등의 이유로 더 많은 서버 용량과 성능이 필요하게 된다. 이러한 경우, 스케일 아웃과 스케일 업을 이용하여 시스템을 확장시킬 수 있다. Scale Out (스케일 아웃) 스케일 아웃은 수평 확장 방식으로, 서버를 여러 대 추가하여 시스템을 확장하는 방법이다. 기존 서버만으로 용량이나 성능의 한계에 도달했을 때, 비슷한 사양의 서버를 추가로 연결해 처리할 수 있는 데이터 용량이 증가할 뿐만 아니라 기존 서버의 부하를 분담해 성능 향상의 효과를 기대할 수 있다. 하지만, 서버가 여러대가 되기에 로드밸런싱이 필수적으로 동반되어야 한다. 스케일 아웃의 경우 하나의 서버가 장애가 발생하더라도 다른 서버에서 대응이 가능하다. 반면, 모든 서버가 동일한 데이.. JWT JWT(Json Web Token)란 Json 포맷을 이용하여 모바일이나 웹의 사용자 인증을 위해 사용하는 암호화된 토큰이다. JWT 구조 JWT는 Header, Payload, Signature의 3부분으로 이루어지며, 각 부분은 .(점)으로 구분한다. Header 토큰의 헤더는 alg와 typ 두가지 정보로 구성된다. alg는 알고리즘 방식을 지정하며, 서명(Signature) 및 토큰 검증에 사용된다. typ는 토큰의 타입을 지정한다. Payload 토큰의 페이로드에는 토큰에 담을 정보를 지니고 있다. Key-Value 형식으로 이루어진 한 쌍의 정보를 Claim이라고 한다. Signature 서명(Signature)은 인코딩하거나 유효성 검증을 할 때 사용하는 고유한 암호화 코드이다. 서명은 인코.. 토큰 기반 인증 토큰 기반 인증 시스템은 세션 기반 인증 시스템의 문제점을 해결하기 위해 사용한다. 토큰 기반 인증 시스템은 인증받은 사용자들에게 토큰을 발급하고, 서버에 요청할 때 HTTP Header에 토큰을 함께 보내 유효성을 검사한다. 이러한 시스템에서는 더 이상 사용자의 인증 정보를 서버나 세션에 유지하지 않고, 클라이언트 측에서 들어오는 요청만으로 작업을 처리한다. 즉, 서버 기반 인증 시스템과 달리 상태를 유지하지 않는 Stateless한 구조를 가진다. 토큰 기반 인증 시스템은 아래와 같은 과정으로 동작한다. 사용자가 아이디와 비밀번호로 로그인을 수행한다. 서버 측에서 해당 정보를 검증한다. 정보가 정확하다면 서버 측에서 사용자에게 토큰을 발급한다. 클라이언트 측에서 전달받은 토큰을 저장해 두고, 서버에 .. 세션 (Session) 세션이란 일정 시간 동안 같은 사용자로부터 들어오는 일련의 요구를 하나의 상태로 보고 그 상태를 일정하게 유지시키는 기술이다. 즉, 방문자가 웹 서버에 접속해있는 상태를 하나의 단위로 보고 그것을 세션이라고 한다. 세션은 중요한 정보를 클라이언트에 저장하는 쿠키와는 다르게 서버에 저장하여 관리하기 때문에 사용자 정보가 노출되지 않는다. 서버에서는 클라이언트를 구별하기 위해 각각의 세션 ID를 클라이언트마다 부여하게 되며, 클라이언트가 종료되기 전까지 유지한다. 세션(서버) 기반 인증 쿠키만을 사용하여 인증 과정을 수행할 경우 클라이언트에서 사용자 정보를 관리하여 보안에 매우 취약하다는 단점이 있다. 따라서, 로그인과 같이 보안상 중요한 작업을 수행할 때는 세션에 사용자 정보를 저장해 두고 서비스를 제공할.. 쿠키 (Cookie) 쿠키의 등장 배경 HTTP 프로토콜은 비연결성(Connectionless)과 무상태(Stateless)를 특성으로 가진다고 알아봤다. 따라서, 서버는 클라이언트가 누구인지 매번 확인해야하는데 이 특성을 보완하기 위해 쿠키가 등장하게 되었다. 쿠키는 무상태 프로토콜에서 상태 기반 정보를 기억할 수 있는 수단이다. 쿠키란 쿠키는 서버가 사용자의 웹 브라우저에 전송하는 작은 데이터 조각이다. 브라우저는 그 데이터 조각을 저장해 놓았다가, 동일한 서버에 재 요청 시 저장된 데이터를 함께 전송한다. 쿠키는 Key와 Value로 이루어져 있으며 만료기간, 도메인, 경로 등의 정보를 가지고 있다. 쿠키는 주로 3가지 목적을 위해 사용된다. 세션 관리 : 서버에 저장해야 할 로그인, 장바구니, 게임 스코어 등의 정보를.. 이전 1 ··· 4 5 6 7 8 9 다음