django-rest-knox 란 무엇이고 왜 필요한가요.
2019년 11월 06일django-rest-knox는 장고(django)의 rest 인증 모듈입니다. Knox는 Django REST Framework의 인증을 보다 쉽게 사용할 수 있도록 도와줍니다. 작은 노력으로 REST 기반의 애플레이션에서 공통적으로 사용하는 패턴을 따르며 안전한 연결을 구성할 수 있는 것이죠.
Knox의 인증은 DRF에 내장된 TokenAuthentication과 흡사하게 토큰 기반으로 작동하면서, 기본 DRF이 가지고 있는 몇 가지 문제들을 보완해 줍니다.
-
DRF 토큰은 단일 사용자로 제한되어 있습니다. 이런 제약사항은 토큰이 공유되거나, 여러 기기에서 안전한 연결을 어렵게 만듭니다. 또 서버 측에서 로그아웃될 경우 모든 기기에서 로그아웃되어 버리기도 합니다. Knox는 로그인 뷰 당 하나의 토큰을 제공하면서 사용자 별 토큰을 발급하고 관리합니다. 한 사용자가 로그아웃해도 다른 사용자에게 영향을 주지 않으며 옵션 설정을 통해 모든 사용자를 로그아웃 시킬수도 있습니다.
-
DRF 토큰은 데이터베이스에 암호화되지 않은 상태로 저장됩니다. 만약 해커가 데이터베이스를 탈취해 토큰을 가진다면 원하는 계정에 마음대로 접속할 수 있는 문제가 생깁니다. Knox 토큰은 암호화된 형태로만 저장됩니다. 따라서 데이터베이스가 해킹되어도 훔친 토큰으로 아무것도 할 수 없습니다.
-
DRF 토큰은 생성 시간을 추적하지만 별도의 토큰 만료 매커니즘은 내장하고 있지 않습니다. Knox는 app 설정에서 만료 설정을 할 수 있습니다. (기본 값은 10시간)
이 문서는 django-rest-knox의 github의 설명을 번역한 것입니다.