Django

[DjangoRestFramework] JWT 인증

miin1635@ 2023. 11. 28. 15:51

우리 Dsearch 제품 개발 중 로그인과 세션관리에 대해서 상의를 하던 도중, JWT 인증을 채택하자는 의견이 나왔다. 

그래서 JWT에 대해 공부를 하게되었는데, 그 내용에 대해서 리뷰를 하고자 한다. 

 

 

1. JWT 인증이란? : Json Web Token의 약어로, payload json데이터를 HMAC SHA 256 알고리즘을 이용하여 암호화 한 후, 토큰 방식 저장한다. 또, 이 토큰이 올바른 토큰인지, 기한이 만료된 토큰인지를 확인하기 위해서 jwt.decode 함수를 통하여 복호화 한다.  JWT는 다른 세션관리 방식에서 사용하는 DB를 사용하지 않으므로, 빠르고 가볍다.  프로세스는 다음과 같다. 

 

정방향 : 로그인 --> payload에 로그인 정보가 담김 --> jwt.encoding으로 암호화 --> 토큰 저장

역방향 : 토큰을 jwt.decoding  --> 정상 토큰 : 데이터 값 반환 혹은 사용자 설정 처리 

                                                --> 비정상 토큰 : 예외 발생 

 

jwt 토큰을 인증 방식으로 사용할 때, 보통은 Http.request의 헤더에 주로 싣어서 보낸다.

 

2. JWT 단점 : 쿠키를 사용하는 방식이 아니라서 만약 액세스 토큰이 탈취 당한다면, 그 액세스 토큰의 기한이 만료될 때 까지 탈취자는 마음대로 사용할 수 있다. 이러한 문제점을 해결하기 위해 Refresh 토큰을 사용하는 방법이 있다. 

 

 

 

 

 

 

 

'Django' 카테고리의 다른 글

REST API, (GET,PUT,POST,DELETE)의 정리  (0) 2023.08.30
Django 가장 중요한 부분 (onChange 함수)  (0) 2023.08.21
react 1일차  (0) 2023.08.17
장고 스터디 확장 (WSGI)  (0) 2023.08.16
Swagger 설치법  (0) 2023.08.14