Найти - Пользователи
Полная версия: python-ldap -> авторизация пользователя в AD
Начало » Network » python-ldap -> авторизация пользователя в AD
1 2 3 4
vak
Хочу уточнить…
Полный DN, это : если адрес сервера host.domain.ru, то ‘dn=host,dn=domain,dn=ru’
Так?
Vader
vak
Хочу уточнить…
Полный DN, это : если адрес сервера host.domain.ru, то ‘dn=host,dn=domain,dn=ru’
Так?
Нет, не так
Во-первых, host в вашем случае абсолютно не при чем, т.е. если адрес сервера host.domain.ru, то рутовый dn будет такой ‘dc=domain,dc=ru’
Во-вторых, 'dc=domain,dc=ru', а не 'dn=domain,dn=ru'
В-третьих, вам нужен dn юзера, а не хоста, т.е. если юзер в вашем домене, например, находится в ou Users и группе test, то его dn будет приблизительно таким ‘cn=vasja.pupkin,cn=test,ou=Users,dc=domain,dc=ru’

И, наконец, я не понимаю, что вам мешает взять любой LDAP менеджер и посмотреть на структуру и dn'ы. Просматривать каталоги в AD можно под любой учетной записью, т.е. никаких супер-привелегий не нужно.
vak
Взял JXplorer - тоже ошибки при попытке подключения.

Error opening connection:
[LDAP: error code 1 - 00000000: LdapErr: DSID-0C090627, comment: In order to perform this operation a successful bind must be completed on the connection., data 0, vece
Vader
vak
Взял JXplorer - тоже ошибки при попытке подключения.
Ну он вам, каг бэ, намекает, что сначала нужно сделать бинд, а потом уже просматривать директории, т.е. вы либо совсем не биндились, либо указали неправильный логин/пароль.
vak
Да, согласен. Сейчас пытаюсь подключиться ldapsearch самое простое без пароля получается запросить:
$ldapsearch -x -h 192.168.0.1 -b '' -s base '(objectclass=*)'
…а дальше ступор… разбираюсь.
metallic
vak
Не разобрался? Имею похожую проблему, только еще интереснее, с некоторыми пользователями бинд проходит удачно, а с некоторыми нет %)
Вот код, упростил по максимуму:
import ldap

conString = 'cn=vaspup,cn=Users,dc=domain,dc=org'
l = ldap.initialize('ldap://server')
#l.protocol_version = ldap.VERSION3
#l.set_option(ldap.OPT_REFERRALS, 0)
try:
l.simple_bind_s(conString, "vaspup1")
print "OK"
except ldap.INVALID_CREDENTIALS:
print "Your username or password is incorrect."
except ldap.LDAPError as err:
print err
Сробатывает исключение INVALID_CREDENTIALS, хотя нашел несколько пользователей, с которыми удается прибиндится.

При этом авторизация через керберос с проблемными пользователями проходит:
import kerberos 
kerberos.checkPassword('vaspup','vaspup1','krbtgt/domain.org','DOMAIN.ORG')
metallic
Разобрался.
Оказывается виндовый AD воспринимает только полное имя пользователя, а логин - нет.
Проще говоря вот такой логин не прокатывает:
'cn=vaspup,cn=Users,dc=domain,dc=org'
А вот такой прокатывает:
'cn=Василий Пупкин,cn=Users,dc=domain,dc=org'
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB