백엔드 개발자의 기본 소용
- 인증
- DB 관리
- Request에 따른 Response 처리 (API 개발)
- 배포
세션 기반 인증
모든 유저의 정보와 session 정보를 서버에서 관리
sessionid를 받아 브라우저(쿠키)에 저장
but, DB가 두개 이상이거나 서버가 두개 이상이라면?
토큰 기반 인증
- 서버에 저장하지 않아 자원 절약 가능
- 서버는 SECRET KEY로 암호화된 토큰을 전달
- 사용자는 토큰으로 인증
- 대표적인 방식 JWT
- 클라이언트는 JWT를 브라우저(localStorage)에 저장
- JWT가 만료되면 토큰 refresh
- 사용자의 로그인을 확인해 secret key를 통해 Access token 발급
- 클라이언트에 JWT 전달
- 헤더에 JWT 전달
- JWT 서명 체크
- 클라이언트의 요청(Request)에 대한 응답(Response) 전달
JWT 토큰 종류
- Access token : 요청을 보내기 위한 토큰
- Refresh token : (토큰 만료시) 재발급을 위한 토큰
JWT 토큰 구조
- 헤더 : algorithm & token type
- 페이로드 : data
- 서명 : verify signature (SECRET_KEY를 이용한 암호문)
"exp" : 토큰의 만료 시간
"iat" : 토큰의 발행 시간
"jti" : json token id
settings.py: (공식 문서 참조)
SIMPLE_JWT = {
'ACCESS_TOKEN_LIFETIME': timedelta(hours=2),
'REFRESH_TOKEN_LIFETIME': timedelta(days=7),
}
토큰 인증 방식의 단점
- db를 이용한 사용자 정보 조작이 어려울 수 있음
- 토큰이 커질 수 있음
- 토큰이 거의 모든 요청에 대해 전송될 경우 트래픽에 악영향
'Django' 카테고리의 다른 글
파이썬 장고 실무 심화 5주차_테스트코드 TDD (1) | 2023.04.21 |
---|---|
파이썬 장고 실무 심화 4주차_SerializerMethodField, StringRelatedField (0) | 2023.04.21 |
파이썬 장고 실무 심화 3주차_JWT 토큰 로컬스토리지 (2) | 2023.04.21 |
파이썬 장고 실무 심화 2주차 4_drf-yasg, 클래스형 view(cbv) (3) | 2023.04.21 |
포스트맨(Postman) 사용법 (2) | 2023.04.19 |