[JWT] 토큰 세션 활용 특강

손성수·2023년 4월 21일
0

Django

목록 보기
16/17

Token기반 로그인 Session기반 로그인 차이점

백엔드 개발자의 기본 소양
1. 인증 (회원가입,로그인,로그아웃,회원 관리,회원 탈퇴)
2. DB관리 (ERD 쿼리셋,테이블 연결등)
3. Request에 따른 Request처리 (API개발)
4. 배포


Session 인증

Django_session테이블 Session_key
모든 유저의 정보와 Session정보를 "서버"에서 관리

사용자는 Session정보를 쿠키에 저장하게 된다.

  • 매 요청마다 인증을 위해 데이터베이스 질의를 거쳐야한다.
  • DB,서버가 두개 이상이라면 문제가 발생한다


Token 인증

토큰 정보를 서버 및 DB에 저장하지 않는다(자원 절약)
서버는 (SECRET KEY로 암호화된) 토큰을 전달하고
사용자는 토큰으로 인증을 한다
대표적인 방식(JWT : JSON WEB TOKEN)
SIMPLE JWT : JWT인증을 위한 라이브러리



JWT TOKEN 구조

https://jwt.io/

헤더.페이로드.서명

헤더,페이로드 는 암호화된 정보가 아니다

페이로드를 조작함으로써 더 많은 데이터를 주고 받는다.

Acces : 인증 키
Refersh : acces 재발급

Toekn 인증 단점
데이터베이스를 이용한 사용자 정보 조작이 어렵다
토큰이 커질 수 있음(페이로드 정보 추가)
토큰이 거의 모든요청에 대해 전송될 경우 트래픽에 악영향



Access,Refresh toekn

서버는 이 두종류의 토큰을 동시 발급
클라이언트는 로컬 스토리지에 token을 저장

Access : 요청 및 인증을 위한 토큰
Refresh : 토큰 만료시 재발급을 위한 토큰
만료 시간을 임의로 설정이 가능



세션은 db에 인증 정보를 저장한다.
세션, 토큰 인증방식은 사용자의 브라우저에 인증 정보를 저장한다
토큰은 헤더 페이로드 서명으로 구성되어 있다.

공식문서를 자주 읽자

https://docs.djangoproject.com/ko/4.2/
https://www.django-rest-framework.org/
https://django-rest-framework-simplejwt.readthedocs.io/

profile
더 노력하겠습니다

0개의 댓글

관련 채용 정보