Подключение к серверу OpenLDAP в vbScript через openDSObject - PullRequest
3 голосов
/ 01 апреля 2009

У меня есть код, который работает правильно для подключения к серверу Active Directory:

Dim oDSObj: Set oDSObj = GetObject("LDAP:")
Dim oAuth: Set oAuth = oDSObj.OpenDSObject("LDAP://ldap.domain.com", "DOMAIN\username", "password", 1)

Однако я не могу понять синтаксис, чтобы заставить это работать с сервером OpenLDAP:

Dim oDSObj: Set oDSObj = GetObject("LDAP:")
Dim oAuth: Set oAuth = oDSObj.OpenDSObject("LDAP://ldap.domain.com/ou=Users", "username", "password", 1)

Честно говоря, я немного n00b, когда дело доходит до LDAP, поэтому я не понимаю, что означает dc vs cn vs ou (я знаю, что они означают единицу org, общее имя и т. Д.), Но я не получается, когда вам нужно привязать это к запросам.

Как только я подключаюсь к серверу Active Directory, следующий код запрашивает его:

dc = ""
Set oConn = Server.CreateObject("ADODB.Connection")
oConn.Provider = "ADSDSOObject"
oConn.Open "Ads Provider", "DOMAIN\username", "password"            '
Dim rs: Set rs = oConn.Execute("<LDAP://ldap.domain.com" & dc & ">;(& (objectCategory=person)(objectClass=user)(sAMAccountName=" & GetLDAPUserName(sPerson) & "));name,mail,telephoneNumber;subtree")

Но я понимаю, что sAMAccountName - это особенность AD, поэтому для кода openLDAP потребуется другой синтаксис.

Пользователь 'ldapuser' с паролем 'password', хранится здесь: НУ = Users, DC = домен, DC = COM

Какой код используется для подключения к этому серверу LDAP и запроса информации об учетной записи?

Ответы [ 2 ]

1 голос
/ 13 апреля 2012

Большое спасибо за твой код Майкл.
Я изменил его, чтобы просто аутентифицировать пользователей (пароль пользователя) с помощью центрального сервера OpenLDAP Вот код, который работал для меня (MSAccess 2003):

sUser = "TheUserName"
sDN = "uid=" & sUser & ",o=users,dc=MyDomain,dc=it"
sRoot = "LDAP://MyLDAPServer/o=users,dc=MyDomain,dc=it"

Dim oDS: Set oDS = GetObject("LDAP:")

On Error GoTo AuthError
Dim oAuth: Set oAuth = oDS.OpenDSObject(sRoot, sDN, "ThePassword", &H200)
On Error GoTo 0

MsgBox "Login Successful"
Exit Sub

AuthError:
If Err.Number = -2147023570 Then
    MsgBox "Wrong Username or password !!!"
End If
On Error GoTo 0
1 голос
/ 03 апреля 2009

Я наконец понял:

sUser = "myusername"
sDN = "cn=" & sUser & ",ou=people,dc=company,dc=com"
sRoot = "LDAP://ldapservername.com/dc=company,dc=com"

Dim oDS: Set oDS = GetObject("LDAP:")
Dim oAuth: Set oAuth = oDS.OpenDSObject(sRoot, sDN, "password", &H0200)

Dim oConn: Set oConn = CreateObject("ADODB.Connection")
oConn.Provider = "ADSDSOObject"
oConn.Open "Ads Provider", sDN, "password"

Dim rs
Set rs = oConn.Execute("<" & sRoot & ">;(uid=" & sUser & ");cn,mail,telephoneNumber;subtree")

wscript.echo rs("cn").value
wscript.echo rs("mail").value
wscript.echo rs("telephoneNumber").value
...