在Django中测试身份验证

15
我正在尝试在一个测试Django项目中实现LDAP身份验证。我认为我已经正确配置了所有内容(我正在使用django_ldap_auth包),并且希望在不必创建整个具有登录等功能的网站的情况下测试身份验证。这可能吗?顺便说一句,我只是作为让LDAP成为我们公司主要身份验证方法的一部分,并且不得不将该功能插入到一个大型项目中。
我尝试在本地主机上运行服务器并通过终端进行ssh,但显然这只会将我登录到自己的计算机上,我想 :) (我不是一位有经验的Linux用户)。
有什么建议吗?
1个回答

23

前往您的Django项目文件夹,并使用以下命令启动Python解释器:

python manage.py shell

然后执行,

from django_auth_ldap.backend import LDAPBackend

ldapobj = LDAPBackend()
user = ldapobj.populate_user(<LDAP username of an existing user>)
user.is_anonymous()

如果最后一个函数调用返回false,那么您的LDAP认证模块就正常工作了。
编辑:
按照上面的方式运行Python解释器,并且,
import ldap
server = 'ldap://<your server ip>'
user_dn = '<dn for a known user>'
password = '<his or her password>'
con = ldap.initialize(server)
con.simple_bind_s(user_dn, password)

如果无法连接到LDAP服务器,这将返回SERVER_DOWN: {'desc': "Can't contact LDAP server"}异常。


非常感谢您的回答,is_anonymous()函数调用没有返回任何内容,因为"user"是一个无对象(不起作用)。然而,您的答案向我展示了如何使用类函数来测试功能。我正在尝试查看是否能够连接到LDAP服务器,但我还没有弄清楚。有什么想法吗? - LDAPProblems
如果您确定您的LDAP服务器正在运行,请按照问题中的编辑步骤进行操作。 - vim
再次感谢,我可以连接到服务器,但模块仍然无法工作。我一直在尝试通过代码跟踪错误,但没有成功(这里有很多定义的函数)。最让我困扰的是,我似乎找不到我的settings.py中导入ldap设置的位置,因为这些当然对此很重要。虽然我不认为我还能寻求更多的帮助,但我想试着解决这个问题。 - LDAPProblems
在LDAP模块代码中的某个地方放置import pdb; pdb.set_trace(),并逐步执行代码。然后你可能会找到它卡住的线索。 - vim
1
连接对我来说没问题,但是认证有问题。在执行以下操作后,我收到了这个错误(ImproperlyConfigured: AUTH_LDAP_USER_SEARCH必须是LDAPSearch实例):(user = ldapobj.populate_user(<现有用户的LDAP用户名>))。感谢您的帮助。 - Naella
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接