Поддержка LDAP в .NET Framework - PullRequest
       42

Поддержка LDAP в .NET Framework

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

Я использую System.DirectoryServices для запроса активного каталога для аутентификации / получения информации о пользователях в приложении winforms. Примерно так:

var path = "LDAP://" + domain;
var entry = new DirectoryEntry(path);
DirectorySearcher myDirectorySearcher = new DirectorySearcher(entry);
var filter = string.Format("(&(ObjectClass={0})(sAMAccountName={1}))", "person", username);
myDirectorySearcher.Filter = filter;  

Я могу протестировать этот код только в Active Directory компании. Будет ли это работать на любой технологии, которая поддерживает LDAP?

Ответы [ 3 ]

7 голосов
/ 02 января 2012

Пространство имен System.DirectoryServices оптимизировано для Active Directory. Он будет работать против других серверов LDAP - с некоторыми ограничениями.

Существует также пространство имен System.DirectoryServices.Protocols (см. документация MSDN и вступление MSDN ) (новое в .NET 2.0), которое представляет собой более низкоуровневую реализацию LDAP - вы нужно больше работать и писать больше кода, но он более переносим и более вероятен для работы с другими хранилищами LDAP.

Существует также пространство имен System.DirectoryServices.AccountManagement (см. документация MSDN ) (новое в .NET 3.5), которое представляет собой гораздо более приятный и простой подход к использованию Active Directory из .NET - значительно улучшенное по сравнению с S. DS вещи! Но это только Active Directory, насколько я могу судить.

1 голос
/ 03 января 2012

Вы должны изменить фильтр, чтобы он выглядел так:

var filter = string.Format("(&(objectCategory={0})(objectClass={1})(sAMAccountName={2}))", "person", "user", username);

Это не будет работать в общем случае с любым каталогом LDAP. sAMAccountName, например, является специфическим атрибутом AD.

0 голосов
/ 10 января 2012

В последний раз, когда я пытался использовать system.directoryservices с сетью Novell, она просто полностью не работала, исключения просто создавались повсюду. Извините, я не могу быть более точным с номерами версий.

...