1

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

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

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

4

1 回答 1

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)

您可以在 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 来代替。

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

于 2014-07-17T09:14:06.547 回答