【问题标题】:How to django-auth-ldap achieve authentication with cn (common name) in AD?django-auth-ldap 如何在 AD 中使用 cn(通用名称)实现身份验证?
【发布时间】:2017-02-09 12:12:38
【问题描述】:

我在 Windows Server 2008 R2 中使用 Active Directory。我有一个使用 Django 和 python 2.7 运行的应用程序。现在我需要使用活动目录身份验证来访问我的应用程序。

为此,我正在使用这个包:

sudo apt-get-update
sudo apt-get install python-dev libldap2-dev libsasl2-dev libssl-dev
sudo pip install django-auth-ldap 
sudo pip install python-ldap

我使用全名绑定成功。

import ldap
from django.conf import settings

username='my full name in AD'
password= 'my password'

l = ldap.initialize(settings.AUTH_LDAP_SERVER_URI)
l.simple_bind_s(username,password)

我的问题是当我尝试使用我的 cn 属性进行绑定时,我收到了这个错误:

Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/usr/lib/python2.7/dist-packages/ldap/ldapobject.py", line 207, in     
simple_bind_s
return self.result(msgid,all=1,timeout=self.timeout)
File "/usr/lib/python2.7/dist-packages/ldap/ldapobject.py", line 422, in 
result res_type,res_data,res_msgid = self.result2(msgid,all,timeout)
File "/usr/lib/python2.7/dist-packages/ldap/ldapobject.py", line 426, in  
result2 res_type, res_data, res_msgid, srv_ctrls =       
self.result3(msgid,all,timeout)
File "/usr/lib/python2.7/dist-packages/ldap/ldapobject.py", line 432, in 
result3 ldap_result = self._ldap_call(self._l.result3,msgid,all,timeout)
File "/usr/lib/python2.7/dist-packages/ldap/ldapobject.py", line 96, in   
_ldap_call result = func(*args,**kwargs)
INVALID_CREDENTIALS: {'info': '80090308: LdapErr: DSID-0C0903A9, comment:   
AcceptSecurityContext error, data 52e, v1db1', 'desc': 'Invalid 
credentials'}

我可以使用我的 cn(通用名)属性对我的 Active Directory 进行身份验证吗?

谢谢。

【问题讨论】:

    标签: python authentication active-directory ldap


    【解决方案1】:

    您不能在 simple_bind() 中使用 cn 值。请改用备用用户主体名称sAMAccountName@FQDN,或使用其他supported bind names 之一。

    【讨论】:

      【解决方案2】:

      @marabu,感谢您的回复。你是对的,我不能在简单绑定中使用任何编辑器属性(如 cn,....)。 在成功绑定后,我们只能通过搜索方法访问此属性。 就我而言,我有两个选择:

      1) simple_bind_s(全名,密码)

      2) simple_bind_s(sAMAccountName@FQDN, password) 如果我们使用电子邮件地址进行会话验证

      像这样:

      【讨论】:

        猜你喜欢
        • 2013-03-18
        • 2021-03-26
        • 2021-04-26
        • 2016-04-30
        • 2014-02-07
        • 2014-08-09
        • 2023-03-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多