Как подключиться к хранилищу LDAP с VB6

У меня проблема с Visual Basic (6) в сочетании с LDAP. Когда я пытаюсь подключиться к хранилищу LDAP, я всегда получаю сообщения об ошибках типа "Плохой путь" или "Таблица не существует" (в зависимости от того, как выглядит код).

Это часть кода, которую я написал для подключения:

path = "LDAP://xx.xxx.xxx.xxx:xxx/"
Logging.WriteToLogFile "Test1", logINFO

Set conn = CreateObject("ADODB.Connection")
conn.Provider = "ADsDSOObject"
conn.Properties("User ID") = "USER_ID"
conn.Properties("Password") = "PASSWORD"
conn.Properties("Encrypt Password") = True
conn.Properties("ADSI Flag") = 34

Logging.WriteToLogFile "Test2", logINFO
conn.Open "Active Directory Provider"
Logging.WriteToLogFile "Test3", logINFO

Set rs = conn.Execute("<" & path & "ou=Some,ou=Kindof,o=Searchbase>;(objectclass=*);name;subtree")

Logging.WriteToLogFile "Test4", logINFO

В файле журнала отображаются "Test1", "Test2", "Test3", а затем "Таблица не существует", поэтому это строка "Set rs = conn.Execute(…)", где все идет не так (довольно очевидно…).

В моем коде я пытаюсь подключиться безопасным способом. Я обнаружил, что это не имеет ничего общего с SSL/ сертификатами, потому что также невозможно установить анонимное незащищенное соединение. Самое смешное: я написал небольшое тестовое приложение в.NET за пять минут. С этим приложением я смог подключиться (анонимно) и прочитать результаты из хранилища LDAP, никаких проблем вообще.

У кого-нибудь есть опыт работы с комбинацией LDAP и VB6 и, возможно, знаете, в чем может быть проблема? Я гуглил и видел несколько примеров кода, но, к сожалению, ни один из них не работал (те же сообщения об ошибках, что и результат). Заранее спасибо!

2 ответа

Я не уверен, насколько это поможет, но я использую этот код для доступа к объектам Active Directory.

   Set oinfo = New ADSystemInfo
    sDomain = Split(oinfo.DomainDNSName, ".")
    '-- Get Datasets from the Active Directory

    '-- Connect to Active Directory in logged in domain
    con.Open "Provider=ADsDSOObject;Encrypt Password=False;Integrated Security=SSPI;Data Source=ADSDSOObject;Mode=Read;Bind Flags=0;ADSI Flag=-2147483648"

    '-- Query all serviceConnectionPoints in the Active Directory 
    '-- that contain the keyword "urn://tavis.net/TM/Database" 
    '--  and return the full path to the object

    Set rst = con.Execute("<LDAP://DC=" & sDomain(0) & ",DC=" & sDomain(1) & ">;(&(objectCategory=serviceConnectionPoint)(keywords=urn://tavis.net/TM/Database));Name, AdsPath;subTree")

2 вещи:

  • Open() вызов метода принимает дополнительные параметры, сервер / имя пользователя / пароль
  • Запрос LDAP, который вы передали Execute() должно быть:

    "<" & path & "ou=Some/ou=Kindof/o=Searchbase>;(objectclass=*);name;subtree"
    
Другие вопросы по тегам