【问题标题】:Can Django map multiple LDAP authentications onto a single User object?Django 可以将多个 LDAP 身份验证映射到单个用户对象吗?
【发布时间】:2016-07-04 15:45:37
【问题描述】:

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

【问题讨论】:

  • Django 中没有任何东西会禁止将多个 AD 用户映射到单个 Django 用户。你如何去做完全取决于你使用的 Django 身份验证后端。
  • @psagers 更新了提到后端(django-auth-ldap)的问题 - 接受切换它的建议

标签: python django ldap django-auth-ldap


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-03
    • 2011-09-23
    • 2018-03-19
    • 2016-10-18
    • 1970-01-01
    • 2011-09-15
    相关资源
    最近更新 更多