Административные проблемы с использованием аутентификации LDAP в .Net - PullRequest
1 голос
/ 23 августа 2011

Большинство примеров кода, используемых для аутентификации пользователей на сервере LDAP, выглядит следующим образом:

Public Function Authenticate(ByVal userName As String, ByVal password As String) As Data.User

   Dim root As DirectoryEntry = New DirectoryEntry("LDAP://" + _server, userName, password)
   Dim search As DirectorySearcher = New DirectorySearcher(root)
   Dim user As User = Nothing

   search.SearchScope = SearchScope.Subtree
   search.Filter = "(sAMAccountName=" + userName + ")"

   Dim results As SearchResultCollection = search.FindAll()

   If (Not (results Is Nothing)) Then

       user = _GetUser(results(0).Path)

   End If

   Return user

End Function

Я не настроил сервер LDAP моего клиента.Приведенный выше код работает только для учетных записей администраторов.Я заметил, что только администраторы могут эффективно запрашивать на серверах LDAP.Это может быть выбор администратора по вопросам безопасности.Это разумно для меня, но я не уверен, является ли это истинной причиной того, что происходит.

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

Это лучший подход?

1 Ответ

0 голосов
/ 25 августа 2011

Не думаю, что вам следует запрашивать дважды: один для подтверждения, а другой для запроса. Вот код в C #:


string directoryEntryFinalDetails = "LDAP: /// DC = xyz, DC = com";

DirectoryEntry directoryEntry = новый DirectoryEntry (directoryEntryDetails);

directoryEntry.AuthenticationType = AuthenticationTypes.Secure;

** directoryEntry.Username = General.DecryptedUserName;

directoryEntry.Password = General.DecryptedPassword; **

DirectorySearcher directorySearcher = новый DirectorySearcher (directoryEntry);

DirectorySearcher directorySearcher = новый DirectorySearcher (directoryEntry);

directorySearcher.Filter = "";

foreach (SearchResult resultSet в directorySearcher.FindAll ())

* * {Тысяча двадцать-один
//your code

}


просто дайте мне знать, помогает ли это !!

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