2012-09-10 85 views
5

我不明白如何在django中使用LDAPBackend,我所要做的就是根據LDAP對用戶進行身份驗證。我試過以下內容:Django用戶身份驗證:django_auth_ldap.backend.LDAPBackend

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官方文檔不提供有關如何在一個視圖中使用這個後端的任何片段。

非常感謝您的幫助!

+0

的確如此。官方的django文檔非常有限。 – shailenTJ

回答

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的文檔:這是一種先進且有點微妙的選項,只有在您知道需要時才能啓用。

+0

嗨,psagers,非常感謝您的幫助,在爲ldap添加了主機名前綴後//我開始看到ldap流量,這絕對是我的問題。 – Cosmix