요즘, django를 이용하여 기초적인 backend공부를 진행하고 있다. Login 기능 구현 중
User 인증 로직을 작성을 위해 session기방 인증을 구글링하다가 요 JWT란 놈을 알게됬다. 요즘 학교에서 배우는 정보보안과 밀접할 뿐더러, 꽤 흥미가 동하길래 velog에 직접 학습글을 남겨본다.
Sam이 netflix에서 가장 재밌어보이는 영화를 찾기 위해 어벤져스 , 아쿠아맨 , 셜록홈즈 등의 영화
미리보기를 클릭할 때마다 Sam에게 netflix의 회원이 맞는지 확인하기 위해 id와 pw를 작성하여
request하라고 한다면 Sam은 아마 화가 머리 끝까지 나서 바로 netflix를 해지하고 티빙으로 갈아탈 것이 분명하다. Stateless한 http통신의 비극이랄까...
비단, Sam의 불편함뿐만 아니라 netflix입장에서도 매번 id와 pw를 DB와 대조할려면 여간 귀찮은게 사실. 그렇기에 한번 Login한 user에 대해서 임의의 access_token이나 session키를 서로 공유하여 상호 인증(Mutual auth)을 편하게 한다.
이번 django restframework를 사용한 login api개발에 있어서 당연히 로그인한 user에 대해서 session키를 만들어서 전송하는 로직을 작성하던 중 JWT에 대해 알게되어 작성해본다
일명 Json Web Toekn. Token자체에 data를 포함하고 있다.
즉 session과의 가장 큰 차이점은 Token이 서버 DB에 저장될 필요없이 Client측에서 소유하고 있으면
Okay라는 소리. Token은 client 브라우저의 local storage나 쿠키에 저장되기 때문에 조금 더 위험한
측면이 존재한다. 그렇기에 유효시간을 짧게 하고, 계속해서 refresh하여 사용한다.
뭐 대충 이런 차이점이 존재한다.
이런 jwt를 DFR에서 기본적으로 지원하지 않기 때문에 simplejwt라는 서드파티 라이브러리를 사용해보자. 구체적인 메소드와 방식은 chatGPT가 존재하니까... 굳이 여기에 적지는 않겠다.
지식을 아는 것보다 이해하는 것이 중요하지 않은가?