2013-09-23 2 views
0

Я настроил сервер разработки с AD, и я пытаюсь выяснить, как подключиться к нему через . NET. Я работаю на той же машине, на которой установлен AD. Я получил имя DC от AD и имя машины, но соединение просто не работает. Я использую те же учетные данные, которые я использовал для подключения к серверу.подключиться к локальному контроллеру домена AD

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

DirectoryEntry directoryEntry = new DirectoryEntry("LDAP://[dc.computername.com]", "administrator", "[adminpwd]"); 

ответ

0

Вы можете подключиться к RootDSE контейнера?

DirectoryEntry rootDSE = new DirectoryEntry("LDAP://RootDSE", "administrator", "[adminpwd]"); 

Если это работает, вы можете прочитать некоторые из свойств, хранящихся в этом корневом контейнере

if (rootDSE != null) 
{ 
    Console.WriteLine("RootDSE Properties:\n\n"); 

    foreach (string propName in rootDSE.Properties.PropertyNames) 
    { 
     Console.WriteLine("{0:-20d}: {1}", propName, rootDSE.Properties[propName][0]); 
    } 
} 

Это покажет вам некоторую информацию о том, что пути LDAP присутствуют в вашей системе.

+0

глупый вопрос здесь, но является ли RootDSE конкретным для моего сервера? Если да, то как мне понять, что это такое? – user948060

+0

@ user948060: 'LDAP: // RootDSE' - хорошо известный путь, который должен присутствовать на всех серверах LDAP Active Directory. ** Содержимое ** (значения в свойствах), конечно, специфично для вашей установки - вы должны видеть свой домен по умолчанию, пути LDAP и т. Д. –

+0

Означает ли это, что я должен иметь возможность перейти к LDAP: // RootDSE через веб-браузер? – user948060

0

попробовать что-то вроде этого, с помощью System.DirectoryServices.Protocols имен:

//Define your connection 
LdapConnection ldapConnection = new LdapConnection("123.456.789.10:389"); 

try 
{ 
     //Authenticate the username and password 
     using (ldapConnection) 
     { 
      //Pass in the network creds, and the domain. 
      var networkCredential = new NetworkCredential(Username, Password, Domain); 
      //Since we're using unsecured port 389, set to false. If using port 636 over SSL, set this to true. 
      ldapConnection.SessionOptions.SecureSocketLayer = false; 
      ldapConnection.SessionOptions.VerifyServerCertificate += delegate { return true; }; 
      //To force NTLM\Kerberos use AuthType.Negotiate, for non-TLS and unsecured, use AuthType.Basic 
      ldapConnection.AuthType = AuthType.Basic; 
      ldapConnection.Bind(networkCredential); 
     } 
     catch (LdapException ldapException) 
     { 
      //Authentication failed, exception will dictate why 
     } 
} 
Смежные вопросы