토큰에 대해 알아봅시다.
세션
: 인증에 대한 정보를 서버가 저장토큰
: 인증에 대한 정보를 사용자가 저장😜 추가 지식
- 인증과 인가 차이
- 인증 : 처음 요청 시 클라이언트가 사용자가 맞는지 확인
- 인가 : 확인된 사용자가 인증된 상태에서 사용할 수 있는 접근들을 허용
JWT
라 하는데 JSON
형식으로 암호화된 웹 토큰😜 추가 지식
- claim : payload에 들어갈 정보
- 세션과 토큰 비교
- 세션보다 토큰이 사이즈가 큼
- 세션보다 토큰이 안정성이 떨어짐
(세션은 서버에서 관리, 토큰은 사용자가 관리)- 세션보다 토큰이 확장성이 좋음
- 세션은 다중 접속시 과부화 위험
- 과부화를 줄이기 위해 서버를 늘릴 경우 사용이 복잡
😜 추가 지식
- 세션 인증과 토큰 인증의 장단점
- 세션
- 장점
- 서버에 저장하기 때문에 관리가 매우 편하고 효율적
- 구현이 명확하며 실제 서버에서 로그인 상태를 확인하기 유용
- 단점
- 서버에서 클라이언트의 상태를 모두 유지하고 있어야 하므로, 클라이언트 수가 많으면 DB의 과부하
- 멀티 디바이스 환경(모바일, 공동 사용 등)에서 로그인 시 중복 로그인 처리가 되지 않는 등의 신경 써야 할 부분들이 발생
- 사용자가 많아지는 경우 로드 밸런싱을 사용한 서버 확장을 이용해야 하는데 이 때 세션의 관리가 어려워짐 (확장성이 낮음)
- 토큰
- 장점
- 클라이언트에 토큰이 저장되어 있기 때문에 서버의 메모리에 부담이 되지 않으며 Scale에 있어 대비책이 필요 없음
- 멀티 디바이스 환경에 대한 부담이 없음
- 단점
- 암호화가 쉽게 풀릴 가능성이 높음
(암호화가 풀리더라도 토큰을 사용할 수 없도록 만료기간을 짧게 설정)- payload 자체는 암호화 되지 않고 base64 URL로 인코딩한 데이터이므로, 중간에 payload를 탈취하면 디코딩을 통해 데이터를 볼 수 있음
=> JWE를 통해 암호화 하거나, payload에 중요한 데이터를 넣지 않아야 함
- Base64 URL
8비트 이진 데이터 (ex 실행파일, ZIP 파일 등)를 문자 코드에 영향을 받지 않는 공통 ASCII 영역의 문자들로만 이루어진 일련의 문자열로 바꾸는 인코딩 방식
- 로드 밸런싱(Load Balancing)
서버가 처리해야 할 업무 혹은 요청(Load)을 여러 대의 서버로 나누어(Balancing)처리하는 것
해당 사이트의 내용을 참고로 작성했습니다. 추후에 더 알게 되는 내용들을 추가하겠습니다.
JWT(JSON Web Token)의 개념부터 구현까지 알아보기 - 정상우
JWT 토큰이란??
[인증/인가]Session(세션)과 Token(토큰)(JWT)의 차이점
세션 기반 인증과 토큰 기반 인증 (feat. 인증과 인가)
세션 인증 방식 vs 토큰 인증 방식
세션 인증 방식 VS Token 인증방식(인증과 인가)
쿠키, 세션(cookie, session)과 토큰 (token, JWT)의 차이점
Session 기반 인증과 Token 기반 인증
Cookie, Session, Token 의 차이점