Может ли Django отобразить несколько аутентификаций LDAP на один объект User?
Я аутентифицирую пользователей Django по базе данных Active Directory (LDAP), используя django-auth-ldap.
Наша конвенция для sAMAccountName
(обычно это уникальный идентификатор для учетной записи AD) firstname.surname
, Возможно, это значение изменится для логического пользователя. Например, их фамилия может измениться в браке или разводе.
Мы также требуем, чтобы пользователи входили в систему, используя свой префикс электронной почты, а не свои sAMAccountName
, для простоты использования. В большинстве случаев это значение совпадает с sAMAccountName
, Однако в некоторых случаях у пользователя есть два адреса электронной почты (1. официальное имя, 2. английское / дружественное к западу имя). В других случаях электронная почта и sAMAccountName
отличаются по историческим причинам.
Во всех случаях (изменение идентификатора AD, два идентификатора электронной почты для одного пользователя, идентификатор электронной почты! = sAMAccountName
) несколько действительных аутентификаций LDAP должны отображаться на одного логического пользователя Django - они не должны запускать создание нескольких независимых объектов User.
Как мы можем настроить аутентификацию для этого сценария?
- Псевдонимы. Если возможно сопоставить пользователя Django с "основным" пользователем, а не с несколькими аутентификациями на одном и том же пользователе, это было бы приемлемым решением.
- Альтернативные библиотеки. Если другая хорошо поддерживаемая библиотека аутентификации Django/LDAP выполнит эту работу (например, django-auth-ldap-ng)
1 ответ
У django-auth-ldap есть документированный механизм, позволяющий вам настроить процесс создания пользователя. Подклассифицируя бэкэнд и переопределяя этот метод, вы можете сопоставить пользователей LDAP пользователям Django любым удобным вам способом.