Использование Django REST Framework в качестве серверной части аутентификации для Django

В настоящее время у меня есть большой проект Django, использующий Django REST Framework.

У меня есть еще один, меньший по размеру проект Django, который я хотел бы построить на основе основного, который не использует базу данных напрямую, а собирает необходимые данные через API.

Я хотел бы переопределить AUTHENTICATION_BACKEND для меньшего проекта и использовать в качестве аутентификатора конечную точку аутентификации API из более крупного.

В основном процесс будет следующим:

  1. Пользователь пытается войти в небольшой проект Django, используя учетные данные своего пользователя в большом проекте Django-DRF.
  2. Небольшой проект Django отправляет запрос на вход через API в большой проект Django-DRF.
  3. Большой проект Django-DRF возвращает токен API и сериализованную информацию о пользователе.
  4. Небольшой проект Django автоматически добавляет / обновляет пользователя в свою базу данных, используя информацию из ответа большого проекта Django-DRF.
  5. Малый проект Django отвечает клиенту пользователя токеном, поэтому запросы AJAX со страниц проекта Small Django можно направлять непосредственно на конечные точки большого проекта Django-DRF.

Есть ли существующие плагины, которые стоит использовать для этого варианта использования, или я должен написать свой собственный AUTHENTICATION_BACKEND?


person Bradford Wade    schedule 14.04.2016    source источник
comment
Если ваше приложение DRF совместимо с Oauth2 или какой-либо другой стандартной схемой аутентификации, вы сможете легко найти серверную часть. Если это не так, возможно, вам лучше написать свое собственное. Это не так уж и сложно.   -  person Mad Wombat    schedule 14.04.2016


Ответы (1)


Похоже, вы можете изучить django-rest-framework-jwt. Это позволит вам использовать JWT в качестве механизма аутентификации, который может легко справиться с вашим случаем. На самом деле проект предоставляет конечную точку специально для того, что вы хотите, verify_jwt_token. Согласно документации:

В некоторых микросервисных архитектурах аутентификация выполняется одной службой. Другие службы делегируют ответственность за подтверждение того, что пользователь вошел в эту службу аутентификации. Обычно это означает, что служба передает JWT, полученный от пользователя, службе аутентификации и ожидает подтверждения того, что JWT действителен, прежде чем возвращать защищенные ресурсы пользователю.

Итак, ваш рабочий процесс будет примерно таким:

  1. Пользователь аутентифицируется в вашем более крупном API
  2. Пользователь получает JWT обратно из запроса аутентификации
  3. Пользователь отправляет JWT вместе с каждым запросом в меньший API
  4. API меньшего размера после получения JWT перенаправляет его в конечную точку verify_jwt_token в вашем более крупном API.
person Joey Wilhelm    schedule 14.04.2016
comment
Как будут выглядеть настройки двух проектов Django? В частности, настройки бэкэнда аутентификации в settings.py проекта, который будет использовать другой проект django для получения jwt. Будет ли работать сразу из коробки? - person abi crazieeee; 19.09.2020