Ergebnis 1 bis 14 von 14

Thema: LDAP und Typolight

  1. #1
    Gesperrt
    Registriert seit
    09.07.2009.
    Beiträge
    30

    Standard LDAP und Typolight

    Hallo liebe Community,

    ich möchte ganz gerne einen "LDAP-Server" zur Authentifizierung von Typolight nutzen und habe schon diesbezüglich gegoogelt. Ferner habe ich unter dieser Seite erfahren, dass man den vorherigen Hook einfach "in die Datei system/libraries/User.php in die Zeile 155" anfügen muss. Also im Prinzip wäre ja das Problem gelöst und ich müsste auch schon wissen, wie es funktioniert, doch ich verstehe noch nicht so ganz, wo denn die LDAP-Zugangsdaten gespeichert werden, um benutzt werden zu könnnen.
    An sich funktioniert der ldap_bind Befehl ja mit $ldapbind = ldap_bind($ldapconn, $ldaprdn, $ldappass);?? Oder nicht?

    Ich danke Euch schonmal für die Antworten und tut mir Leid bezüglich des verwirrenden Posts

    Gruß, walle

  2. #2
    Contao Core-Team
    Association Vorstand
    Avatar von andreas.schempp
    Registriert seit
    15.06.2009.
    Ort
    Lyss
    Beiträge
    5.613
    Partner-ID
    8667
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Hallo walle,

    Für die LDAP-Anbindung brauchst du eine Erweiterung, welche noch nicht existiert

    Die "fremde" Authentifizierung ist in TYPOlight vorgesehen, aber noch keine mir bekannte Erweiterung verwendet diese. Ohne Entwicklung wirst du da nicht weiter kommen.
    terminal42 gmbh
    Wir sind Contao Premium-Partner! Für Modulwünsche oder Programmierungen kannst du uns gerne kontaktieren.
    Hilfe für Isotope eCommerce kann man auch kaufen: Isotope Circle

  3. #3
    Gesperrt
    Registriert seit
    09.07.2009.
    Beiträge
    30

    Standard

    Also bringt das an sich gar nix? Na ja, dann muss ich das halt selbst machen - mal gucken, ob ich schnell hinkriege
    Danke dir schonmal.....

  4. #4
    Gesperrt
    Registriert seit
    09.07.2009.
    Beiträge
    30

    Standard

    Mal so eine generelle Frage => lohnt es sich eher das Login-Modul zu editieren, oder soll man etwas komplett Eigenes auf die Beine stellen??
    Soweit ich die Stelle richtig gefunden habe, wir hier der Nutzer "offiziell" angemeldet:
    PHP-Code:
    // Login and redirect
    if ($this->User->login())
    {
        
    // HOOK: post login callback
        
    if (isset($GLOBALS['TL_HOOKS']['postLogin']) && is_array($GLOBALS['TL_HOOKS']['postLogin']))
        {
            foreach (
    $GLOBALS['TL_HOOKS']['postLogin'] as $callback)
            {
                
    $this->import($callback[0]);
                
    $this->$callback[0]->$callback[1]($this->User);
            }
        }

        
    $this->redirect($strRedirect);

    Nun soll ich vll einfach mal drum rum das LDAP-Login einbauen? Quasi wenn dieser erfolgreich war, dann wird das da ausgeführt?? Denn im Mom weiß ich noch nicht recht, wie ich das anstellen soll - rein vom Loginschen. Danke euch!

    P.S. Kann mir einer mal die Aufgabe der beiden Zuweisungen in der Schleife mal erklären??

  5. #5
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.513
    User beschenken
    Wunschliste

    Standard

    zu deiner Schleifenfrage.
    So ein Hook registriert sich mit einem Array als Paramerter, "Klasse, Methode"
    Die erste Zeile nimmt nun das 0. Element aus dem Array und importiert somit die Klasse.
    Die nächste Zeile ruft dann die Methode (1. Element) in diese Klasse auf, und übergibt hier noch den User als Parameter.
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  6. #6
    Contao-Nutzer
    Registriert seit
    16.07.2009.
    Beiträge
    7

    Standard

    Hallo,

    ich hätte da was ...

    Wir haben vor einiger Zeit ein eigenes LDAP-Modul erstellt, das ich aber noch nicht als ausgereift ansehe, daher wurde es auch noch nicht veröffentlicht. Aber vielleicht könnt ihr mir ja ein wenig Feedback geben, so dass es doch noch ins Repository kommt.

    Ich habe es mal angefügt. Es ist ein Standardmodul, also den enthaltenen Ordner "ldap" einfach in system/modules kopieren. Dann tut es schon seinen Dienst. Weitere Modifikationen am System sind nicht erforderlich. Hierbei möchte ich mich nochmals herzlich für die Hooks "checkCredentials" (war ja ein langer Weg bis ins System!) und "importUser" bedanken, die hier verwendet werden.

    Die Konfiguration nistet sich in den Einstellungen im Backend ein (LDAP-Authentifizierung/Benutzerimport vom LDAP-Server). Das neue zusammenklappbare Layout ist auch bereits eingearbeitet, also bitte erst ab Version 2.7.0 verwenden.

    Die Funktionsweise:
    Wenn in den Einstellungen Authentifizierung bzw. Import aktiviert wurde und die entsprechenden Serverangaben hinterlegt sind, wird bei einem Login zuerst geprüft, ob der Benutzer/das Mitglied in der Typolight-Datenbank vorhanden ist und sein Passwort übereinstimmt. Ist er vorhanden, das Passwort stimmt aber nicht, wird versucht, auf dem LDAP-Server mit dem angegebenen Loginnamen und Passwort einen Bind durchzuführen. Ist der Bind erfolgreich, wird das Login freigegeben.
    Wenn das (zukünftige) Mitglied nicht in der Typolight-Datenbank existiert, werden vom LDAP-Server relevante Daten ausgelesen (z. B. Vorname, Nachname) und es wird in der Typolight-Datanbank angelegt. Das erfolgt nicht für Benutzer, da redakteure nur vom Administrator angelegt werden sollen (könnte als konfigurierbar noch mit eingearbeitet werden). Eine E-Mail wird an den Administrator geschickt und im Systemlog wird das Neuanlegen des Mitglieds protokolliert. Als Passwort wird die Variable time() gesetzt. Wenn sich der Benutzer/das Mitglied später wieder anmeldet, weiß er natürlich nicht, welches Passwort in der Typolight-Datenbank existiert. Das braucht er aber auch nicht, da er ja sein LDAP-Passwort eingibt und das dann dort geprüft wird.
    Der Mitgliederimport ist erforderlich, um dem Mitglied Rechte im System zuweisen zu können.

    Für das Testen des beigelegten Beispiels ist die Installation der Module recall und helpdesk erforderlich.

    Offenes/Probleme:

    Welche Daten vom LDAP-Server importiert werden, ist momentan noch hardcodiert hinterlegt (im beigelegten Beispiel: firstname, lastname, login, username, password -> time(), email, language, helpdeskshowrealname, company, allowEmail, recall).
    Wenn das Mitglied einmal angelegt ist, erfolgt kein weiterer Abgleich der Daten mit dem LDAP (z. B. geänderte E-Mail-Adresse).
    Eine Zuweisung von Rechten (Mitgliedergruppen) für das Mitglied muss händig vom Administrator vorgenommen werden, sie erfolgt nicht automatisch. Er erhält nach dem Import nur den Status eines "eingeloggten Benutzers".
    Großes Problem: Aus einem mir unerfindlichen Grund werden bestimmte Zeichen im Passwort nicht verstanden (z. B. das Pluszeichen, der Bindestrich o.ä.). Aber Umlaute werden akzeptiert. Das bedeutet, wenn ein Benutzer ein Pluszeichen im Passwort verwendet, wird die Authentifizierung abgelehnt. Habe schon auf UTF-8 usw. geprüft, aber keinen Lösungsansatz gefunden. Vielleicht habt ihr eine Idee.

    Ansonsten kann man mit dem Modul durchaus schon arbeiten, ggf. eigene Anpassungen und Toleranz gegenüber dem Passwortproblem vorausgesetzt.

    Na ja, vielleicht hilfts als Anregung weiter ...
    Angehängte Dateien Angehängte Dateien

  7. #7
    Gesperrt
    Registriert seit
    09.07.2009.
    Beiträge
    30

    Standard

    Danke dir blamu für eine so ausführliche Antwort; ich werde aber weiterhin an einem eigenen Script/Modul arbeiten, da ich auch wissen will, wie wo was gemacht wird
    Dabei bin ich jedoch auf ein Problem gestoßen: Wie kann ich einen User einloggen, bzw. ausloggen? In der ModuleLogin wird es ja folgendermaßen definiert ($this->User->login()) ... Aber ich will ja den User nur mit den Daten vom LDAP-Server authentifizieren und nicht mithilfe von definierten Werten der tl_users.
    Ich will dann an sich einen folgenden Ablauf haben:
    * User gibt Daten ein
    * LDAP-Connection => Werte werden verglichen
    WENN keine Übereinstimmung
    *** Fehlermeldung ausgeben
    WENN Übereinstimmung
    * Verbindung zu MySQL (tl_users) und Überprüfung, ob Username vorhanden
    * Wenn nicht, dann wird ein Neuer eingefügt
    * User wird eingeloggt

    Ich danke euch schonmal

  8. #8
    Contao-Nutzer
    Registriert seit
    16.07.2009.
    Beiträge
    7

    Standard

    Das Login erfolgt über den CheckCredentials-Hook (http://de.contaowiki.org/Development...eckCredentials), den ich auch in meinem Modul benutzt habe.

    Damit werden Passwort und Benutzername an ein frei von dir definierbares Skript weitergegeben, das am Ende ein true oder false zurückgibt. So kannst du auf beliebige Datenbanken prüfen und beliebige Prüfmechanismen erstellen. Je nach Rückgabewert loggt dich das System dann ein oder nicht.

    Am Login musst du also selber gar nichts tun, diese Mechanik ist bereits im Kern von typolight enthalten. Du musst nur die Grundregeln der Modulprogrammierung berücksichtigen (also: Hook aktivieren usw.).

    Beispiel für ein LDAP-Skript:

    PHP-Code:
    public function checkCredentials($strUsername,$strPassword) {
        
    $ldaphost DeinLDAPHost;
        
    $ldapport DeinLDAPPort;
        
    $ldapdomain DeineLDAPDomain;
        
    $ds ldap_connect($ldaphost$ldapport) or die("Could not connect to $ldaphost");
        if (
    $ds) {
            
    $binddn $strUsername."@".$ldapdomain;
            
    $ldapbind = @ldap_bind($ds$binddnutf8_decode($strPassword));
            if (
    $ldapbind) return true;
            else return 
    false;
            
    ldap_close($ds);
        }
     } 

  9. #9
    Gesperrt
    Registriert seit
    09.07.2009.
    Beiträge
    30

    Standard

    Ich will es ja aber nicht von der MySQL-DB abhängig machen, sondern vom LDAP-Server, d.h., dass die Person erst bei TYPOlight eingeloggt werden muss, wenn die LDAP-Authetifizierung erfolgt ist ... Oder stehe ich hier gerade aufm Schlauch??

  10. #10
    Gesperrt
    Registriert seit
    09.07.2009.
    Beiträge
    30

    Standard

    Denkfehler - ich habe nun eine Idee, wie ich das machen werde

  11. #11
    Contao-Nutzer
    Registriert seit
    05.10.2009.
    Beiträge
    4

    Frage

    Hi walle,

    hast dus schon hinbekommen ? Wenn ja konntest du mir sagen wie? Davon würd ich nämlich auch profitieren mit meinem WebLookOn Modul .. mach sowas
    ähnliches.

    Vielen Vielen Dank schon mal im vorhinaus

    greez Roland

  12. #12
    Contao-Nutzer
    Registriert seit
    13.04.2010.
    Beiträge
    5

    Standard

    Hi,

    gibt es diese Modul schon für tl 2.8.2?
    Ich brauch nämlich eine ldap Anmeldung für unser Intranet...

    Wäre toll wenn jemand helfen könnte...

    Gruß Sascha

  13. #13
    Contao-Nutzer
    Registriert seit
    20.06.2009.
    Ort
    Rheinbach
    Beiträge
    86

    Standard

    Hallo @All,

    gibt es schon was neues zum LDAP Modul mich würde es auch sehr interessieren.

    Danke

  14. #14
    Contao-Fan Avatar von webster
    Registriert seit
    14.09.2010.
    Ort
    Kiel
    Beiträge
    460

    Standard

    Hat jemand eine Idee wie ich Folgendes realisieren kann:

    Per Cronjob sollen alle Benutzer aus einem Windows 2008 Server AD in Contao als Mitglieder importiert werden. Gleichzeitig sollen diese Nutzer sich dann am Frontend von Contao mit ihren AD Zugangsdaten anmelden. Das funktioniert schon alles so weit. Mein einziges Problem besteht in der Speicherung der Zugangsdaten für den Import der Daten aus dem AD.

    Ich habe wie im oben erwähnten Modul neue Felder für die Contao Einstellungen angelegt:
    • AD-Host
    • AD-Port
    • AD-Domäne
    • AD-User
    • AD-Passwort


    Diese Felder werden ja bekanntlich in der localconfig.php abgelegt. Das ist beim Benutzernamen (AD-User) ja nicht das Problem, nur das Passwort wird zur Zeit noch im Klartext angelegt - und das finde ich bedenklich.
    Nutze ich für die Feldkonfiguration jedoch als input-type: password, so wird das Passwort verschlüsselt abgelegt.
    Nur: ich kann es natürlich nicht wieder entschlüsseln, da SHA1+salted ja eine Einweg-Verschlüsselung darstellt. Somit ist der String für mich unbrauchbar...
    Ich stehe gerade echt auf dem Schlauch - hat jemand vielleicht eine Idee, wie ich das Passwort verschlüsselt abspeichern kann und es auch wieder entschlüsselt bekomme, um den Import durchzuführen?

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Ähnliche Themen

  1. Design-Buch zu Contao: Mit Contao Webseiten erfolgreich gestalten
    Von Nina im Forum Ankündigungen/Hinweise
    Antworten: 94
    Letzter Beitrag: 06.05.2014, 14:38
  2. 2.7.5 mit LDAP
    Von walle im Forum Sonstiges zu Contao
    Antworten: 4
    Letzter Beitrag: 28.10.2009, 10:45

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •