- JWT (Json Web Token)
- 데이터가 JSON으로 이루어져 있는 토큰
세션 기반 인증 vs 토큰 기반 인증
- 사용자의 로그인 상태를 서버에서 처리
- 세션 기반 인증
- 토큰 기반 인증
세션 기반 인증
- 서버가 사용자의 로그인 상태를 기억
- 사용자 > 로그인 > 서버 > 정보저장 > 세션 id 발급 > 요청 > 세션 조회 > 응답
- 세션 id는 브라우저의 쿠키에 저장
- 세션 저장소: 메모리, 디스크, 데이터베이스
- 단점
- 서버를 확장하기가 어려움
- 서버의 인스턴스가 여러개가 되면 세션 공유가 필요해 별도의 데이터베이스를 만들어야 한다
- 서버를 확장하기가 어려움
토큰 기반 인증
- 로그인 이후 서버가 만들어주는 문자열
- 문자열에는 로그인 정보가 들어있고, 해당 정보가 서버에서 발급되었음을 증명하는 서명
- 사용자 > 로그인 > 서버 > 토큰 발급 > 토큰과 함께 요청 > 토큰 유효성 검사 > 응답
- 서명 데이터는 해싱 알고리즘을 통해 생성
- HMAC SHA256, RSA, SHA256 알고리즘
- 서버에서 만들어주기때문에 무결성이 보장
- 정보가 변경되거나 위조되지 않음
- API 요청할때마다 토큰을 함께 요청
- 장점
- 로그인 정보를 기억하기 위해 사용하는 리소스가 적다는 것
- 확장성이 높다. (인스턴스끼리 로그인 상태를 공유할 필요가 없음)
'Web 개발 > Node' 카테고리의 다른 글
[Node] 회원 인증 시스템 도입 및 포스트 검색 (0) | 2020.02.16 |
---|---|
[Node] JWT를 이용한 로그인, 로그아웃, 상태체크 RESTApi 토큰기반인증 구현 access_token (+소스코드) (1) | 2020.02.16 |
[Node] 페이지네이션 (Pagination) 구현 & Body 내용 제한 소스코드 예제 (0) | 2020.02.16 |
[Node] MongoDB ObjectId 검증, Request Body 검증 (joi, mongoose) (0) | 2020.02.16 |
[Node] MongoDB REST API 작성하는 방법 (HTTP GET, POST, PATCH, DELETE) (0) | 2020.02.16 |