Как проверить учетные данные пользователя Active Directory с помощью LDAP? - PullRequest
1 голос
/ 02 апреля 2012

Я ищу базовый сценарий ldap, который проверяет, является ли Active Directory комбинацией пользователя и пароля.

Я упоминаю, что аутентификация в LDAP выполняется с использованием другой учетной записи, отличной от проверяемой.

Вот мой неполный сценарий:

#!/usr/bin/env python
import ldap
import sys

Server = "ldap://pdc01.example.com"
DN = "EXAMPLE\username"
Secret = "pass"
un = "john"
un_password = "hispass"
Base = "dc=example,dc=com"

Scope = ldap.SCOPE_SUBTREE
Filter = "(&(objectClass=user)(sAMAccountName="+un+"))"
Attrs = ["displayName"]

l = ldap.initialize(Server)
l.set_option(ldap.OPT_REFERRALS, 0)
l.protocol_version = 3
print l.simple_bind_s(DN, Secret)

r = l.search(Base, Scope, Filter, Attrs)
Type,user = l.result(r,60)
Name,Attrs = user[0]
if hasattr(Attrs, 'has_key') and Attrs.has_key('displayName'):
  displayName = Attrs['displayName'][0]
  print displayName

# TODO: I get `john`'s Username but how to check his password ?

l.unbind()

1 Ответ

4 голосов
/ 02 апреля 2012

Если отличительное имя проверяемой записи и ее учетные данные уже известны, передает простой запрос на связывание, включающий учетные данные , в случае успеха пароль правильный и учетная запись пригодна для использования (в отличие отзаблокирован или отключен).В качестве альтернативы механизм SASL может использоваться с запросом на привязку.

Если отличительное имя неизвестно, передайте поисковый запрос на сервер каталогов, используя соединение с достаточной авторизацией для чтения отличительного имени записи.Поисковый запрос должен содержать базовый объект, которому запись должна быть подчинена, должен использовать максимально возможную область видимости (если отличительное имя неизвестно, это будет one или sub), следует использовать наиболееограничительный фильтр, насколько это возможно, с учетом известной информации и запрос атрибута 1.1, поскольку все, что требуется, это отличительное имя записи.Ответ на поиск будет содержать отличительное имя записи, если поиск был успешным.Когда отличительное имя известно, передайте запрос на связывание, как указано выше.

см. Также

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...