2009-03-31 11 views
3

J'ai le code qui fonctionne correctement pour se connecter à un serveur Active Directory:Connexion au serveur OpenLDAP VBscript via OpenDsObject

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

Cependant, je ne peux pas sembler comprendre la syntaxe pour faire ce travail contre un OpenLDAP serveur:

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

pour être honnête, je suis un peu d'un n00b quand il vient à LDAP, donc je ne comprends pas ce que dc vs cn vs moyen OU (je sais qu'ils se tiennent pour l'unité org, nom commun etc) mais je ne comprends pas quand vous avez besoin de virer les requêtes.

Une fois que je me connecte au serveur Active Directory, le code suivant interroge:

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") 

Mais je me rends compte que sAMAccountName est une chose spécifique AD, de sorte que le code openLDAP aura besoin d'une syntaxe différente.

L'utilisateur est 'ldapuser' avec un mot de passe de 'mot de passe', stocké ici: ou = utilisateurs, dc = domain, dc = com

Quel est le code pour se connecter à ce serveur LDAP et requête pour informations de compte?

+0

Salut, U ont spécifié ADS avec l'authentification fonctionne, j'ai réussi à synchroniser les utilisateurs ADS sans spécifier les détails d'authentification. Comment spécifier les détails d'authentification de n'importe quel domaine et obtenir les détails d'un utilisateur. – itsraja

+0

@itsraja Je vous suggère de poser votre question séparément comme sa propre question individuelle. –

Répondre

1

Je fini par comprendre:

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 
1

Thanx beaucoup pour votre code Michael.
Je l'ai modifié pour simplement authentifier les utilisateurs (mot de passe utilisateur) en utilisant le serveur OpenLDAP central. Voici le code qui a fonctionné pour moi (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