+ Antworten
Ergebnis 1 bis 9 von 9
  1. #1
    Registriert seit
    Mar 2010
    Ort
    Idstein
    Beiträge
    411

    Standard LDAP in IPS integrieren

    Hi ...

    ... ich brauch mal die PHP Spezialisten unter euch ... ich würde gerne Daten aus einem ActiveDirectory auslesen und in IPS integrieren. Im PHP-Manual habe ich gesehen, dass das grundsätzlich möglich ist. Nun bin ich zwar mittlerweile im Scripting relativ Fit, bräuchte aber mal einen kleinen Tipp von euch (vielleicht kurze Step-by-Step-Anleitung), wie ich LDAP in PHP / IPS integrieren kann ...

    Vielen Dank im voraus ...
    ... Squeeezer

    IP-Symcon 4.0 Unlimited, HomeMatic CCU2 ~ 120 Sensoren/Aktoren Radio/Wired), FS20/HMS (FHZ1300 ~ 30 Sensoren/Aktoren), IPS-868, IR-Trans, FritzBox! 6360, Kodi Mediacenter, Yamaha RX-V675, Viessmann OpenV

  2. #2
    Registriert seit
    May 2005
    Beiträge
    2,304

    kurz:
    1. Die PHP-Ldap Extension php_ldap.dll (für IPS 2.3 in Version 5.3.1 !) downloaden
    2. ins $IPS/ext-Verzeichnis kopieren,
    3. IPS neu starten
    4. diese Befehle benutzen.
    Tommi

  3. #3
    Registriert seit
    Mar 2010
    Ort
    Idstein
    Beiträge
    411

    Sooo einfach?

    Das hier hat mich total abgeschreckt:

    Installation

    LDAP Unterstützung ist in PHP im Standard nicht aktiviert. Sie müssen die Konfigurationsoption --with-ldap[=DIR] beim Übersetzen von PHP angeben. DIR bezeichnet LDAP Installationsverzeichnis. Um zusätzlich SASL Unterstützung zu aktivieren müssen Sie die --with-ldap-sasl[=DIR] Konfigurationsoption hinzufügen und sicherstellen das die Datei sasl.h auf Ihrem System vorhanden ist.

    Hinweis: Hinweis für Win32 Benutzer
    Diese Extension benötigt DLL-Dateien. die für Windows verfügbar seien müssen. Der FAQ-Eintrag " Wie füge ich unter Windows PATH mein PHP-Verzeichnis hinzu?" gibt hierzu weitere Informationen. Obwohl ein einfaches Kopieren der DLL-Dateien vom PHP-Verzeichnis in den Windows-Systemordner auch funktioniert (weil der Systemordner immer im PATH enthalten ist), ist dieses Vorgehen nicht empfehlenswert. Diese Extension benötigt die folgenden Dateien im PATH: libeay32.dll und ssleay32.dll
    Vor PHP 4.3.0 wird zusätzlich libsasl.dll benötigt.
    Wenn Sie die Oracle LDAP Bibliotheken nutzen wollen müssen Sie sicherstellen das eine gültige Oracle Umgebung aufgesetzt ist.
    ... danke Tommi für deine Hilfe ...
    ... Squeeezer

    IP-Symcon 4.0 Unlimited, HomeMatic CCU2 ~ 120 Sensoren/Aktoren Radio/Wired), FS20/HMS (FHZ1300 ~ 30 Sensoren/Aktoren), IPS-868, IR-Trans, FritzBox! 6360, Kodi Mediacenter, Yamaha RX-V675, Viessmann OpenV

  4. #4
    Registriert seit
    Mar 2010
    Ort
    Idstein
    Beiträge
    411

    ... und dann gleich mal ein Script, um z.B. alle Benutzerobjekte aus einer Organisationseinheit auszulesen und in ein Array zu schreiben:

    PHP-Code:
    <?
     
    //Variablen
     
    $server "172.16.1.20";  //DC
     
    $username "user@domain.local";  //UPN
     
    $password "password";  //Passwort
     
    $baseDN "ou=Benutzer,dc=domain,dc=local";  //Distinguished-Name der obersten OU
     //LDAP-Verbindung mit Server herstellen
       
    $ldap ldap_connect($server);
     
       
    ldap_set_option($ldapLDAP_OPT_PROTOCOL_VERSION3);
     
    ldap_set_option($ldapLDAP_OPT_REFERRALS0);
     
    //Bindung auf Verzeichnis
       
    if (ldap_bind($ldap$username$password))
       {
          
    //Suche starten
      
    $search ldap_search($ldap,$baseDN,"(|(objectClass=user))");
      
    $anzahl ldap_count_entries($ldap,$search);
      
    //Suchergebnis in $info schreiben
      
    $info ldap_get_entries($ldap,$search);
      
    //Ergebnis in Array schreiben
      
    for($i=0$i<$anzahl$i++)
      {
         
    $ergebnis[$i]["objectclass"] = $info[$i]["objectclass"][3];
         
    $ergebnis[$i]["displayname"] = utf8_decode($info[$i]["displayname"][0]);
         
    $ergebnis[$i]["givenname"] = utf8_decode($info[$i]["givenname"][0]);
         
    $ergebnis[$i]["sn"] = utf8_decode($info[$i]["sn"][0]);
          
    $ergebnis[$i]["mail"] = $info[$i]["mail"][0];
         
    $ergebnis[$i]["telephonenumber"] = $info[$i]["telephonenumber"][0];
         print(
    $ergebnis[$i]["objectclass"]."\n".$ergebnis[$i]["givenname"]."\n".$ergebnis[$i]["sn"]."\n\n");
      }
       }
    ?>
    Geändert von squeeezer (10.11.10 um 23:38 Uhr)
    ... Squeeezer

    IP-Symcon 4.0 Unlimited, HomeMatic CCU2 ~ 120 Sensoren/Aktoren Radio/Wired), FS20/HMS (FHZ1300 ~ 30 Sensoren/Aktoren), IPS-868, IR-Trans, FritzBox! 6360, Kodi Mediacenter, Yamaha RX-V675, Viessmann OpenV

  5. #5
    Registriert seit
    May 2005
    Beiträge
    2,304

    Sooo einfach?
    In dem Fall und auch nur unter Windows schon. Die benötigten SSL-DLLs sind bei IPS schon enthalten, die Extension selbst gibt's vorkompiliert. Wer sich das PHP-Ldap incl. aller Dependencies selber bauen muss, hat "deutlich mehr Spass".

    Tommi

  6. #6
    Registriert seit
    Mar 2010
    Ort
    Idstein
    Beiträge
    411

    Aaah ... und ich dachte, PHP unter Windows ist GERADE ein Problem ... schön, dann bin ich doch nicht so blöd

    danke noch mal, tommi ...
    ... Squeeezer

    IP-Symcon 4.0 Unlimited, HomeMatic CCU2 ~ 120 Sensoren/Aktoren Radio/Wired), FS20/HMS (FHZ1300 ~ 30 Sensoren/Aktoren), IPS-868, IR-Trans, FritzBox! 6360, Kodi Mediacenter, Yamaha RX-V675, Viessmann OpenV

  7. #7
    Registriert seit
    Mar 2010
    Ort
    S-H
    Beiträge
    629

    Tach zusammen,

    muss das noch mal herauskramen. Weil ich mir - als Ziel - alle IPs meiner Rechner herauskramen möchte (nutze den DHCP vom W2k8R2-Server), wollte ich mit squeeezer`s Script beginnen, mich an das AD zu koppel. Leider endet das Script (an meine Umgebung angepasst) mit der Meldung

    Code:
    Fatal error:  Call to undefined function ldap_connect() in C:\IP-Symcon\scripts\20896.ips.php on line 8
    Die php_ldap.dll ist im ext-Ordner, IPS mehrfach neu gestartet. Auch soeben geupdatet, ohne Änderungen bzw. Ausnahmen zu machen.

    Gibt es diese Funktion nicht in dem php von IPS?

    EDIT: auch das Hinzufügen der php_ldap.dll in der php.ini und anschließender Diensteneustart bringt nichts. Die eingefügte Zeile ist danach sogar wieder raus. Hier meine php.ini:

    Code:
    [PHP]
    max_execution_time=30
    register_globals=off
    error_reporting=E_ALL
    extension_dir="C:\IP-Symcon\ext"
    memory_limit=32M
    auto_prepend_file="C:\IP-Symcon\scripts\__autoinclude.inc.php"
    extension = php_bz2.dll
    extension = php_curl.dll
    extension = php_exif.dll
    extension = php_fileinfo.dll
    extension = php_gd2.dll
    extension = php_gettext.dll
    extension = php_imap.dll
    extension = php_mbstring.dll
    extension = php_mysql.dll
    extension = php_mysqli.dll
    extension = php_pdo_mysql.dll
    extension = php_pdo_odbc.dll
    extension = php_pdo_pgsql.dll
    extension = php_pdo_sqlite.dll
    extension = php_pgsql.dll
    extension = php_soap.dll
    extension = php_sockets.dll
    extension = php_sqlite3.dll
    extension = php_tidy.dll
    extension = php_xmlrpc.dll
    extension = php_xsl.dll
    [DATE]
    date.timezone="Europe/Berlin"
    Geändert von hrahlers (16.07.13 um 20:52 Uhr)
    Gruß Andreas.
    -----------------------------------------------------------------
    IP-Symcon 5.3, Windows x64, 28.11.2019, 321402ec4fe0 - virt. W2k8 R2, CCU2, HM-Funk-und Wired-Komponenten, Tasmota-Geräte, FB7390 (Telefonie), 1-wire-Temp.fühler, Pokeys, RPi, Sophos-UTM, Ubiquiti-APs

  8. #8
    Registriert seit
    Feb 2005
    Ort
    Lübeck
    Beiträge
    22,546

    Schau mal in die Logdatei... Dort steht bestimmt, dass noch weitere DLLs fehlen.

    paresy

  9. #9
    Registriert seit
    Mar 2010
    Ort
    S-H
    Beiträge
    629

    Ja, da stimmt. Weil sie nicht zur PHP-Version 5.4.8, sondern zu PHP 5.3.1 gehören. Aber das IPS-Update sollte das doch merken und aktualisieren? Im Momet scheine ich IPS 3.0 bekommen zu haben. Woher bekomme ich denn die passenden Extensions?

    Weiter zu LDAP:

    Code:
    16.07.2013 22:11:30.753 |     0 | MESSAGE | ScriptEngine         | >Erweiterung php_ldap.dll nicht geladen. Fehlende Abhängigkeit: libsasl.dll
    Die libsasl.dll hat lt. einer großen Suchmaschine wohl was mit SSL zu tun.


    ------------------------------
    FERTIG!

    Fehlende Extensions für die jeweilige php-Version habe ich hier gefunden (http://www.google.de/url?sa=t&rct=j&...,d.ZWU&cad=rja).

    Dann die php_ldap.dll ins ext-Verzeichnis, die libsasl.dll in C:\IP-Symcon kopiert, Dienst neugestartet. Alles gut nach ein paar Stunden Suche und Verzweifelung. Diese DLLs werden leider nicht von IPS mitgeliefert. Schade eigentlich! Könnten doch beim Update zumindest mir angeboten (anhakbar) werden.
    Geändert von hrahlers (18.07.13 um 23:45 Uhr)
    Gruß Andreas.
    -----------------------------------------------------------------
    IP-Symcon 5.3, Windows x64, 28.11.2019, 321402ec4fe0 - virt. W2k8 R2, CCU2, HM-Funk-und Wired-Komponenten, Tasmota-Geräte, FB7390 (Telefonie), 1-wire-Temp.fühler, Pokeys, RPi, Sophos-UTM, Ubiquiti-APs

Ähnliche Themen

  1. Newbie hat eine Frage! Mail per IPS?
    Von Xanon im Forum Allgemeine Diskussion
    Antworten: 7
    Letzter Beitrag: 14.10.10, 18:40
  2. IPS 2. Anlauf Installationsprobleme
    Von edison im Forum Allgemeine Diskussion (2.x/3.x)
    Antworten: 2
    Letzter Beitrag: 03.09.10, 13:07
  3. USV (Trust) in IPS 2.0 integrieren
    Von roadsterhh im Forum Allgemeine Diskussion (2.x/3.x)
    Antworten: 1
    Letzter Beitrag: 17.03.09, 18:20
  4. IPS hängt sich auf nach SSL aktivieren
    Von pleibling im Forum Allgemeine Diskussion (2.x/3.x)
    Antworten: 2
    Letzter Beitrag: 26.10.08, 20:18