Cookie와 Session이 등장한 배경
HTTP프로토콜은 클라이언트에 대한 요청만 응답하고 연결을 끊어버리는 비연결성 프로토콜이다. 이런 Stateless 특징을 해결하기 위해 쿠키와 세션이 등장했다.
세션과 쿠키의 차이점은 사용자의 상태 정보가 어디에 저장되어 있느냐이다.
Cookie란?
쿠키란 클라이언트의 로컬에 저장되는 키-값이 들어있는 작은 데이터 파일을 의미한다. 유효 시간을 지정할 수 있으며, 쿠키의 유효 시간이 남은 경우 브라우저가 종료되도 스토리지에 남아있다. 팝업, 자동 로그인, 장바구니 등의 기능을 구현할 때 쿠키를 사용한다.
쿠키 동작 방식
- 클라이언트가 페이지를 요청
- 서버에서 쿠키를 생성
- HTTP 헤더에 쿠키를 포함 시켜 응답
- 브라우저에서 쿠키를 저장
- 쿠키가 존재하면 요청을 할 경우 HTTP 헤더에 쿠키를 함께 보내서 요청
Session이란?
세션은 인증과정에서 보통 쿠키를 기반으로 하고 있지만, 클라이언트의 상태 정보를 서버 메모리에 저장하는 기술을 의미한다. 서버 메모리에서 관리하기 때문에 사용자 수가 많을 경우 성능 저하의 요인이 된다.
세션 동작 방식
- 클라이언트가 서버에 접속 시 세션 ID를 발급
- 클라이언트는 세션 ID를 쿠키를 사용해 저장 (쿠키 이름 : JSESSIONID)
- 클라이언트가 서버에 다시 접속 시 이 쿠키를 이용해서 세션 ID값을 서버에 전달
Token기반 인증 방식이란?
토큰 기반 인증방식이란 인증에 필요한 정보들을 암호화시킨 토큰을 통해서 인증을 하는 방식을 의미한다. 세션/쿠키와 달리 별도의 저장소 관리가 필요 없고, 검증만 하면 된다는 장점을 가진다.
토큰 인증 동작 방식
- 클라이언트가 로그인
- 서버는 사용자를 확인하고 Access Token을 발급해 사용자에게 응답
- 사용자는 Access Token을 받아 쿠키와 같은 곳에 저장한 후, 인증이 필요한 요청마다 토큰을 헤더에 실어 보냄
- 서버는 해당 토큰을 검증하고 적절한 토큰일 경우 사용자에 알맞는 데이터를 응답
JWT란?
Json Web Token의 줄임말로써 Json 포맷을 통해 사용자에 대한 속성을 저장하는 Web Token을 의미한다. 토큰 기반 인증을 위해 토큰 생성이 가장 간단하면서도 만료 기간과 같은 다양한 기능 명세가 존재한다.
References
https://imbf.github.io/interview/2020/12/16/NAVER-Interview-Preparation-8.html
'CS > 네트워크' 카테고리의 다른 글
[네트워크] DNS란? (0) | 2021.08.31 |
---|---|
[네트워크] REST API란? (0) | 2021.08.31 |
[네트워크] HTTP vs HTTPS (0) | 2021.08.30 |
[네트워크] HTTP 메서드 (0) | 2021.08.30 |
[네트워크] TCP vs UDP (0) | 2021.08.30 |
댓글