인증 방법인 Cookie와 Session에 대해 알아보자

2021. 3. 24. 17:13Server

HTTP 프로토콜은 무상태 프로토콜로써 어떠한 상태도 유지하지 않고 비연결성이다. (Stateless + Connectionless)

따라서 로그인을 하면 테이터 요청에 대해 일시적으로 이루어진다.

 

그러면 서버에게 정보를 요청한 사용자가 이전의 사용자와 같은 사용자인지 확인하는 것이 필요하다. 즉 인증이 필요한 것이다.

 

인증이란 무엇일까 ❓

✌ 인증

API 요청에 대해 사용가능한 사용자인지 확인하는 절차로 클라이언트가 주장하는 사용자와 같은 사용자인지 확인한다.

 

✌ 인가

사용자가 특정 자원에 대한 접근 권한이 있는지 권한을 체크하는 것으로 클라이언트가 하고자 하는 작업이 해당 클라이언트에게 허가된 작업인지 확인한다. 따라서 사용자의 권한 레벨에 따라 접근할 수 있는 부분을 제한할 수 있다.

 

 

인증 방법에 대해 비교해보자 ❗

인증 방법 Cookie Session
저장 위치 클라이언트 서버
보안 클라이언트 로컬에 저장되기 때문에 변질되거나 스파이핑 당할 수 있음 쿠키를 이용해서 세션 ID만 저장/구분해서 서버에서 처리하기 때문에 비교적 보안성 좋음
만료 만료 시간을 정할 수 있지만 브라우저를 종료해도 계속해서 정보가 남아 있음 브라우저가 종료되면 만료시간에 상관없이 삭제

 

💡 Cookie

클라이언트 로컬에 저장되는 키와 값이 들어있는 작은 데이터 파일

쿠키는 단순한 키 - 값쌍이고 일정 시간 동안 저장할 수 있고 클라이언트 쪽에 300개까지 저장 가능하다.

서버로부터 쿠키가 오면 웹 부라우저는 쿠키를 저장해 두었다가 요청 시 브라우저가 자동으로 쿠키 같이 보냄

쿠키는 요청과 응답의 헤더에 저장된다.

 

💡 Session

일정 시간 동안 같은 브라우저로부터 들어오는 일련의 요구를 하나의 상태로 보고 그 상태를 유지하는 기술

 

웹 브라우저를 통해 웹 서버에 접속한 이후로 브라우저를 종료할 때까지 유지되는 상태이다.

클라이언트는 발급받은 세션 ID를 쿠키를 사용하여 저장하고 세션은 서버 메모리에 저장된다.

서버가 재시작(메모리가 리셋)되면 세션 데이터는 사라진다.

세션은 서버의 자원을 사용하기에 무분별하게 만들다보면 서버의 메모리가 감당할 수 없어질 수 있고 속도가 느려질 수 있다. 

 

 

 

 

 

'Server' 카테고리의 다른 글

Django, Spring, Node.js의 특징과 장단점  (1) 2021.07.14
JWT에 대해 알아보자 ❗  (0) 2021.01.16
Web Server와 WAS의 정의와 차이  (0) 2021.01.15