본문 바로가기

FE/Server

FE/Server OAuth OAuth란 웹이나 앱에서 흔히 찾아볼 수 있는 소셜 로그인 인증 방식은 OAuth 2.0라는 기술을 바탕으로 구현된다. OAuth : Open standard for Authorization; Open Authorization 전통적으로 직접 작성한 서버에서 인증을 처리해 주는 것과는 달리, OAuth는 인증을 중개해 주는 메커니즘이다. 직접 서버에서 인증과 관련된 로직을 처리할 필요 없이 인증을 중개하는 외부 서버를 이용한다. 토큰을 기반으로 내 서버가 아닌 외부 인증 중개서버로 사용자 인증 처리를 맡길 수 있다. 보안된 리소스에 액세스하기 위해 클라이언트에게 권한을 제공하는 프로세스를 단순화하는 프로토콜 즉, 이미 사용자 정보를 가지고 있는 웹 서비스(Naver, Kakao, Google 등)에서 ..
FE/Server 해싱(Hashing)과 토큰(Token) 인증 방식 * 세션 인증 방식을 보완한 토큰 인증 방식 * 대표적인 토큰 인증 방식 JWT - JWT가 사용자의 정보를 암호화하여 토큰을 저장하는 방법 해싱 (Hashing) 해싱은 가장 많이 쓰이는 암호화 방식 중에 하나이다. 복호화가 가능한 다른 암호화 방식들과 달리, 해싱은 암호화만 가능하다. 해싱은 해시 함수(Hash Function)를 사용하여 암호화를 진행하는데, 해시 함수는 다음과 같은 특징을 가진다. 항상 같은 길이의 문자열을 리턴한다. 서로 다른 문자열에 동일한 해시 함수를 사용하면 반드시 다른 결과값이 나온다. 동일한 문자열에 동일한 해시 함수를 사용하면 항상 같은 결과값이 나온다. 아래 표는 대표적인 해시 함수중 하나인 SHA1에 특정 입력 값을 넣었을 때 어떤 결과가 리턴되는지 보여주는 예시이..
FE/Server 세션기반 인증 (Session-based Authentication) 로그인 원리 로그인을 통해 사용자의 인증 정보를 저장하고, 그 후 인증된 사용자가 어떤 식으로 웹사이트를 이용하는지 간단하게 알아보자. 사용자가 웹사이트에서 아이디 및 비밀번호를 이용해서 로그인을 시도하면(아래 그림에서 1번) 사용자가 만일 정확한 아이디와 비밀번호를 입력했다면, 서버는 인증(Authentication)에 성공했다고 판단할 것이다. 다음번에 인증을 필요로 하는 작업(e.g. 그림에서와 같이, 장바구니에 물품 추가)을 요청할 경우에 한번 더 로그인 과정을 거쳐야 할까? 아니 다. 서버가 "해당 유저는 인증에 성공했음"을 알고 있다면, 유저가 매번 로그인할 필요가 없다. 인증에 따라 리소스의 접근 권한(Authorization)이 달라진다. 이때 클라이언트와 서버에 각각 필요한 것은 다음과..
FE/Server 쿠키(Cookie)의 개념과 작동원리 Naver 등 특정사이트에 로그인하는 것은 본질적으로 “나는 해당 사이트에게 내 정보를 줄 수 있을 정도로 믿고 있다.”와 같다. 내 아이디, 비밀번호뿐만 아니라 심지어는 나의 주소, 카드번호, 계좌의 비밀번호 등을 알려주기도 한다. 사용자는 어떻게 이런 특정 웹사이트들을 신뢰할 수 있을까? 아니, 웹사이트들은 사용자에게 신뢰를 주기 위해 어떻게 정보를 안전하게 보호하고 있을까? Cookie의 개념 쿠키가 쓰이는 상황 의류 쇼핑몰 사이트에서 다양한 상품들을 장바구니에 넣을 때 HTTP 요청은 stateless한데, 어떻게 다른 페이지를 탐색하고 돌아와도 장바구니가 유지가 되는 것이지? 즉, 어떻게 유저의 정보가 유지가 되는 것이지? 어떤 사이트를 들어갔을 때마다 뜨는 팝업에 '오늘 보지 않기'를 체크했을..
FE/Server mkcert를 이용한 로컬에서 HTTPS 서버 만들기 로컬 환경(localhost)에서 인증서를 생성하고, 인증서를 이용해 HTTPS 서버 만들기 HTTPS 사설 인증서 발급 및 서버 구현 현업에서는 HTTPS 프로토콜을 사용하는 것이 일반적이고, 특히 HTTPS 프로토콜은 인증의 중요한 부분을 차지하기 때문에, 이번 포스팅에서는 직접 HTTPS 서버를 만들어 보겠다. 설치 mkcert라는 프로그램을 이용해서 로컬 환경(내 컴퓨터)에서 신뢰할 수 있는 인증서를 만들 수 있다. Ubuntu 우분투의 경우 다음 명령어를 이용해 설치한다. $ sudo apt install libnss3-tools $ wget -O mkcert https://github.com/FiloSottile/mkcert/releases/download/v1.4.3/mkcert-v1.4.3..
FE/Server [Network] Airline 서버 구현 (2) : 서버 개발하기 * 이전 글 : StatesAirline Server API document * Airline Server 개발하기 - Airport API - Book API - Flight API 초기세팅 폴더 구조 1. statesairline statesairline/app.js 는 서비스에 필요한 미들웨어와 웹 서버를 실행하는 코드가 작성되어 있다. 2. router statesairline/router/ 안에는 airport API, book API, flight API 요청을 수행하는 라우터가 작성되어 있다. 작성된 라우터 내용을 통해 API 요청을 받을 수 있다. 3. controller statesairline/controller/ 안에는 정의된 API 요청을 수행하는 코드가 작성되어 있다. 4. rep..
FE/Server [Network] Airline 서버 구현 (1) : Airline Server API document * Express 프레임워크를 이용해 API 서버를 만들고, 로컬 호스트와 연결하기 * 클라이언트의 요청에 따라 항공편과 예약 데이터를 조회, 생성, 수정, 그리고 삭제하는 기능을 수행하는 서버 개발하기 - Express 프로젝트에서 사용하는 폴더 구조를 이해하기 - Express를 활용하여 API 요청 처리하기 - router, controller 활용하기 - Airport API, Flight API, Book API 에서 정의한 API 요청을 수행하는 코드를 작성하기 * 다음 글 : Airline 서버 구현 (2) : 서버 개발하기 문제를 해결하기 전에, 문제가 무엇인지 파악하는 것이 우선이 돼야 한다. 생산적인 고민을 통해 문제를 정의하고, 차근차근 해결할 수 있어야 한다. 소프트웨어 엔지니어로서..
FE/Server [Network] Express로 간단한 웹 서버 만들어보기 (라우터) MERN stack은 JavaScript 생태계에서 인기 있는 프레임워크인 MongoDB, Express, React, Node.js를 지칭하는 말이다. 이 중에서 Express는 (1) Node.js 환경에서 (2) 웹 서버, 또는 API 서버를 제작하기 위해 사용되는 인기 있는 프레임워크이다. Express로 구현한 서버가 Node.js HTTP 모듈로 작성한 서버와 다른 점은 다음과 같다. 라우터를 제공한다. (해당 포스팅) 미들웨어를 추가할 수 있다. (다음 포스팅) 이번 포스팅에서는 Express 공식 문서를 따라 간단한 웹 서버를 만들어 보겠다. Express로 간단한 웹 서버 만들어보기 1. Express 설치 나의 경우, Express 공식 문서의 시작하기 - 설치 를 참고해서 아예 연습폴..
FE/Server [Network] HTTP 모듈을 사용한 서버 다뤄보기 HTTP 모듈을 사용한 서버 다뤄보기 브라우저에는 서버에 요청을 보내기 위해 fetch 같은 HTTP 요청을 보내는 도구가 기본적으로 내장되어 있다. 서버는 클라이언트(브라우저)의 HTTP 요청에 맞게 응답을 보낼 수 있도록 코드를 작성해야 한다. Node.js는 HTTP 요청을 보내거나, 응답을 받을 수 있는 도구들을 제공한다. HTTP 요청을 처리하고 응답을 보내 주는 프로그램을 웹 서버(Web Server)라고 부른다. Node.js의 http 모듈을 이용해 웹 서버를 만들 수 있다. Node.js에서 파일을 읽거나 쓰기 위해 fs 모듈을 사용하듯이, HTTP 요청과 응답을 다루기 위해 HTTP 모듈을 사용한다. 이 HTTP 모듈 공식 문서중 무엇부터 봐야 할까? HTTP 모듈 공식 문서에 들어가..
⬆︎

728x90