우리 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 |