Jump to content

LDAP abfrage in HTA an andere Domäne


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

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

Link zu diesem Kommentar

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?

Link zu diesem Kommentar

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

Link zu diesem Kommentar

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

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...