[E-commerce App] Users Microservice - JWT 처리 과정
개요
전통적인 인증 시스템
- 클라이언트 단에서 authenticate 요청을 위해 username과 password를 서버에 전달한다.
- 서버 단에서 인증 절차를 거친 뒤에 200 OK 라면 세션을 발급해 쿠키에 sessionId를 담아 응답한다.
- 클라이언트 단에서 이후 요청 시에 2번에서 발급된 세션과 쿠키를 이용해 서버에 요청한다.
- 서버 단에서 클라이언트가 보낸 세션 정보를 확인한 뒤, db에서 발급된게 맞다면, 요청한 정보를 담아 응답한다.
- 문제점
- 세션과 쿠키는 모바일 애플리케이션에서 유효하게 사용할 수 없음 (꽁유 불가)
- 렌더링된 HTML 페이지가 반환되지만, 모바일 애플리케이션에서는 JSON(or XML)과 같은 포멧 필요
토큰 기반 인증 시스템
- 클라이언트 단에서 authenticate 요청을 위해 username과 password를 서버에 전달한다.
- 서버 단에서 인증 절차를 거친 뒤에 200 OK 라면 Bearer Token을 발급해 token 이라는 헤더값에 담아 응답한다.
- 웹 브라우저든 모바일 디바이스든, 토큰을 받은 클라이언트는 Authorization에 토큰을 담아 추가적인 서비스를 요청할 수 있다.
- 서버 단에서 클라이언트가 보낸 토큰 정보를 확인한 뒤 요청한 정보를 담아 응답한다.
JWT
- 인증 헤더 내에서 사용되는 토큰 포맷
- 두 개의 시스템끼리 안전한 방법으로 통신 가능
JWT의 장점
- 클라이언트 독립적인 서비스 (stateless)
- CDN
- No Cookie-Session (No CSRF, 사이트간 요청 위조)
- 지속적인 토큰 저장
💛 개인 공부 기록용 블로그입니다. 👻