通过openDSObject在vbScript中连接到OpenLDAP服务器

通过openDSObject在vbScript中连接到OpenLDAP服务器,vbscript,ldap,openldap,Vbscript,Ldap,Openldap,我有可以正确连接到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:

我有可以正确连接到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)
老实说,在LDAP方面,我有点像n00b,所以我不明白dc vs cn vs ou是什么意思(我知道它们代表组织单位、通用名称等),但我不明白什么时候需要将其附加到查询上

连接到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")
dc=“”
设置oConn=Server.CreateObject(“ADODB.Connection”)
oConn.Provider=“ADSDSOObject”
打开“Ads提供商”、“域\用户名”、“密码”
Dim rs:Set rs=oConn.Execute(;(&(objectCategory=person)(objectClass=user)(sAMAccountName=“&GetLDAPUserName(sPerson)&”);名称、邮件、电话号码;子树)
但是我意识到sAMAccountName是一个特定于广告的东西,因此openLDAP代码需要不同的语法

用户为“ldapuser”,密码为“password”,存储在此处: ou=用户,dc=域,dc=com


连接到LDAP服务器并查询帐户信息的代码是什么?

我终于找到了答案:

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
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、“密码”、&H0200)
Dim oConn:Set oConn=CreateObject(“ADODB.Connection”)
oConn.Provider=“ADSDSOObject”
打开“广告提供商”,sDN,“密码”
暗淡的
设置rs=oConn.Execute(;(uid=“&sUser&”);cn,mail,telephoneNumber;子树)
wscript.echo rs(“cn”).值
wscript.echo rs(“邮件”).value
wscript.echo rs(“电话号码”).值

非常感谢你的代码Michael
我已经对其进行了修改,使用中心OpenLDAP服务器对用户(用户密码)进行了简单的身份验证。以下是适用于我的代码(MSAccess 2003):


您好,您已经指定了具有身份验证的ADS正在工作,我成功地在不指定身份验证详细信息的情况下同步ADS用户。如何指定任何域的身份验证详细信息并获取用户的详细信息。@itsraja我建议您单独提问。
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