Метод аутентификации, специфичный для пользователя django

Я планирую веб-приложение django с несколькими арендаторами (или я называю это компаниями).

Это означает, что мое веб-приложение используется несколькими компаниями. Каждая компания может установить свой собственный метод аутентификации. Например, компания 1 и компания 2 хотели бы использовать active directory, а компании 3 и 4 используют стандартную систему аутентификации django. Но пользователи могут быть связаны с несколькими компаниями.

Я построил небольшую диаграмму: enter image description here

И в этот момент я застрял.

Только существующие пользователи с определенным разрешением могут создавать новые учетные записи пользователей. Первичным ключом пользователя является адрес электронной почты.

Я думаю, что компании должны "зарегистрировать" свой домен, если они хотят использовать другой метод аутентификации. Например, компания 1 имеет домен xyz.de и все пользователи моего веб-приложения с доменом в адресе электронной почты должны аутентифицироваться через active directory компании 1.

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

У меня много вопросов.

  1. How can i implement that?
  2. Is there a better way to implement my requirements?
  3. Exist already a package that can help me?
  4. What happens if a user is already authenticate by another authentication system and come to my web app? Can i check if the user already authenticate or must the user login via the login page?

Спасибо за помощь!

Я работаю в аналогичном проекте, наше решение для этой структуры следующее:

1. Создайте таблицу UserParent в публичной схеме

  • включите некоторую информацию о родительском счете

2. Создайте таблицу UserParentRelation в публичной схеме

  • parent_user_id (fk to UserParent)
  • id_арендатора (fk to Tenant/Company)

3. Зависит от управления вашим счетом на сайте Арендатора

  • В моем случае, при создании новой записи в UserParentRelation, был создан счет в Tenant/Company
  • .
  • Тогда вы должны обработать Middleware при перенаправлении на другой Tenant/Company
  • .
Вернуться на верх