Как подключиться к хранилищу 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"