Аутентификация через LDAP - PullRequest
0 голосов
/ 26 мая 2011

Меня интересует, как другие люди кодируют это, потому что я либо неправильно понимаю, либо что-то упускаю, либо, может быть, даже я делаю это правильно!

Прежде всего, этоНЕ является экземпляром Active Directory LDAP, его OpenDS, что, кроме некоторых синтаксических различий, не должно иметь большого значения.

Итак, предположим, что у меня есть настройка моей древовидной структуры примерно так:

-dc=somedomain,dc=com
-uid=rootuser
    -ou=Group1
       -uid=username1
       -uid=username2
    -ou=Group2
       -uid=username3
       -uid=username4

Чтобы аутентифицироваться как «rootuser», мне нужно будет пройти полное имя пользователя при создании моей системы..DirectoryServices.DirectoryEntry объект, в данном случае:

uid = rootuser, dc = somedomain, dc = com

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

uid = username1, dc = somedomain, dc = com

, но это будет работать:

uid = username1, dc = somedomain, dc= com, ou = Group1

Итак, мой вопрос: как вы справляетесь с этим, когда во время входа в систему вы не знаете, к какой конкретной группе принадлежит пользователь для создания этого пути?Единственный способ сделать это - сделать первоначальный вызов «rootuser», чтобы у меня был доступ ко всему дереву, а затем использовать System.DirectoryServices.DirectorySearcher, чтобы отсканировать его для конкретного пользователя (то есть username1)

* 1021.*

В этот момент у меня есть путь для пользователя, которого я хочу авторизовать, и я могу продолжить аутентификацию.Я далеко от базы здесь или это вообще как это делается?

спасибо!

Ответы [ 2 ]

0 голосов
/ 26 июня 2011

SASL поддерживает понятие использования имени пользователя для аутентификации. Администратор сервера каталогов может настроить сервер каталогов для сопоставления отличительных имен с идентичностями. При правильном отображении клиент может пройти аутентификацию, не зная отличительного имени. Серверы каталогов профессионального качества поддерживают ряд различных механизмов сопоставления, таких как direct mapping, exact match, regular expression или настраиваемое сопоставление удостоверений.

0 голосов
/ 26 мая 2011

Вы строите поисковый фильтр по атрибутам, которые являются уникальными для пользователя, например, псевдоним, электронная почта. Убедитесь, что LDAP настроен для обеспечения их уникальности. Затем вы найдете соответствующую запись, если она есть, получите DN и перепривязываете этого пользователя с соответствующим паролем. Если такой записи не было, вы соответственно реагируете.

Вы не говорите, какой язык используете, но в JNDI это означает установку DN в качестве участника безопасности, пароля в качестве учетных данных и вызов LdapContext.reconnect ().

...