Frage

So Das direkte Projekt schlägt wieder zu. Ich bin kein Experte für LDAP, aber ich versuche, eine Testumgebung einzurichten, da für das Standard ein Paket erfordert, um zu unterstützen, Zertifikate von LDAP sowie DNS -CERT zu erhalten, unabhängig davon, welche Methode vom Paket implementiert wird.

Entsprechend die Dokumentation, Die vorgeschriebene Abfolge von Ereignissen (zur Relevanz begegnung) aus Abschnitt "3.3.3 LDAP -Abfrage":

* Discover the Base DNs
     Branches in LDAP must be defined by a “Base DN”. The list of Base DNs that are
     provided by a LDAP directory are found by doing a LDAP Query with a NULL (i.e.
     “”) Base DN, and ObjectClass=”DN”.
* Query across the Base DN for entries where "Mail" contains the endpoint address

Ich versuche, diesen Prozess in PHP zu implementieren, indem ich die Funktionen ldap_* verwendete, aber ihr Weg scheint nicht zu funktionieren. Offensichtlich ist Null nicht mit einer leeren Zeichenfolge dieselbe (letzteres macht einen Aufruf von LDAP_SEARKing zurück, ein "kein solches Objekt" -Fehler zurückzugeben), und "DN" ist kein gültiger Wert für ein ObjectClass -Attribut.

Also, tl; dr, gibt es einen anderen Weg, wie ein anonymer Remote -Benutzer die (Liste der?) Basis -DNs abzurufen, die ich fehlt?

UPDATE: Umformulierte den Titel neu, um die Ursache meines Problems zu widerspiegeln: Lesen Sie die RootDSE von PHP, wenn die LDAP_* -API Sie nicht erlauben, den Bereich "Basis" anzugeben.

War es hilfreich?

Lösung

Ein anderer las die Dokumente durch meine Frage für mich.

Anscheinend sind der einzige Unterschied zwischen ldap_search (), ldap_list () und ldap_read () die Scopes (ldap_scope_subtree (sub), ldap_scope_onelevel (eins) bzw. ldap_scope_base (Base)). Wenn Sie also LDAP_READ () anstelle der anderen verwenden, können Sie die rootDSE erhalten.

Andere Tipps

In dem Wurzel DSE. Siehe "Namingcontexts".

Aktualisieren:

In Java:

LDAPConnection conn = new LDAPConnection(hostname,port);
SearchRequest req = new SearchRequest("",SearchScope.BASE,"(&)","+");
SearchResult result = conn.search(req);

// If the search succeeds, the result will comprise one entry,
// and that entry is the Root DSE:

dn: 
subschemaSubentry: cn=schema
namingContexts: C=us
vendorName: UnboundID Corp.
vendorVersion: UnboundID Directory Server 4.1.0.6
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top