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

И в этот момент я застрял.
Только существующие пользователи с определенным разрешением могут создавать новые учетные записи пользователей. Первичным ключом пользователя является адрес электронной почты.
Я думаю, что компании должны "зарегистрировать" свой домен, если они хотят использовать другой метод аутентификации. Например, компания 1 имеет домен xyz.de и все пользователи моего веб-приложения с доменом в адресе электронной почты должны аутентифицироваться через active directory компании 1.
Я думаю, что пользователь может ввести только свой адрес электронной почты в форму входа, а django может проверить, настроен ли определенный метод аутентификации для домена. И на следующем шаге пользователь может ввести пароль или он будет перенаправлен на другую систему аутентификации.
У меня много вопросов.
- How can i implement that?
- Is there a better way to implement my requirements?
- Exist already a package that can help me?
- 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.