Tonic 's lesson learned


django-rest-knox 란 무엇이고 왜 필요한가요.

django-rest-knox는 장고(django)의 rest 인증 모듈입니다. Knox는 Django REST Framework의 인증을 보다 쉽게 사용할 수 있도록 도와줍니다. 작은 노력으로 REST 기반의 애플레이션에서 공통적으로 사용하는 패턴을 따르며 안전한 연결을 구성할 수 있는 것이죠.

Knox의 인증은 DRF에 내장된 TokenAuthentication과 흡사하게 토큰 기반으로 작동하면서, 기본 DRF이 가지고 있는 몇 가지 문제들을 보완해 줍니다.

  1. DRF 토큰은 단일 사용자로 제한되어 있습니다. 이런 제약사항은 토큰이 공유되거나, 여러 기기에서 안전한 연결을 어렵게 만듭니다. 또 서버 측에서 로그아웃될 경우 모든 기기에서 로그아웃되어 버리기도 합니다. Knox는 로그인 뷰 당 하나의 토큰을 제공하면서 사용자 별 토큰을 발급하고 관리합니다. 한 사용자가 로그아웃해도 다른 사용자에게 영향을 주지 않으며 옵션 설정을 통해 모든 사용자를 로그아웃 시킬수도 있습니다.

  2. DRF 토큰은 데이터베이스에 암호화되지 않은 상태로 저장됩니다. 만약 해커가 데이터베이스를 탈취해 토큰을 가진다면 원하는 계정에 마음대로 접속할 수 있는 문제가 생깁니다. Knox 토큰은 암호화된 형태로만 저장됩니다. 따라서 데이터베이스가 해킹되어도 훔친 토큰으로 아무것도 할 수 없습니다.

  3. DRF 토큰은 생성 시간을 추적하지만 별도의 토큰 만료 매커니즘은 내장하고 있지 않습니다. Knox는 app 설정에서 만료 설정을 할 수 있습니다. (기본 값은 10시간)

이 문서는 django-rest-knox의 github의 설명을 번역한 것입니다.