我正在开发一个基于Django的Intranet应用程序,需要用户对Active Directory进行身份验证。我找到django-auth-ldap,但我仍然完全不知道如何设置我可以开发的本地LDAP服务器。
我安装了AD LDS,但它需要一个域控制器,我读到的一些SO答案告诉我,我无法在Windows 7上设置它。所以我决定尝试使用OpenLDAP,看起来它正在工作,但我读过的教程并不是特别清楚我到底该如何添加数据?
有人请向我解释一下我需要采取哪些步骤来为本地运行的LDAP服务添加并成功验证Django用户配置文件,无论是OpenLDAP还是Active Directory(我需要知道如何成功设置后者,如果可能的话)?
答案 0 :(得分: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。正如文档所述,如果您愿意,可以搜索整个目录。
如果不清楚发生了什么:
您可以使用python中的标准ldap模块进行测试:
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。
祝你好运,即使你很久以前就解决了这个问题。