Как подключиться к хранилищу LDAP с VB6 - PullRequest
2 голосов
/ 22 сентября 2008

У меня проблема с 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 ]

3 голосов
/ 22 сентября 2008

Я не уверен, насколько это поможет, но я использую этот код для доступа к объектам 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")
1 голос
/ 13 марта 2009

2 вещи:

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

    "<" & path & "ou=Some/ou=Kindof/o=Searchbase>;(objectclass=*);name;subtree"
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...