【问题标题】:Binding to Active Directory using django-auth-ldap使用 django-auth-ldap 绑定到 Active Directory
【发布时间】:2019-04-11 02:18:10
【问题描述】:

我正在尝试使用 django-auth-ldap 通过 Active Directory 在我的 django 应用程序中创建用户登录身份验证。问题是我无法使用 username (这是 sAMAccountName LDAP 等效项)绑定到 AD。下面是我的部分settings.py:

import ldap
from django_auth_ldap.config import LDAPSearch

AUTHENTICATION_BACKENDS = [
    'django_auth_ldap.backend.LDAPBackend',
]

AUTH_LDAP_START_TLS = False
AUTH_LDAP_ALWAYS_UPDATE_USER = False
AUTH_LDAP_SERVER_URI = 'ldap://ip_address:389'
AUTH_LDAP_BIND_DN = ''
AUTH_LDAP_BIND_PASSWORD = ''
AUTH_LDAP_USER_SEARCH = LDAPSearch('DC=example,DC=com', ldap.SCOPE_SUBTREE, '(sAMAccountName=%(user)s)')
AUTH_LDAP_CONNECTION_OPTIONS = {
    ldap.OPT_REFERRALS: 0,
}

控制台日志:

ERROR search_s('DC=example,DC=com', 2, '(sAMAccountName=user)') raised OPERATIONS_ERROR({'desc': 'Operations error', 'info': '00000000: LdapErr: DSID-0C090627, comment: In order to perform this operation a successful bind must be completed on the connection., data 0, vece'})
DEBUG search_s('DC=example,DC=com', 2, '(sAMAccountName=%(user)s)') returned 0 objects:
DEBUG Authentication failed for user: failed to map the username to a DN.

知道为什么这不起作用吗?

【问题讨论】:

  • 您有答案,如果有帮助,请接受并投票;如果没有帮助,请发表评论并提出或编辑您的问题。

标签: django authentication active-directory ldap


【解决方案1】:

默认情况下不启用匿名读取访问。要执行搜索操作,请使用有效帐户填充 AUTH_LDAP_BIND_DN 和 AUTH_LDAP_BIND_PASSWORD。我通常创建专用的“系统”帐户(即不是真人的帐户,因为每次用户更改密码时您的身份验证都会开始失败)。

【讨论】:

  • 太棒了!完美运行!非常感谢!另一方面,您说的是专用的“系统”帐户-您的意思是创建一个仅用于通过 LDAP 绑定到 AD 的特殊帐户?
  • 是的,一个普通用户帐户,但专门为通过 LDAP 绑定到 AD 而创建。我在一家大型公司工作,所以我为每个应用程序设置了一个特殊帐户(即使是同一组支持的三个应用程序,我也有三个 ID,因为谁知道将来重组会发生什么)。可以共享一个帐户——只是使协调定期密码更改更具挑战性。由于该帐户只会针对域控制器进行身份验证,因此我有一批可确保 LDAP 绑定帐户上的 userWorkstations 也设置为组织的域控制器列表。
猜你喜欢
  • 1970-01-01
  • 2013-05-19
  • 2011-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-05
相关资源
最近更新 更多