클라이언트의 인증 방식

보통 서버가 클라이언트의 인증을 확인하는 방식은 대표적으로 쿠키, 세션, 토큰 방식이 있다.

1. Cookie 인증 방식

  1. 브라우저(클라이언트)가 서버에 요청을 보낸다.
  2. 서버는 클라이언트의 요청에 대한 응답을 작성할 때, 클라이언트 측에 저장하고 싶은 정보를 응답 헤더의 Set-Cookie 에 담는다.
  3. 이후 클라이언트는 요청을 보낼 때마다, 매번 저장된 쿠키를 요청 헤더의 Cookie 에 담아 보낸다
  4. 서버는 쿠키에 담긴 정보를 바탕으로 클라이언트를 식별한다.

Cookie 인증 방식의 단점

  1. 가장 큰 단점은 쿠키의 값을 그대로 보내기에 보안에 취약
  2. 용량 제한이 4KB 이다. 많은 정보를 담을 수 없다.
  3. 웹 브라우저 또는 클라이언트의 디바이스에 따라 쿠키에 대한 지원 형태가 다르기 때문에 브라우저간 공유가 불가능 하고 처리가 상이함.

2. Session 인증 방식

  1. 유저가 웹사이트에 로그인하면 세션이 서버 메모리( 혹은 데이터 베이스) 상에 저장된다.
  2. 서버에서 브라우저에 쿠키에 Session Id 를 저장한다.
  3. 쿠키에 정보가 담겨있기 때문에 브라우저는 해당 사이트에 대한 모든 Request 에 Session Id 를 쿠키에 담아 전송한다.
  4. 서버는 클라이언트가 보낸 Session Id 를 비교하여 인증을 수행한다.

Session 인증 방식의 단점

  1. Cookie 인증방식과 마찬가지로 쿠키를 사용하여 Session 에 대한 정보를 보내기 때문에 클라이언트의 디바이스 지원방식에 따라 구현을 따로 해야한다. (모바일 지원 하지 않음)
  2. 서버에 세션저장소를 사용하므로 요청이 많아지면 서버에 부하가 심해진다.

3. Token 인증 방식