Ankündigung

Einklappen
Keine Ankündigung bisher.

LDAP auslesen via PHP ?

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • LDAP auslesen via PHP ?

    Hallo ich habe folgendes Problem. Ich versuche via PHP auf das LDAP-Verzeichnis einer Firma zu zugreifen, aber bekomme mit dem folgen Code immer wieder nur "0 Einträge vorhanden", obwohl dieser existiert.

    Er erstellt eine Verbindung zum Server und meldet sich erfolgreich als anonymous, welcher Leserechte hat.

    Frage:
    Habe ich beim Basepath was falsch festgesetzt?
    Wo sonst könnte der Fehler liegen?

    PS: Habe im Inet auch noch Einträge gesehen, die dann c=<user> etc. bloß eintragen und dann im Anschliessenden Array noch die ganzen anderen "Variablen" nennen. (auch getestet, leider erfolglos)

    Code:
    <?php
    $ds=ldap_connect("LDAP://<server>"); 
       echo "Ergebnis der Verbindung: ".$ds."
    
    ";
    
    if ($ds) {
       echo "Bindung ...";
       $r=ldap_bind( $ds ); 
    
       echo "Ergebnis der Bindung ".$r."
    
    ";
    
    //   $suche = "(&(objectClass=*)(objectCategory=*)(cn=<user>))";
       $suche = "CN=<user>";
       $base = "Ou=Stadt,DC=<stadt>,DC=dom";
       $justthese = array( "OU" , "CN" , "DC" );
    
       echo "Suche nach (".$suche.") ...
    
    ";
    
       $sr=ldap_search( $ds , $base , $suche , $justthese );
       echo "Ergebnis der Suche ".$sr."
    
    ";
    
       echo "Anzahl gefundenen Einträge ".ldap_count_entries($ds,$sr)."
    
    ";
    
       echo "Einträge holen ...
    
    ";
       $info = ldap_get_entries($ds, $sr);
       echo "Daten für ".$info["count"]." Items gefunden:
    
    ";
       for ($i=0; $i<$info["count"]; $i++) {
           echo "dn ist: ". $info[$i]["dn"] ."
    ";
           echo "erster cn Eintrag: ". $info[$i]["cn"][0] ."
    ";
           echo "erster email Eintrag: ". $info[$i]["mail"][0] ."
    
    ";
           echo "Telefonnummer: ". $info[$i]["telephonenumber"][0]."
    
    ";
       }
    
       echo "Verbindung schließen";
       ldap_close($ds);
    
    } else {
       echo "<h4>Verbindung zum LDAP Server nicht möglich</h4>";
    }
    ?>
    Danke für eure Bemühungen

    MfG Noob


  • #2
    Also ich hab einen LDAP Zugriff mit folgendem Code realisiert. Funktioniert perfekt:

    Code:
    <?
        $def_host = "www.ldap.de:23311";
        // Base-DN des LDAP-Baums
        $base_dn = "o=LDAP";
        // Username zur Authentifizierung
        $def_user = $user;
        // das dazugehrige Passwort
        $def_pass = $pass;
    
        if (($conn_id = ldap_connect ($def_host)) == false)
        {
          print("Fehler: Authentisierung fehlgeschlagen. (1)
    ");
          //print "Fehler: Verbindung zum LDAP-Server konnte nicht hergestellt werden.
    ";
          return false;
        };
        // User-DN für den Benutzer  ermitteln
        if (($res_id = ldap_search ($conn_id, $base_dn, "uid=$def_user")) == false)
        {
          print("Fehler: Authentisierung fehlgeschlagen. (2)
    ");
          //print "Fehler: Suche im LDAP-Baum fehlgeschlagen
    ";
          return false;
        };
        if (ldap_count_entries($conn_id, $res_id) != 1)
        {
          print("Fehler: Authentisierung fehlgeschlagen. (3)
    ");
          //print "Fehler: Username $username mehr als einmal gefunden
    ";
          return false;
        };
        if (( $entry_id = ldap_first_entry($conn_id, $res_id))== false)
        {
          print("Fehler: Authentisierung fehlgeschlagen. (4)
    ");
          //print "Fehler: Eintrag des Suchergenisses konnte nicht abgeholt werden
    ";
          return false;
        };
        if (( $user_dn = ldap_get_dn($conn_id, $entry_id)) == false)
        {
          print("Fehler: Authentisierung fehlgeschlagen. (5)
    ");
          //print "Fehler: Der User-DN konnte nicht ermittelt werden
    ";
          return false;
        };
        // Authentifizierung des User
        if ((@$link_id = ldap_bind ($conn_id, $user_dn, $def_pass)) == false)
        {
          // auth failed = good
          header("location:https://$servername/$zielpfad");
          return false;
        }
        else
        {
          // auth ok = bad
          print("Fehler: Authentisierung fehlgeschlagen. (6)
    ");
        };
    }
    [/code]

    Kommentar


    • #3
      Danke, für die Antwort, habe den Fehler gefunden, es lag nicht am Script, sondern am LDAP-Verzeichnis selber. Als anonymous hatte ich keine leserechte ....

      Jedenfalls gibt es jetzt auch einen EIntrag zu LDAP in diesem Forum

      MfG Noob

      Kommentar

      Lädt...
      X