Django用户身份验证:django_auth_ldap.backend.LDAPBackend

时间:2012-09-10 22:31:54

标签: django django-authentication django-auth-ldap

我不明白如何在django中使用LDAPBackend,我想要做的就是针对LDAP验证用户身份。我尝试过以下方法:

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

此时用户为None并且查看tcpdump我看不到与LDAP服务器的任何连接尝试。

settings.py
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 doc没有提供有关如何在视图中使用此后端的任何代码段。

非常感谢你的帮助!

1 个答案:

答案 0 :(得分:1)

django-auth-ldap的所有文档都是here。要调试配置,您需要在'django_auth_ldap'记录器上安装日志处理程序;有关详情,请参阅Django's logging documentation

乍一看,我想说一个问题是AUTH_LDAP_SERVER_URI没有设置为URI;尝试ldap://ldap.example.com/形式的东西。您还需要查看AUTH_LDAP_BIND_AS_AUTHENTICATING_USER的文档:这是一个高级且有些微妙的选项,只有在您知道需要时才能启用。