django_auth_ldap引发操作错误

django_auth_ldap引发操作错误,django,ldap,django-authentication,python-ldap,Django,Ldap,Django Authentication,Python Ldap,我正在尝试针对LDAP构建用户身份验证: settings.py: AUTHENTICATION_BACKENDS = ( 'django_auth_ldap.backend.LDAPBackend', 'django.contrib.auth.backends.ModelBackend', ) AUTH_LDAP_SERVER_URI = "ldap://********-dc01.*******.ru" import ldap from django_auth_l

我正在尝试针对LDAP构建用户身份验证:

settings.py:

AUTHENTICATION_BACKENDS = (
    'django_auth_ldap.backend.LDAPBackend',
    'django.contrib.auth.backends.ModelBackend',
    )

AUTH_LDAP_SERVER_URI = "ldap://********-dc01.*******.ru"

import ldap
from django_auth_ldap.config import LDAPSearch

AUTH_LDAP_BIND_DN = ""
AUTH_LDAP_BIND_PASSWORD = ""
AUTH_LDAP_USER_SEARCH = LDAPSearch("cn=users,dc=*********,dc=ru",ldap.SCOPE_SUBTREE,"(uid=%(user)s)")

AUTH_LDAP_USER_ATTR_MAP = {
    "first_name": "givenName",
    "last_name": "sn",
    "email": "mail"
}

import logging

logger = logging.getLogger('django_auth_ldap')
logger.addHandler(logging.StreamHandler())
logger.setLevel(logging.DEBUG)
views.py:

@login_required
def project_list(request):
...
URL.py:

(r'^accounts/login/$', 'django.contrib.auth.views.login',{'template_name':'login.html'}),
模板是

这将需要我对表单进行身份验证,并获得以下调试输出:

search_s('cn=users,dc=********,dc=ru', 2, '(uid=bolotnov)') raised OPERATIONS_ERROR({'info': '000004DC: LdapErr: DSID-0C0906DC, comment: In order to perform this operation a successful bind must be completed on the connection., data 0, v1db0', 'desc': 'Operations error'},)
search_s('cn=users,dc=**********,dc=ru', 2, '(uid=bolotnov)') raised OPERATIONS_ERROR({'info': '000004DC: LdapErr: DSID-0C0906DC, comment: In order to perform this operation a successful bind must be completed on the connection., data 0, v1db0', 'desc': 'Operations error'},)
Authentication failed for bolotnov
Authentication failed for bolotnov

我试着用谷歌搜索,但并没有找到任何能帮助我更进一步的东西,也许是来自社区的一个提示——也许有一些简单的东西我遗漏了,或者需要检查一下?我似乎能够通过Softerra ldap浏览器匿名绑定到我们的ldap,也许ldap\u auth\u user\u搜索应该有所不同?

您需要绑定到服务器,即使它是匿名绑定

因此,你必须有真正的价值观

AUTH_LDAP_BIND_DN = ""
AUTH_LDAP_BIND_PASSWORD = ""

您需要绑定到服务器,即使它是匿名绑定

因此,你必须有真正的价值观

AUTH_LDAP_BIND_DN = ""
AUTH_LDAP_BIND_PASSWORD = ""

虽然ldap\u simple\u bind\s会返回一个成功的绑定,但我必须禁用该选项才能使其正常工作:

ldap.set_option(ldap.OPT_REFERRALS, 0)

虽然ldap\u simple\u bind\s会返回一个成功的绑定,但我必须禁用该选项才能使其正常工作:

ldap.set_option(ldap.OPT_REFERRALS, 0)

我不知道我是否可以在这篇文章中再问一个问题。 在views.py中,我有如下内容:

def登录请求:

c = {}
c.update(csrf(request))
return render_to_response('login.html', c)
def auth_viewrequest:

username=request.POST.get'username', password=request.POST.get'password', user=auth.authenticateusername=username,password=password

如果用户不是无: auth.loginrequest,用户 返回HttpResponseRedirect'/loggedin' 其他: 返回HttpResponseRedirect'/invalid'

我的问题是如何将其与ldap服务器绑定? django文档中有用于记录的模板:

导入日志记录

logger=logging.getLogger'django\u auth\u ldap' logger.addHandlerlogging.StreamHandler logger.setLevellogging.DEBUG


但是我不知道如何在rhis代码中准确地实现它

我不知道我是否可以在这篇文章中提出另一个问题。 在views.py中,我有如下内容:

def登录请求:

c = {}
c.update(csrf(request))
return render_to_response('login.html', c)
def auth_viewrequest:

username=request.POST.get'username', password=request.POST.get'password', user=auth.authenticateusername=username,password=password

如果用户不是无: auth.loginrequest,用户 返回HttpResponseRedirect'/loggedin' 其他: 返回HttpResponseRedirect'/invalid'

我的问题是如何将其与ldap服务器绑定? django文档中有用于记录的模板:

导入日志记录

logger=logging.getLogger'django\u auth\u ldap' logger.addHandlerlogging.StreamHandler logger.setLevellogging.DEBUG


但是我不知道如何在rhis代码中准确地实现它

是的,我已经在settings.py中实现了它:

AUTHENTICATION_BACKENDS = (
    'django_auth_ldap.backend.LDAPBackend',
    'django.contrib.auth.backends.ModelBackend',
    )

AUTH_LDAP_SERVER_URI = "ldap://********-dc01.*******.ru"

import ldap
from django_auth_ldap.config import LDAPSearch

AUTH_LDAP_BIND_DN = ""
AUTH_LDAP_BIND_PASSWORD = ""
AUTH_LDAP_USER_SEARCH = LDAPSearch("cn=users,dc=*********,dc=ru",ldap.SCOPE_SUBTREE,"(uid=%(user)s)")

AUTH_LDAP_USER_ATTR_MAP = {
    "first_name": "givenName",
    "last_name": "sn",
    "email": "mail"
}

import logging

logger = logging.getLogger('django_auth_ldap')
logger.addHandler(logging.StreamHandler())
logger.setLevel(logging.DEBUG)
身份验证\u LDAP\u服务器\u URI=ldap://myldapadress

身份验证\u LDAP\u绑定\u DN= 身份验证\u LDAP\u绑定\u密码= AUTH\u LDAP\u USER\u SEARCH=LDAPSearchmy SEARCH配置, ldap.SCOPE_子树,uid=uid

身份验证\u后端= “django_auth_ldap.backend.LDAPBackend”, 'django.contrib.auth.backends.ModelBackend',

logger=logging.getLogger'django\u auth\u ldap'

logger.addHandlerlogging.StreamHandler logger.setLevellogging.DEBUG

但我的问题是应该在哪里以及如何实现ldap日志,以便views.py中的这个函数可以使用它。
很抱歉出现任何英语错误和太笼统的问题

是的,我已经在设置中找到了。py:

AUTHENTICATION_BACKENDS = (
    'django_auth_ldap.backend.LDAPBackend',
    'django.contrib.auth.backends.ModelBackend',
    )

AUTH_LDAP_SERVER_URI = "ldap://********-dc01.*******.ru"

import ldap
from django_auth_ldap.config import LDAPSearch

AUTH_LDAP_BIND_DN = ""
AUTH_LDAP_BIND_PASSWORD = ""
AUTH_LDAP_USER_SEARCH = LDAPSearch("cn=users,dc=*********,dc=ru",ldap.SCOPE_SUBTREE,"(uid=%(user)s)")

AUTH_LDAP_USER_ATTR_MAP = {
    "first_name": "givenName",
    "last_name": "sn",
    "email": "mail"
}

import logging

logger = logging.getLogger('django_auth_ldap')
logger.addHandler(logging.StreamHandler())
logger.setLevel(logging.DEBUG)
身份验证\u LDAP\u服务器\u URI=ldap://myldapadress

身份验证\u LDAP\u绑定\u DN= 身份验证\u LDAP\u绑定\u密码= AUTH\u LDAP\u USER\u SEARCH=LDAPSearchmy SEARCH配置, ldap.SCOPE_子树,uid=uid

身份验证\u后端= “django_auth_ldap.backend.LDAPBackend”, 'django.contrib.auth.backends.ModelBackend',

logger=logging.getLogger'django\u auth\u ldap'

logger.addHandlerlogging.StreamHandler logger.setLevellogging.DEBUG

但我的问题是应该在哪里以及如何实现ldap日志,以便views.py中的这个函数可以使用它。
对不起,有任何英语错误和太笼统的问题

我想我知道问题是什么,但还不能核实。它将尝试使用用户在“登录/密码”字段中提供的相同凭据绑定到LDAP服务器以供用户选择。发生的情况是-用户很高兴发现/验证了登录/密码令牌,但要绑定到LDAP,服务器也希望提供域名-这就是问题的原因。我想我知道问题是什么,但还不能验证它。它将尝试使用用户在“登录/密码”字段中提供的相同凭据绑定到LDAP服务器以供用户选择。发生的情况是-用户很高兴找到/验证了登录/密码令牌,但要绑定到LDAP,服务器也希望提供域名-这导致了问题。