웹이든 앱이든 유저 계정을 기반으로 서비스를 제공하려면 반드시 거쳐야 하는 관문!
어떤 인증 수단을 사용할 것인지를 결정해야 한다.
Django의 장점 중 한가지는 매우 편리하게 잘 준비된 인증수단들 중 한가지를 골라쓸 수 있다는 점!
먼저 PC이든 모바일이든 브라우저 기반의 웹앱을 만들고 있다면
장고에서 제공하는 Session인증만으로 충분하다.
하지만 네이티브 모바일 앱 또는 그에 가까운 여러가지 중간형태(하이브리드앱 등)
중 하나를 고민하고 있다면 Token을 사용한 인증을 선택하는 것을 적극적으로 추천한다.
그런데 Django Rest framework에서 기본적으로 제공하는 Token이 있는 한편,(이하 DRF Built-in Token) 인증 구현을 위해 온라인에서 Django 토큰 인증을 검색하다 보면 항상 함께 뜨는 결과로 JWT(JSON Web Token)이라는 게 눈에 띈다.
JWT? 많은 플랫폼에서 광범위하게 사용된다는데? 이걸로 써야 하나? 무슨 차이지?
토큰 인증은 같은 토큰 인증인데 분명 서로 다른 것 같다.
어떻게 다른 건지, 어떤 장단점이 있는지 궁금해져서 꼼꼼히 체크해 보고
나와 같은 궁금증을 가진 사람들에게도 도움이 되길 바라며 한번 정리해보기로 했다.
DRF Built-in Token
JWT Token
DRF Built-in Token 인증 과정
JWT Token 인증 과정
DRF Built-in Token
JWT Token
DRF Built-in Token
JWT Token
위에 정리된 내용을 토대로 두가지 토큰 인증 방식 중 어떤 것을 선택할지에
가장 중요하게 영향을 미칠만한 보안상의 고려 요인은 아래와 같다고 생각된다.
나는 개인적으로 DB접근 전에 한차례 추가 검사가 이루어지는
JWT의 기능이 매우 마음에 들어서 JWT를 선택하기로 했다.
개발과정에서는 아직 어떤 인증방식이 더 적합한지를 확신할 수 없는 경우도
많을 것이라고 생각하는데, 애매하다고 여겨진다면 무조건 JWT를 선택하기를 추천하는 바이다.
~fin~