为Django身份验证设置LDAP

时间:2013-03-13 16:26:04

标签: django active-directory openldap

我正在开发一个基于Django的Intranet应用程序,需要用户对Active Directory进行身份验证。我找到django-auth-ldap,但我仍然完全不知道如何设置我可以开发的本地LDAP服务器。

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

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

1 个答案:

答案 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。正如文档所述,如果您愿意,可以搜索整个目录。

如果不清楚发生了什么:

  1. 导入Ldap模块
  2. 导入LDAPSEARCH功能?来自django模块
  3. 设置空白绑定DN(这就像一个完全限定的用户名。例如uid = myuser,dc = com)
  4. 设置空白绑定密码
  5. 执行搜索。格式如下:(“base”,scope,searchfilter)
  6. 您可以使用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。

    祝你好运,即使你很久以前就解决了这个问题。