django_auth_ldap raises OPERATIONS_ERROR



我正在尝试根据我们的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):
...

urls.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_auth_user_search应该有所不同?

虽然ldap_simple_bind_s()会返回一个成功的绑定,但这是关于我必须禁用的推荐选项:

ldap.set_option(ldap.OPT_REFERRALS, 0)

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

因此你必须有的真实价值

AUTH_LDAP_BIND_DN = ""
AUTH_LDAP_BIND_PASSWORD = ""

我不知道我是否可以在这篇文章中再问一个问题。在views.py中,我有这样的东西:

def登录(请求):

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

def auth_view(请求):

username=请求。POST.get('username','')password=请求。POST.get("密码",")user=auth.authenticate(用户名=用户名,密码=密码)

如果用户不是"无":auth.login(请求,用户)return HttpResponseRedirect('/logedin')其他:return HttpResponseRedirect("/无效")

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

导入日志

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

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

是的,我已经在设置中了

AUTH_LDAP_SERVER_ui="ldap://myldapadress"

AUTH_LDAP_BIND_DN="AUTH_LDAP_BIND_PASSWORD="AUTH_LDAP_USER_SEARCH=LDAPSearch("我的搜索配置",ldap。SCOPE_SUBTREE,"uid=uid")

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

logger=logging.getLogger('django_auth_ldap')

logger.addHandler(logging.StreamHandler())logger.setLevel(logging.DEBUG)

但我的问题是,我应该在哪里以及如何实现ldap loggins,这样views.py中的这个函数就会使用它。很抱歉有任何英语错误和过于笼统的问题

相关内容

  • 没有找到相关文章

最新更新