django_auth_ldap повышает OPERATIONS_ERROR - PullRequest
1 голос
/ 13 февраля 2012

Я пытаюсь создать аутентификацию пользователя по нашему 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

Я пытался поискать в Google, но не нашел ничего, что могло бы помочь мне дальше, возможно, намек от сообщества - может быть, я упускаю что-то простое или чек? Кажется, я могу привязать аноним к нашему ldap через LDAP-браузер Softerra. Может быть, ldap_auth_user_search должен быть несколько другим?

Ответы [ 4 ]

3 голосов
/ 16 февраля 2012

хотя ldap_simple_bind_s () вернул бы успешное связывание, речь идет о опции рефералов, которую мне пришлось отключить, чтобы заставить это работать:

ldap.set_option(ldap.OPT_REFERRALS, 0)
1 голос
/ 21 апреля 2015

Не знаю, смогу ли я в этом посте задать еще один вопрос.В views.py у меня есть что-то вроде этого:

def логин (запрос):

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

def auth_view (запрос):

username = request.POST.get ('username', '') password = request.POST.get ('password', '') user = auth.authenticate (username = username, password = password)

, если пользователь не являетсяНет: auth.login (запрос, пользователь) возвращает HttpResponseRedirect ('/ loggedin'), иначе: return HttpResponseRedirect ('/ invalid')

Мой вопрос: как я могу связать его с сервером ldap?В документации django есть шаблон для ведения журнала:

импорт журнала

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

Но я не знаю, как точно реализовать это в своем коде

1 голос
/ 14 февраля 2012

Вам необходимо выполнить привязку к серверу, даже если это анонимная привязка.

, поэтому вы должны иметь реальные значения

AUTH_LDAP_BIND_DN = ""
AUTH_LDAP_BIND_PASSWORD = ""
0 голосов
/ 21 апреля 2015

Да, у меня это уже есть в settings.py:

AUTH_LDAP_SERVER_URI = "ldap: // myldapadress"

AUTH_LDAP_BIND_DN = "" AUTH_LDAP_BIND_PASSWORD = "AUTH_LD =" AUTH_LDLDAPSearch ("мои поисковые конфиги", ldap.SCOPE_SUBTREE, "uid = uid")

AUTHENTICATION_BACKENDS = ('django_auth_ldap.backend.LDAPBackend', 'django.contrib.auth.lackend 100) 100).*

logger = logging.getLogger ('django_auth_ldap')

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

Но мой вопросгде и как я должен реализовать ldap loggins, чтобы эта функция в views.py использовала его.Извините за любые английские ошибки и слишком общие вопросы

...