티스토리 뷰
1. JWT(JSON Wen Token)
- 인터넷 표준 인증 방식
- 자바스크립트의 JSON 자료구조를 가지며, Web Token으로 사용하는 것으로 주로 로그인 인증에 사용한다.
1-1. JWT 사용 이유
- 장점1: 서버의 확장성이 높고 대량의 트래픽이 발생해도 대처 가능하다.
- http는 기본적으로 state-less를 지향하므로 서버가 클라이언트 상태를 가지고 있지 않는다.
- 장점2: JWT가 유효하지 않을 때 서버에 바로 인증 에러를 일으켜 불필요한 트래픽이 발생하지 않도록 한다.
- 단점: 비교적 많은 양의 데이터가 전송되므로 네트워크 성능저하가 있을 수 있다. 데이터 노출로 인한 보안 문제.
1-2. JWT의 구성
- 헤더.페이로드.시그니처
- 헤더: 토큰 타입, 암호화 알고리즘 명시
- 페이로드: JWT에 넣을 데이터, JWT 발급/만료일 등을 명시
- 시그니처: 헤더, 페이로드가 변조되었는지를 확인
2. 토큰과 세션
- 토큰은 토큰이 보안, 유저 데이터를 관리하지만 세션은 서버에 보안, 유저 데이터를 관리한다.
인증 방식 | 토큰 | 세션 |
보안성 | 우세 | |
외부 노출 | 우세 | |
성능 | 우세 | |
비용 | 우세 | |
서버 부하 | 우세 | |
확장성 | 우세 |
=> 세션이 보안성, 성능에서 좋지만 비용적인 측면에서 JWT가 좋아서 많이 사용한다. 프로젝트 규모에 맞춰 사용할 것.