Django可以将多个LDAP身份验证映射到单个User对象吗?

时间:2016-07-04 15:45:37

标签: python django ldap django-auth-ldap

我正在使用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

1 个答案:

答案 0 :(得分:1)

django-auth-ldap有一个documented mechanism,可让您自定义用户创建过程。通过子类化后端并覆盖此方法,您可以以任何方式将LDAP用户映射到Django用户。