인증방식 (쿠키,세션,토큰)

heyhey·2022년 12월 19일
0

network

목록 보기
5/15

인증 방식의 종류

서버가 클라이언트 인증을 확인하는 방법은 크게 3가지가 있다.
1. 쿠키
2. 세션
3. 토큰

쿠키

Key - value 형식으로 이루어져 클라이언트가 어떤 웹사이트를 방문할 경우, 그 사이트가 사용하고 있는 서버를 통해 클라이언트 브라우저에 설치되는 기록 정보 파일이다.

각 사용자마다의 브라우저에 정보를 저장해 고유 정보 식별이 가능하다.

쿠키 인증 방식

  1. 브라우저가 서버에 요청을 보낸다.
  2. 서버는 클라이언트의 요청에 대한 응답을 작성할 때, 클라이언트 측에 저장하고 싶은 정보를 응답 헤더의 cookie에 담을 수 있다.
  3. 이후 해당 클라이언트는 요청을 보낼 때마다 매번 저장된 쿠키를 헤더에 담아 보낸다. 그 쿠키를 이용해 클라이언트가 누군지 식별한다 => 추천 알고리즘

쿠키 단점

  1. 보안에 취약하다
  • 쿠키의 값을 그대로 보내기 때문에 유출/조작될 위험이 있다.
  1. 용량 제한이 있다.
  2. 웹 브라우저마다 쿠키의 지원형태가 달라 브라우저간 공유가 불가능하다.
  3. 네트워크의 부하가 심해진다.

세션

클라이언트의 정보를 서버측에 저장하고 관리한다. 서버의 메모리나, DB에 저장하기도 한다. 민감한 정보들은 보내지 않고, 서버에서 관리할 수 있다.

세션은 Key에 해당하는 ID와 이에 대응하는 Value로 이루어져 있다.
value에는 세션 생성 시간, 마지막 접근 시간 및 user가 저장한 속성등이 map 형태(Object) 로 저장된다.

세션 인증 방식

  1. 유저가 웹사이트에 로그인하면 세션이 서버에 저장된다. 이때, 세션을 식별하기 위한 Session ID를 기준으로 정보를 저장하게 된다.
  2. 서버에서 브라우저에 쿠키에다 Session Id를 저장한다.
  3. 쿠키에 정보가 담겨있기 때문에 브라우저는 해당 사이트에 모든 Request에 SessionId를 쿠키에 담아 전송한다.
  4. 서버는 클라이언트가 보낸 Session Id와 서버 메모리로 관리하고 있는 Session Id를 비교해 인증을 수행한다.

세션 단점

  1. 세션 ID 자체는 유의미한 정보는 아니다. 하지만 ID를 탈취당하면 클라이언트인 척 위장할 수 있다.
  2. 서버에서 세션 저장소를 사용하므로 요청이 많아지면 부하가 심해진다.


토큰

클라이언트가 서버에 접속을 하면 서버에서 해당 클라이언트에게 인증되었다는 의미로 토큰을 부여한다. 이 토큰을 유일하며, 모든 요청의 헤더에 토큰을 실어서 보낸다. 서버에서는 이 토큰을 서버에서 제공한 토큰과 일치하는지 체크하여 처리하게 된다.

기존의 세션기반 인증은 파일이나 DB에 세션정보를 가지고 있어야 해서 조회할 때 많은 오버헤드가 발생한다.
토큰은 클라이언트에 저장되기 때문에 서버의 부담을 덜 수 있다. 토큰 자체에 데이터가 들어있어 클라이언트에서 받아 위조되었는지 판별만 하면 된다.

쿠키와 세션은 앱에 존재하지 않기 때문에 앱에서는 토큰을 사용해야한다

토큰의 인증 방식

  1. 클라이언트가 로그인을 시도한다
  2. 서버에서 토큰을 발급한다.
  3. 클라이언트는 토큰을 저장했다가 요청할때마다 헤더에 담아 전달한다.
  4. 서버는 토큰을 검증하고 응답한다. DB를 조회하지 않아도 누가 요청했는지 알 수 있다.

토큰의 단점

  1. 토큰 자체의 데이터가 길어, 인증 요청이 많아질수록 네트워크 부하가 생긴다.
  2. Payload 자체는 암호화되지 않아 중요한 정보는 담을 수 없다.
  3. 토큰을 탈취당하면 대처가 어렵다. (사용시간 제한 등의 방법..)

참고 : https://inpa.tistory.com/

profile
주경야독

0개의 댓글