Может ли 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 любым удобным вам способом.

Другие вопросы по тегам