2013-03-13 159 views
1

我正在研究一个基于Django的Intranet应用程序,该应用程序需要用户对Active Directory进行身份验证。我发现django-auth-ldap,但我仍然完全不知道该怎么做才能建立一个我可以开发的本地LDAP服务器。为Django身份验证设置LDAP

我安装了AD LDS,但它需要一个域控制器,并且有些我读过的答案告诉我,我无法在Windows 7上设置它。所以我决定尝试OpenLDAP,而它看起来像是在工作,但我读到的教程并不是特别清楚我到底如何向它添加数据?

是否有人请向我解释为了向本地运行的LDAP服务(无论是OpenLDAP还是Active Directory)添加并成功验证Django用户配置文件,需要执行哪些步骤(我需要知道成功设置后者,如果这是可能的话)?

回答

1

您可能已经通过,但现在以防万一解决了这个:

您需要设置LDAP存储库(完成)。 您需要创建一些可以绑定的用户对象。这是通过使用LDIF文件或类似的方法来完成的。一个非常有用的可视化LDAP数据库的工具是'Apache Directory Studio'。例如,一个ldif可能会出现:

dn:cn=myuser,cn=localhost 
changetype: modify 
add: cn=myuser 
userPassword: password01 

它会根据您的模式而有所不同。我强烈建议你阅读的具体实施Django文档到你:https://pythonhosted.org/django-auth-ldap/

这是一个很好的例子(从文档):

import ldap 
from django_auth_ldap.config import LDAPSearch 

AUTH_LDAP_BIND_DN = "" 
AUTH_LDAP_BIND_PASSWORD = "" 
AUTH_LDAP_USER_SEARCH = LDAPSearch("ou=users,dc=example,dc=com", 
ldap.SCOPE_SUBTREE, "(uid=%(user)s)") 

但假设你已经通过LDIF将用户添加到“CN = localhost“,那就是你在搜索字段中使用的dn。正如文档所述,如果您愿意,可以搜索整个目录。

如果它不清楚发生了什么事:

  1. 导入LDAP模块
  2. 进口ldapsearch的功能?从django的模块
  3. 设置一个空白绑定DN(这是像一个完全合格的用户名。例如UID = myuser的,DC = COM)
  4. 设置一个空白绑定密码
  5. 执行搜索。格式像这样:( “基地”,范围,searchfilter)

您可以测试使用标准的LDAP模块在Python:

import ldap 
ld = ldap.initialize("ldaps://acme.com:636") 
ld.bind_s("userDN","Password") 
ld.search_s("cn=acme.com",ldap.SCOPE_SUBTREE,"uid=myuser") 

并不重要,但 “ldap.SCOPE_SUBTREE”,“LDAP .SCOPE_BASE“等只是整数。所以你可以传入0,1,2。

祝你好运,即使你很久以前就已经解决了。