【问题标题】:ldapsearch, django-ldap-auth and "data 52e, v1db1"ldapsearch、django-ldap-auth 和“数据 52e、v1db1”
【发布时间】:2013-09-06 00:26:33
【问题描述】:

我正在尝试让 django-auth-ldap 正常工作,但我不断收到无效凭据 (49) 错误,尽管凭据正确:

additional info: 80090308: LdapErr: DSID-0C0903A9, comment: AcceptSecurityContext error, data 52e, v1db1

在针对 Windows Server 2008 R2 的 Ubuntu 12.04.3 上使用 python-ldap (2.4.13) 和 django-auth-ldap (1.1.4)。我按照这里的安装说明:http://pythonhosted.org/django-auth-ldap/install.html 和这里:http://www.djm.org.uk/using-django-auth-ldap-active-directory-ldaps

第二个链接建议使用以下方法测试连接:

ldapsearch -H ldaps://ldap-x.companygroup.local:636 -D "CN=Something LDAP,OU=Random Group,DC=companygroup,DC=local" -w "p4ssw0rd" -v -d 1

在本地,那将是:

ldapsearch -H ldap://192.168.0.3 -D "cn=testadmin,dc=fds,dc=local" -w "password" -v -d 1

这对我不起作用,但以下方法对我有用

ldapsearch -H ldap://192.168.0.3 -D "dc=fds,dc=local" -U "testadmin" -w "password" -v -d 1

所以我很高兴。在将用户移出 -U 标志之前,我还尝试了以下操作但没有成功:

ldapsearch -H ldap://192.168.0.3 -D "cn=testadmin,ou=Users,dc=fds,dc=local" -w "password" -v -d 1
ldapsearch -H ldap://192.168.0.3 -D "uid=testadmin,dc=fds,dc=local" -w "password" -v -d 1
ldapsearch -H ldap://192.168.0.3 -D "uid=testadmin,ou=Users,dc=fds,dc=local" -w "password" -v -d 1

我的 django-auth-ldap 设置是:

import ldap
from django_auth_ldap.config import LDAPSearch

AUTHENTICATION_BACKENDS = (
    'django_auth_ldap.backend.LDAPBackend',
    'django.contrib.auth.backends.ModelBackend',
)

AUTH_LDAP_SERVER_URI = 'ldap://192.168.0.3'

AUTH_LDAP_BIND_DN = 'uid=testadmin,ou=Users,dc=fds,dc=local'
AUTH_LDAP_BIND_PASSWORD = 'password'
AUTH_LDAP_USER_SEARCH = LDAPSearch("ou=Users,dc=fds,dc=local",
    ldap.SCOPE_SUBTREE, "(uid=%(user))")

AUTH_LDAP_CONNECTION_OPTIONS = {
        ldap.OPT_DEBUG_LEVEL: 0,
        ldap.OPT_REFERRALS: 0,
}

这不起作用,与上述相同的错误。如您所见,我尝试使用三种形式登录:testadmin、[domain]\testadmin 和 testadmin@[domain].local,每个都出现相同的错误。

Development server is running at http://0.0.0.0:8000/
Quit the server with CONTROL-C.
Caught LDAPError while authenticating testadmin: INVALID_CREDENTIALS({'info': '80090308: LdapErr: DSID-0C0903A9, comment: AcceptSecurityContext error, data 52e, v1db1', 'desc': 'Invalid credentials'},)
[06/Sep/2013 08:51:38] "POST /admin/ HTTP/1.1" 200 2027
Caught LDAPError while authenticating testadmin@fds.local: INVALID_CREDENTIALS({'info': '80090308: LdapErr: DSID-0C0903A9, comment: AcceptSecurityContext error, data 52e, v1db1', 'desc': 'Invalid credentials'},)
[06/Sep/2013 08:53:40] "POST /admin/ HTTP/1.1" 200 2037
Caught LDAPError while authenticating fds\testadmin: INVALID_CREDENTIALS({'info': '80090308: LdapErr: DSID-0C0903A9, comment: AcceptSecurityContext error, data 52e, v1db1', 'desc': 'Invalid credentials'},)
[06/Sep/2013 08:53:50] "POST /admin/ HTTP/1.1" 200 2031

我尝试了对各种组合/包括以下设置的一些更改:

AUTH_LDAP_BIND_DN = 'uid=testadmin,ou=Domain Users,ou=Users,dc=fds,dc=local'
AUTH_LDAP_BIND_DN = 'cn=testadmin,ou=Users,dc=fds,dc=local'
AUTH_LDAP_BIND_DN = 'cn=testadmin,ou=Users,dc=fds,dc=local'
AUTH_LDAP_BIND_DN = 'uid=testadmin,dc=fds,dc=local'
AUTH_LDAP_BIND_DN = 'cn=testadmin,dc=fds,dc=local'

AUTH_LDAP_USER_SEARCH = LDAPSearch("ou=Domain Users,ou=Users,dc=fds,dc=local",
    ldap.SCOPE_SUBTREE, "(uid=%(user))")

AUTH_LDAP_USER_SEARCH = LDAPSearch("ou=FDS Users,dc=fds,dc=local",
    ldap.SCOPE_SUBTREE, "(uid=%(user))")

AUTH_LDAP_USER_SEARCH = LDAPSearch("ou=IT Users,ou=FDS Users,dc=fds,dc=local",
    ldap.SCOPE_SUBTREE, "(uid=%(user))")

我不完全了解 AD 或 LDAP,但我正在根据我在网上找到的示例进行工作 - 每个 ou 都是我的域中包含用户或其他 ou 包含用户的现有 ou。

在我看来,问题与设置有关

AUTH_LDAP_BIND_DN = 'uid=testadmin,ou=Users,dc=fds,dc=local'
AUTH_LDAP_BIND_PASSWORD = 'password'

AUTH_LDAP_USER_SEARCH = LDAPSearch("ou=Users,dc=fds,dc=local",
    ldap.SCOPE_SUBTREE, "(uid=%(user))")

但我不确定 - 并且不知道下一步该做什么来解决这个问题。有什么想法吗?

【问题讨论】:

  • 由于我的 LDAP 服务的一些配置问题,我遇到了类似的问题。我相信您必须使用您的用户名和密码登录。我看到你的 dc 是 fds.local,你试过用 username@fds.local 登录吗?这对我有用。

标签: python django authentication active-directory


【解决方案1】:

原来我在错误的地方寻找错误。这是一个 BIND 错误,而不是用户身份验证错误。请注意,错误是在 AUTH_LDAP_BIND_DN 还是 AUTH_LDAP_USER_SEARCH 中存在混淆。

解决办法是

AUTH_LDAP_BIND_DN = 'cn=testadmin,ou=FDS Users,dc=fds,dc=local'

AUTH_LDAP_BIND_DN 需要引用一个专有名称,即,它需要指向确切用户所在的位置 - 这不是“搜索组或 OU”的情况,而是“这是链接”。

以上工作。

【讨论】:

    猜你喜欢
    • 2015-10-03
    • 1970-01-01
    • 2018-01-15
    • 1970-01-01
    • 2018-02-22
    • 2022-12-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多