У меня есть некоторый рабочий код .NET (как в качестве настольного приложения, так и в качестве развертывания IIS) для чтения данных из LDAP:
string ldapUrl = "LDAP://myLdapUrl.example/ou=user,dc=MyDC";
AuthenticationTypes auth = AuthenticationTypes.None;
using (DirectoryEntry directoryEntry = new DirectoryEntry(
ldapUrl,
"cn=ldap_user,ou=user,dc=MyDC",
"NotMyTruePassword",
auth)
{
using (DirectorySearcher directorySearcher = new DirectorySearcher(directoryEntry))
{
directorySearcher.PropertiesToLoad.AddRange(new[] { "uid", "givenname", "sn", "middlename", "description", "memberof" });
directorySearcher.Filter = String.Format("(&(objectclass=person)(cn={0}))", user);
directorySearcher.SearchScope = SearchScope.OneLevel;
directorySearcher.SizeLimit = 10;
SearchResult searchResult = directorySearcher.FindOne();
}
}
Но когда я пытаюсь подключиться к порту LDAPS (636), происходит сбой с
System.Runtime.InteropServices.COMException (0x8007203A): сервер не работает.
Замечания:
Я добавил сервер CA в свою учетную запись через MMC.
После этого я могу подключиться к порту LDAPS с помощью LdapAdmin.
Я попробовал следующие изменения:
Просто добавив порт к URL-адресу сервера 1 :
string ldapUrl = "LDAP://myLdapUrl.example:636/ou=user,dc=MyDC";
Добавление порта и изменение authTypes на SecureSocketsLayer
2 :
string ldapUrl = "LDAP://myLdapUrl.example:636/ou=user,dc=MyDC";
AuthenticationTypes auth = AuthenticationTypes.SecureSocketsLayer;
Добавление порта и изменение authType на Secure
2 :
string ldapUrl = "LDAP://myLdapUrl.example:636/ou=user,dc=MyDC";
AuthenticationTypes auth = AuthenticationTypes.Secure;
И я всегда получаю одинаковые результаты.
Я нашел несколько примеров, использующих непосредственно соединения LDAP(из System.DirectoryServices.Protocols
) но я бы предпочел не менять код, так как он уже заработал.
1 Я часто вижу, что некоторые люди утверждают, что я должен изменить LDAP://
на LDAPS:
, но кажется, что это не так, как работает DirectoryServices.И в любом случае это тоже не удается.
2 Я почти уверен, что эти два варианта предназначены для аутентификации, а не для настройки SSL-соединения, но я все равно попробовал их.