我正在使用django-auth-ldap针对 Active Directory (LDAP) 数据库对 Django 用户进行身份验证。
我们的约定sAMAccountName
(通常是 AD 帐户的唯一标识符)是firstname.surname
. 对于逻辑用户,此值可能会更改。例如,他们的姓氏可能会在结婚或离婚时改变。
sAMAccountName
为了便于使用,我们还要求用户使用他们的电子邮件前缀而不是他们的, 登录。在大多数情况下,此值与 相同sAMAccountName
。但是,在某些情况下,用户有两个电子邮件地址(1. 法定名称,2. 英文/西方友好名称)。在其他情况下,电子邮件和sAMAccountName
因历史原因而有所不同。
在所有情况下(AD 标识符更改,一个用户的两个电子邮件标识符,电子邮件标识符 != sAMAccountName
)多个有效的 LDAP 身份验证应该映射到同一个逻辑 Django 用户——它们不应该触发创建多个独立的用户对象。
我们如何为这种场景配置身份验证?
- 别名。如果可以将 Django 用户映射到“主要”用户,而不是对同一用户进行多个身份验证,那将是一个可接受的解决方案。
- 备用库。如果另一个维护良好的 Django/LDAP 身份验证库可以完成这项工作(例如django-auth-ldap-ng)