LdapConnection не может повторно привязать, кроме как с обычной проверкой подлинности - PullRequest
3 голосов
/ 17 августа 2010

Я немного растерялся с этим. Я звоню в .NET LdapConnection объект в следующем коде. Первый запрос работает просто отлично (SearchRequest) и использует тип аутентификации по умолчанию Negotiate. В цикле foreach этого примера кода я пытаюсь выполнить привязку, чтобы проверить пароль пользователя, которого я жестко запрограммировал в searchRequest.
Я получаю хорошее DistinguishedName в моем SearchResultEntry, и Bind () работает, но ТОЛЬКО с AuthType.Basic. Ни одна из других опций не будет работать, и я не заинтересован в использовании базовой (небезопасной) аутентификации. Идеи? * * 1002

        public LoginResult Authenticate(string userName, string password)
    {

        LdapDirectoryIdentifier identifier = new LdapDirectoryIdentifier(_serverName, _port);
        NetworkCredential credential = new NetworkCredential(_ServerUsername, _Serverpwd);
        LdapConnection ldapConnection = new LdapConnection(identifier, credential);
        ldapConnection.Timeout = new TimeSpan(0, 0, _timeout);

        try
        {
            SearchRequest searchRequest = new SearchRequest
                (_distinguisedName,
                 "(&(objectClass=user)(givenname=Joe)(sn=Smith))",
                 SearchScope.Subtree,
                 null);

            // cast the returned directory response as a SearchResponse object
            SearchResponse searchResponse =
                (SearchResponse)ldapConnection.SendRequest(searchRequest);

            // enumerate the entries in the search response
            foreach (SearchResultEntry entry2 in searchResponse.Entries)
            {
                // Check password by rebinding connection
                ldapConnection.AuthType = AuthType.Basic;
                ldapConnection.Bind(new NetworkCredential(entry2.DistinguishedName, password));
            }


        }
        catch (Exception e)
        {
            return LoginResult.Failure;
        }
        finally
        {
            ldapConnection.Dispose();
        }

        return LoginResult.Success;

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