2015-11-03 4 views
0

Мне интересно, как установить счет входа в Active Directory (AD) из C#. В настоящее время у меня есть библиотека, которая проверяет, находится ли конкретный пользователь в AD на основе имени пользователя и пароля, но когда я смотрю на этого пользователя в Проводнике AD, я не вижу, чтобы число счетчиков входа увеличивалось (от 1 до 2 и так далее).Использование C# для входа в Active Directory

Я предполагаю, что для этого мне нужно получить доступ к методу «Вход» из C#, но я не вижу такого метода в любом из методов DirectoryServices (а также AccountManagement).

Любые предложения?

Спасибо, Tim

+0

См. Мой отредактированный ответ. – Tofystedeth

ответ

0

Вы проверили все контроллеры домена? По documentation этого атрибута:

Этот атрибут не реплицируется и поддерживается на каждом контроллере домена в домене. Чтобы получить точное значение общего количества успешных попыток входа в домен пользователя в домене, каждый контроллер домена в домене должен быть запрошен и должна использоваться сумма значений. Имейте в виду, что атрибут не реплицируется, поэтому контроллеры домена, которые вышли на пенсию, могут также подсчитать вход для пользователя, и они будут отсутствовать в счете.

Редактировать: Я думаю, это зависит от того, как вы тестируете имя пользователя и пароль. В одном из моих приложений я проверяю U/P в моде, подобном этому.

NetworkCredential credentials = new NetworkCredential(userName, password, domain); 
     LdapDirectoryIdentifier id = new LdapDirectoryIdentifier(domain); 
     using (LdapConnection connection = new LdapConnection(id, credentials, AuthType.Kerberos)) 
     { 
      connection.SessionOptions.Sealing = true; 
      connection.SessionOptions.Signing = true; 

      try 
      { 
       connection.Bind(); 
      } 
      catch (LdapException lEx) 
      { 
       if (ERROR_LOGON_FAILURE == lEx.ErrorCode) 
       { 
        return false; 
       } 
       throw; 
      } 

     } 
     return true; 

Который после нескольких попыток не увеличивал счетчик входа в DC, я бил.

Однако, когда я использовал этот метод

using (PrincipalContext pc = new PrincipalContext(ContextType.Domain)) 
     { 
      bool authenticated; 
      authenticated = pc.ValidateCredentials(userName, password); 
      if (authenticated) 
      { 
       return true; 
      } 
      else 
      { 
       return false; 
      } 
     } 

Это же увеличивает его. По крайней мере, после попытки пары. У нас здесь куча DC, и я не знаю, как настроить таргетинг на конкретный.

+0

Ну, да, но это не отвечает на мои вопросы. Моя проблема заключается в том, что я могу пройти проверку подлинности в Active Directory, но Active Directory не регистрирует факт, что я прошел проверку подлинности (т. Е. Количество входных данных не увеличивается и последняя метка времени входа не устанавливается, когда пользователь аутентифицирован). Это вопрос, который у меня есть. Спасибо, Тим – Rushman

 Смежные вопросы

  • Нет связанных вопросов^_^