인증 방식 종류들이란 무엇이 있을까?

JBoB·2023년 2월 7일
0

🐧Cookie 인증

쿠키는 Key-Value 형식의 문자열 덩어리이다.

클라이언트가 어떠한 웹사이트를 방문한 경우, 그 사이트가 사용하고 있는 서버를 통해 클라이언트의

브라우저에 설치되는 작은 기록 정보 파일 이다.

각 사용자마다 고유 정보 식별이 가능하다.

  1. 클라이언트가 서버에 요청을 보낸다.
  2. 서버가 응답을 작성할 때, 클라이언트 측에 저장하고 싶은 정보를 응답 헤더의 쿠키에 담는다.
  3. 요청을 보낼때마다, 매번 저장된 쿠키를 요청 헤더의 쿠키에 담아 보낸다.
  4. 서버는 쿠키에 담긴 정보를 바탕으로 해당 요청의 클라이언트가 누군지 식별하거나 정보를 바탕으로 정보를 띄운다.
  • 보안에 취약하다.
    • 요청 시 쿠키의 값을 그대로 보내기 때문에 다른 사용자들에게 유출 위험이 크다.
  • 쿠키에는 용량 제한이 있어 많은 정보를 담지 못한다.
  • 브라우저간 공유가 불가능하다.
    • 브라우저마다 쿠키에 대한 지원 형태가 다르기 때문이다.
  • 쿠키의 사이즈가 커질수록 부하가 심해진다.

🐧Session 인증

Session은 비밀번호등 클라이언트의 민감한 인증 정보를 브라우저가 아닌 서버측에 저장하고 관리 한다.

사용자가 인증을 완료하면 서버는 인증 정보를 Session 이라고 한다. 그 별도의 공간에 저장하는데,보통

메모리 혹은 DB에 저장한다.

  1. 유저가 웹사이트에서 로그인하면 세션이 서버 메모리에 저장된다.
  2. 서버에서 브라우저에 쿠키에다가 Session ID를 저장한다.
  3. 쿠키에 정보가 담겨있기 때문에 브라우저는 해당 사이트에 대한 모든 요청에 세션을 쿠키에 담아
    전송한다.
  4. 서버는 브라우저가 보낸 Session ID 와 서버가 관리하고 있는 Session ID 를 비교하여 인증한다.

🐤Session방식의 장단점

장점

  • 정보가 서버에 저장되기 때문에 토큰 기반 인증에 비해 정보 조작 또는 손상 우려가 없다.

단점

  • 서비스의 규모가 커질수록 무리를 줄 수 있다.
  • 서비스의 규모가 커커져서 사용자가 늘어나게 되면 더 많은 트래픽을 처리하기 위한 조치가 필요하다. 보통 서버를 확장하거나, 세션을 분산시키는 등의 조치가 있는데, 세션을 사용할 경우조치가 매우 복잡해진다.

🐧Token 인증

[토큰 기반 인증 시스템이란?]

인증받은 사용자들에게 토큰을 발급하고, 서버에 요청을 할 때 헤더에 토큰을 함께 보내어 유효성 검사를 한다.

더이상 사용자의 인증 정보를 서버나 세션을 유지하지 않고 클라이언트 측에 들어오는 요청만으로 작업을 처리한다.

  1. 사용자가 ID 와 Password 를 입력한다.
  2. 서버 측에 해당 정보를 검증한다.
  3. 정보가 정확하다면 서버가 사용자에게 Signed 토큰을 발급한다.

Signed : 해당 토큰이 서버에서 정상적으로 발급된 토큰임을 증명하는 Signature를 가지고 있다는 것

  1. 클라이언트 측에 받은 토큰을 저장하고, 서버에 요청할 때마다 해당 토큰을 서버에 함께 전달한다. 이떄

HTTP 요청 헤더에 토큰을 포함시킨다.

  1. 서버는 토큰을 검증하고, 요청에 응답한다.

🐤 Token 인증의 장단점

장점

  • JWT는 클라이언트 측에 저장하므로 서버 메모리 혹은 DB에 부담을 주지 않으며, 서버는 완전히 무상태성(stateless)으로 남게 된다.
  • 확장성(Scalability) 을 확보할 수 있다.

단점

  • JWT가 브라우저에 그대로 노출되어있으므로 조작 및 손상의 위험이 크다.
  • 한번 발급된 토큰은 임의로 만료 불가.
    • 토큰이 해커에게 공개되었다면, 만료될때까지 해킹 가능.
profile
간절하고 치열하게 살자

0개의 댓글