Django用户认证:django_auth_ldap.backend.LDAPBackend

5

我不明白如何在Django中使用LDAPBackend,我只想对LDAP进行用户认证。我尝试了以下方法:

from django_auth_ldap.backend import LDAPBackend
auth = LDAPBackend()
user = auth.authenticate(username='my_uid',password='pwd')

此时用户为None,查看tcpdump,我看不到任何连接LDAP服务器的尝试。
AUTH_LDAP_SERVER_URI = 'ldap.example.com'
AUTH_LDAP_USER_DN_TEMPLATE = 'uid=%(user)s,ou=People,dc=example,dc=com'
AUTH_LDAP_BIND_AS_AUTHENTICATING_USER = True
AUTH_LDAP_CACHE_GROUPS = True
AUTH_LDAP_GROUP_CACHE_TIMEOUT = 3600
AUTH_LDAP_USER_ATTR_MAP = {
"first_name": "givenName",
"last_name": "sn",
"email": "mail"
}
AUTHENTICATION_BACKENDS = (
'django.contrib.auth.backends.ModelBackend',
'django_auth_ldap.backend.LDAPBackend',
)

官方的Django文档没有提供关于如何在视图中使用此后端的任何代码片段。
非常感谢您的帮助!

这是真的。官方的Django文档非常有限。 - Shailen
1个回答

1
django-auth-ldap的所有文档都在这里。为了调试您的配置,您需要在'django_auth_ldap'记录器上安装日志处理程序;有关更多信息,请参见Django的日志记录文档
乍一看,我会说一个问题是AUTH_LDAP_SERVER_URI未设置URI;尝试使用ldap://ldap.example.com/形式的内容。您还需要查看AUTH_LDAP_BIND_AS_AUTHENTICATING_USER的文档:这是一个高级且有些微妙的选项,只有在知道需要它时才应启用。

嗨,psagers,非常感谢您的帮助,在主机名前加上ldap://后,我开始看到ldap流量,这绝对是我的问题。 - Cosmix

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接