Server/Django REST framework

[Django] django-rest-knox 란?

개발자킹콩 2022. 7. 27. 22:15

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시간이다.
  4. (내 생각) 스마트폰 어플은 웹의 쿠키와 다르게 안전한 토큰 저장소가 존재한다. (android-AccountManager, iOS-KeyChain) 그래서 토큰 만료를 생각하지 않을 수도 있지만, 뚫리지 않는 보안은 존재하지 않기 때문에 Token refresh에 대한 정보가 있는지 확인해 볼 필요가 있다고 생각한다.

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

 

Reference

(해당 게시글은 아래의 블로그를 많이 참고했습니다. 문제시 삭제하겠습니다.)

https://devlog.jwgo.kr/2019/11/06/what-is-django-rest-knox/

 

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

사이트 운영에 도움을 주실 수 있습니다. 고맙습니다. --> django-rest-knox 란 무엇이고 왜 필요한가요. 2019년 11월 06일 django-rest-knox는 장고(django)의 rest 인증 모듈입니다. Knox는 Django REST Framework의 인

devlog.jwgo.kr

 

https://gogorchg.tistory.com/entry/AndroidiOS-AccessToken을-어떻게-관리-할까

 

[Android][iOS] AccessToken을 어떻게 관리 할까??

앱 개발 하실 때 대부분 OAuth2.0을 따라 진행 하실 겁니다. OAuth 인증에 따라 서버에서 AccessToken 을 받아 어떻게 관리하시는지?? Android 경우 AccountManager를 통하여 저장 관리 참조 : http://blog.udini..

gogorchg.tistory.com

 

 

 

 

 

 

'Server > Django REST framework' 카테고리의 다른 글

[Django] Reverse relations과 Related_name  (0) 2022.07.28
[Django] DRF Pagination  (0) 2022.07.28