Jump to content
Sign in to follow this  
WeBO

LDAP abfrage in HTA an andere Domäne

Recommended Posts

Hallo Forum.

 

Ich arbeite an einer HTA-Seite, die über LDAP-Abfrage aus dem Active Directory Benutzerinformationen abruft (soll ein Telefonbuch werden :) ). Dabei verwende ich VBScript.

 

Wir haben eine übergeordnete Domäne "abc.de" und eine untergeordnete Domäne "xy.abc.de".

 

Ich habe für beide Domänen jeweils eine HTA-Datei geschrieben, die beide funktionieren. Aber mein Problem ist, sie funktionieren nur so lange man in der Domäne angemeldet ist, die die Datei abfragt. Aber es sollen auch User die Informationen von Usern aus der anderen Domäne abfragen können.

 

Wenn ich in der Domäne angemeldet bin, die ich nicht abfrage, erhalte ich folgenden Fehler: "Eine Referenzauswertung wurde vom Server zurückgesendet", in folgender Zeile:

"objRS.MoveFirst" (die letzte im untenstehenden Code)

 

strDomainDN = "dc=xy,dc=abc,dc=de"

set objCon = CreateObject("ADODB.Connection")
objCon.Provider = "ADsDSOObject;"
objCon.Open "Active Directory Provider"
set objRS = objCon.Execute("<LDAP://" & strDomainDN & ">;" & _	
"(&(objectCategory=Person)(sn=*)(!userAccountControl:1.2.840.113556.1.4.803:=2));" & _
"sn,givenname,department,telephoneNumber,otherTelephone,facsimileTelephoneNumber,mobile,otherPager;subtree" )

objRS.MoveFirst

 

Ich habe es auch schon mit Benutzername und Passwort versucht. Das sah dann folgendermaßen aus:

 

strDomainDN = "dc=xy,dc=abc,dc=de"

set objCon = CreateObject("ADODB.Connection")
objCon.Provider = "ADsDSOObject;"
objCon.Properties("User ID") = "Telefonliste"
objCon.Properties("Password") = "geheim"
objCon.Properties("Encrypt Password") = True
objCon.Open "Active Directory Provider"
set objRS = objCon.Execute("<LDAP://" & strDomainDN & ">;" & _	
"(&(objectCategory=Person)(sn=*)(!userAccountControl:1.2.840.113556.1.4.803:=2));" & _
"sn,givenname,department,telephoneNumber,otherTelephone,facsimileTelephoneNumber,mobile,otherPager;subtree" )

objRS.MoveFirst

 

Das hat aber leider auch nicht funktioniert.

Hat jemand vielleicht eine Idee was man da machen könnte?

MfG WeBO

Share this post


Link to post
Share on other sites

So, habe jetzt eine halbe Lösung. Die funktioniert aber nur, wenn man an der Übergeordneten Domäne "abc.de" angemeldet ist.

 

Set dso = GetObject("LDAP:")
Set ou = dso.OpenDSObject("LDAP://server2.xy.abc.de/ou=abteilung2,dc=xy,dc=abc,dc=de", _ 
                          "benutzer2", "passwort2", 1)

document.write "<font>=========Standort2===============</font><br>"

For Each obj In ou
   document.write "<font>"&obj.name&"</font><br>"
Next


Set dso = GetObject("LDAP:")
Set ou = dso.OpenDSObject("LDAP://server1.abc.de/ou=abteilung1,dc=abc,dc=de", _ 
                          "benutzer1", "passwort1", 1)

document.write "<font>=========Standort1===============</font><br>"

For Each obj In ou
   document.write "<font>"&obj.name&"</font><br>"
Next

 

Ist nicht so schön, da man ein Benutzerlogin der jeweiligen Domäne angeben muss, aber nicht weiter schlimm, da dieses keine Rechte haben muss.

Aber ein großes Problem ist noch, dass die Benutzer aus dem Standort 2 (domäne xy.abc.de) die aus Standort 1 (domäne abc.de) nicht sehen können. Hat jemand vielleicht noch eine Idee?

Share this post


Link to post
Share on other sites

Okay, das funktioniert jetzt auch. Ich habe jetzt einen gleichnamigen User "Telefonliste" mit gleichem Passwort in beiden Domänen erstellt. Wenn ich den dort für beide Domänen angebe funktioniert es.

 

Jetzt habe ich noch das Problem, dass ich nich weis, wie ich bei dieser Verbindungsvariante die Abfrage-Filter setze, so wie ich das bei der Variante in meinem ersten Beitrag gemacht hatte.

 

Hat da vielleicht jemand eine Idee?

MfG WeBO

Share this post


Link to post
Share on other sites

So, um meinen Monolog hier mal abzuschließen und allen zu helfen, die wie ich damit zu kämpfen haben:

 

Abfrage der übergeordneten Domäne (abc.de) mit Filtern:

set objCon = CreateObject("ADODB.Connection")
objCon.Provider = "ADsDSOObject;"
objCon.Properties("User ID") = "abcde\Telefonliste"
objCon.Properties("Password") = "geheim"
objCon.Properties("Encrypt Password") = false
objCon.Open "Active Directory Provider"
set objRS = objCon.Execute("<LDAP://server1.abc.de>;" & _		
"(&(objectCategory=Person)(sn=L*)(!userAccountControl:1.2.840.113556.1.4.803:=2));" & _
"name,sn,givenname,department,telephoneNumber,otherTelephone,facsimileTelephoneNumber,mobile,otherPager;subtree" )

 

Abfrage der untergeordneten Domäne (xy.abc.de) mit Filtern:

set objCon = CreateObject("ADODB.Connection")
objCon.Provider = "ADsDSOObject;"
objCon.Properties("User ID") = "xyabcde\Telefonliste"
objCon.Properties("Password") = "geheim"
objCon.Properties("Encrypt Password") = false
objCon.Open "Active Directory Provider"
set objRS = objCon.Execute("<LDAP://server2.xy.abc.de>;" & _		
"(&(objectCategory=Person)(sn=L*)(!userAccountControl:1.2.840.113556.1.4.803:=2));" & _
"name,sn,givenname,department,telephoneNumber,otherTelephone,facsimileTelephoneNumber,mobile,otherPager;subtree" )

 

Und ich habe es sogar geschafft, über den Port 3268 beide Domänen abzufragen:

set objCon = CreateObject("ADODB.Connection")
objCon.Provider = "ADsDSOObject;"
objCon.Properties("User ID") = "abcde\Telefonliste"
objCon.Properties("Password") = "geheim"
objCon.Properties("Encrypt Password") = false
objCon.Open "Active Directory Provider"
set objRS = objCon.Execute("<LDAP://server1.abc.de:3268>;" & _	
"(&(objectCategory=Person)(sn=L*)(!userAccountControl:1.2.840.113556.1.4.803:=2));" & _
"name,sn,givenname,department,telephoneNumber,otherTelephone,facsimileTelephoneNumber,mobile,otherPager;subtree" )

 

Bei der ganzen Sache ist "Telefonliste" ein einfaches Konto mit Benutzerrechten, dass in der Übergeordneten Domäne und in der untergeordneten identisch mit gleichem Passwort existieren muss.

vielleicht hilft es ja jemandem,

MfG WeBO

Share this post


Link to post
Share on other sites
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte überlege Dir, ob es nicht sinnvoller ist ein neues Thema zu erstellen.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

Werbepartner:



×
×
  • Create New...