최대 1 분 소요

개요

전통적인 인증 시스템

  1. 클라이언트 단에서 authenticate 요청을 위해 username과 password를 서버에 전달한다.
  2. 서버 단에서 인증 절차를 거친 뒤에 200 OK 라면 세션을 발급해 쿠키에 sessionId를 담아 응답한다.
  3. 클라이언트 단에서 이후 요청 시에 2번에서 발급된 세션과 쿠키를 이용해 서버에 요청한다.
  4. 서버 단에서 클라이언트가 보낸 세션 정보를 확인한 뒤, db에서 발급된게 맞다면, 요청한 정보를 담아 응답한다.
  • 문제점
    - 세션과 쿠키는 모바일 애플리케이션에서 유효하게 사용할 수 없음 (꽁유 불가)
    - 렌더링된 HTML 페이지가 반환되지만, 모바일 애플리케이션에서는 JSON(or XML)과 같은 포멧 필요

토큰 기반 인증 시스템

  1. 클라이언트 단에서 authenticate 요청을 위해 username과 password를 서버에 전달한다.
  2. 서버 단에서 인증 절차를 거친 뒤에 200 OK 라면 Bearer Token을 발급해 token 이라는 헤더값에 담아 응답한다.
  3. 웹 브라우저든 모바일 디바이스든, 토큰을 받은 클라이언트는 Authorization에 토큰을 담아 추가적인 서비스를 요청할 수 있다.
  4. 서버 단에서 클라이언트가 보낸 토큰 정보를 확인한 뒤 요청한 정보를 담아 응답한다.

JWT

https://jwt.io/

  • 인증 헤더 내에서 사용되는 토큰 포맷
  • 두 개의 시스템끼리 안전한 방법으로 통신 가능

JWT의 장점

  • 클라이언트 독립적인 서비스 (stateless)
  • CDN
  • No Cookie-Session (No CSRF, 사이트간 요청 위조)
  • 지속적인 토큰 저장


💛 개인 공부 기록용 블로그입니다. 👻

맨 위로 이동하기