Ergebnis 1 bis 24 von 24

Thema: Contao-Frontend-Anmeldung nach Dokuwiki durchreichen?

  1. #1
    Contao-Nutzer
    Registriert seit
    09.12.2012.
    Beiträge
    96

    Frage Contao-Frontend-Anmeldung nach Dokuwiki durchreichen?

    Hallo zusammen,

    kennt jemand eine Möglichkeit, eine Frontend-Anmeldung von Contao 3.x an eine Dokuwiki-Installation durchzureichen? Ziel ist es, eine passwortgeschützte Contao-Site um einen Menüpunkt "Wiki" zu erweitern, die ein auf demselben Webspace parallel installiertes Dokuwiki aufruft, das ebenfalls nur per Anmeldung zugänglich ist, und dabei den Benutzernamen und das Passwort direkt durchreicht, so dass keine zweite Anmeldung notwendig ist. Single Sign-on also. Im Forum hier habe ich dazu nichts gefunden. Ist sowas mit einfachen Mitteln hinzukriegen oder muss man da tief in den Eingeweiden des Contao- bzw. Dokuwiki-Sourcecodes herumwühlen?

    Danke.

  2. #2
    Contao-Urgestein
    Registriert seit
    03.06.2010.
    Ort
    Wuppertal
    Beiträge
    2.149
    User beschenken
    Wunschliste

    Standard

    Brauchst du eigentlich nicht.

    Du kannst DokuWiki beibringen dem Contao Cookie zu vertrauen.

    Siehe:
    https://www.dokuwiki.org/devel:auth_plugins

    Auszug aus dem Source:

    Code:
     155      /**
     156       * Do all authentication [ OPTIONAL ]
     157       *
     158       * Set $this->cando['external'] = true when implemented
     159       *
     160       * If this function is implemented it will be used to
     161       * authenticate a user - all other DokuWiki internals
     162       * will not be used for authenticating, thus
     163       * implementing the checkPass() function is not needed
     164       * anymore.
     165       *
     166       * The function can be used to authenticate against third
     167       * party cookies or Apache auth mechanisms and replaces
     168       * the auth_login() function
     169       *
     170       * The function will be called with or without a set
     171       * username. If the Username is given it was called
     172       * from the login form and the given credentials might
     173       * need to be checked. If no username was given it
     174       * the function needs to check if the user is logged in
     175       * by other means (cookie, environment).
     176       *
     177       * The function needs to set some globals needed by
     178       * DokuWiki like auth_login() does.
     179       *
     180       * @see     auth_login()
     181       * @author  Andreas Gohr <andi@splitbrain.org>
     182       *
     183       * @param   string  $user    Username
     184       * @param   string  $pass    Cleartext Password
     185       * @param   bool    $sticky  Cookie should not expire
     186       * @return  bool             true on successful auth
     187       */
     188      public function trustExternal($user, $pass, $sticky = false) {
     189          /* some example:
     190  
     191          global $USERINFO;
     192          global $conf;
     193          $sticky ? $sticky = true : $sticky = false; //sanity check
     194  
     195          // do the checking here
     196  
     197          // set the globals if authed
     198          $USERINFO['name'] = 'FIXME';
     199          $USERINFO['mail'] = 'FIXME';
     200          $USERINFO['grps'] = array('FIXME');
     201          $_SERVER['REMOTE_USER'] = $user;
     202          $_SESSION[DOKU_COOKIE]['auth']['user'] = $user;
     203          $_SESSION[DOKU_COOKIE]['auth']['pass'] = $pass;
     204          $_SESSION[DOKU_COOKIE]['auth']['info'] = $USERINFO;
     205          return true;
     206  
     207          */
     208      }

  3. #3
    Contao-Nutzer
    Registriert seit
    09.12.2012.
    Beiträge
    96

    Standard

    Zitat Zitat von Flex Beitrag anzeigen
    Brauchst du eigentlich nicht.

    Du kannst DokuWiki beibringen dem Contao Cookie zu vertrauen.
    Danke für den Hinweis, mal sehen, ob ich mit dem dort genannten Beispiel was anfangen kann. Wäre es damit auch möglich, den Benutzernamen zu übergeben, so dass z.B. der Contao-Frontend-Benutzer "Meier" sich automatisch als der Dokuwiki-Benutzer "Meier" anmeldet (natürlich nur, wenn letzterer überhaupt existiert; die Benutzer doppelt anzulegen, wäre kein Problem)?

  4. #4
    Contao-Nutzer
    Registriert seit
    10.08.2016.
    Ort
    München
    Beiträge
    38

    Standard

    Ich grabe diesen Thread mal heraus.

    Gibts dazu Neuigkeiten? Eine Frontend-Anmeldung für Contao, die auch für Dokuwiki verwendet wird.

    Hat das jemand schon in der Praxis erreicht?
    Wie?

    Leider sind sämtliche Threads zum Thema Contao + Dokuwiki (ob mit LDAP oder wie hier ohne) im Forum extrem verschwiegen.
    Es geht nach dem großen Überthema nie weiter.

  5. #5
    Contao-Fan Avatar von PaddySD
    Registriert seit
    26.10.2016.
    Ort
    Andechs
    Beiträge
    656

    Standard

    Immer noch dasselbe wie oberhalb. Neue Schreibweisen, aber gleiches thema.

    Hier ist es doch supi beschrieben:

    https://www.dokuwiki.org/devel:worki..._trustexternal

    https://www.dokuwiki.org/devel:auth_plugins

  6. #6
    Contao-Nutzer
    Registriert seit
    10.08.2016.
    Ort
    München
    Beiträge
    38

    Standard

    Nur wie schaut function trustExternal für Contao aus?

    Wenn ich mir das so durchlesen ist das schön und einiges verständlich.

    Aber ich habe aktuell z. B. keinen Plan wie ich der Funktion mitteilen soll, dass sie sich das von Contao zu holen hat etc.

    Ich kann mir nicht vorstellen, dass ich das Beispiel 1:1 kopieren kann und dann wird das schon so funktionieren. ;-)

    Es gibt fertige Authentifikationen für DokuWiki von einigen CMS-Systemen, in Joomla könnte ich spicken und vergleichen und somit verstehen und lernen wie es in bzw. mit diesem System funktioniert aber leider nicht für Contao.
    Ab dem Punkt wird es geheimnisvoll.

  7. #7
    Contao-Fan Avatar von PaddySD
    Registriert seit
    26.10.2016.
    Ort
    Andechs
    Beiträge
    656

    Standard

    Hast Du das denn wirklich gelesen? Da steht es ja sehr genau drin...

    Du baust nicht Contao um, Du erlaubst DokuWiki, installiert auf demselben Server, das einlesen der von Contao gesetzten Session/Cookies. Nicht Contao tut was, sondern DokuWiki nimmt sich die Daten aus dem Cookie und entscheidet dann, ob sie gültig sind (in Deinem Fall, weil sie von Contao kommen) und arbeitet dann mittels ausgelesenen und bestätigen userdaten in seinem Code weiter, als ob die Anmeldung in DokuWiki selbst erfolgt wäre...

    If $cando['external'] is true, this method is used to authenticate a user – all other DokuWiki internals will not be used for authenticating. The function can be used to authenticate against third party cookies or Apache auth mechanisms and replaces the default auth_login() function from inc/auth.php.
    Insofern müsstest Du Dich mal näher mit DokuWiki beschäftigen, denn die Methode trustExternal musst Du ja in DokuWiki abarbeiten, denn Contao tut ja wie gesagt nix, also wirklich nichts...
    Geändert von PaddySD (16.03.2017 um 21:15 Uhr)

  8. #8
    Contao-Nutzer
    Registriert seit
    10.08.2016.
    Ort
    München
    Beiträge
    38

    Standard

    Dass Dokuwiki zugreift ist mir klar. :-) Also Dokuwiki greift auf mein PHP-Skript für Dokuwiki zu und prüft etc. Theorie ok aber dann?

    Wie ist dann die Praxis? (Contao spezifische Code? Snippets? Bezeichnungen)

    Wie bekomme ich im PHP-Skript die Verbindung zum Contao Cookie hin?

    Mit
    PHP-Code:
    session_start(); 
    oder
    PHP-Code:
    $_COOKIE["PHPSESSID"
    komme ich so nicht wirklich auf die richtige Session bzw. ich weiß ja nicht was im Cookie gespeichert wird oder wie dieses heißt, falls es nicht PHPSESSID heißt, um dieses ansprechen oder übernehmen zu können.


    Wer das noch nicht gemacht hat, steht jetzt aufm Schlauch.
    Aber wie habt ihr das dann in der Praxis umgesetzt?
    Wie schaut der Code aus? Snippets dafür?


    Ich finde bezüglich dieser Contao-Cookie Thematik zumindest mit den Begriffen "Cookie" oder "Session" keine oder keine relevante Dokumentation auf:
    https://docs.contao.org

    https://www.php-einfach.de/php-tutorial/php-sessions/
    Hier lerne ich mit Sessions umzugehen aber wie würde ich jetzt hier herausbekommen, dass dies eine Contao-Anmeldung ist?

    Wie komme ich an den Usernamen ran?
    Abfrage über
    PHP-Code:
    session_start();
    if (isset(
    $_SESSION['username'])) {
       echo 
    "$_SESSION['username']";
    } else {
     echo
    "Is nich";

    funktioniert nicht.

    Über
    PHP-Code:
    $_SESSION['TL_USER_LOGGED_IN']; 
    soll ich feststellen können, ob der User überhaupt eingeloggt ist.
    Dies in eine externe PHP-Datei gepackt, im Frontend von Contao eingeloggt, jene PHP-Datei aufgerufen, bringt einen Fehler.

    Hier besteht ein großes Fragezeichen. Woher die relevante Information nehmen, wenn sie nicht veröffentlicht wird und alles sonst sehr geheimnisvoll daher kommt?
    Darum geht es mir ;-)
    Diese Geheimnisse von Contao teilt mir ja Dokuwiki nicht mit aber diese Informationen benötige ich doch für solch eine Lösung?

    Um Hilfe wäre ich sehr dankbar. Und vielleicht ja nicht nur ich.
    Geändert von seamuc (18.03.2017 um 22:02 Uhr)

  9. #9
    Contao-Nutzer
    Registriert seit
    10.08.2016.
    Ort
    München
    Beiträge
    38

    Standard

    Wo kann ich erfahren welche Daten in dem Contao-Cookie stehen?
    Wie komme ich an die Contao-Cookie-Daten ran?

    Das wäre ja essenziell für dieses Vorhaben.

    Es gibt scheinbar keine Informationen von Contao dazu?

  10. #10
    Contao-Fan
    Registriert seit
    27.06.2010.
    Beiträge
    539

    Standard

    Hast du dokuwiki auch auf der gleichen third-level-Domain installiert? Sprich in einem Unterordner oder so?


    Sent from my iPhone using Tapatalk

  11. #11
    Contao-Fan Avatar von PaddySD
    Registriert seit
    26.10.2016.
    Ort
    Andechs
    Beiträge
    656

    Standard

    @seamuc
    Ah, daher weht der Wind. Sorry, dann hatte ich Deine Kenntnisse scheinbar falsch eingeschätzt. War keine böse Absicht.

    Ich finde das Thema interessant, und werde mich über kurz oder lang da mal dran setzen und eine Erweiterung dazu machen. Wieviel Zeit hast Du denn, um die Integration hin zu bekommen? Ich kann damit nämlich nicht direkt anfangen. Ausserdem ist das ja leider kein bezahltes Projekt, insofern muss reale Arbeit vorgehen...

    Wenn Du schonmal selbst ein bisschen suchen und schauen möchtest, fängst Du am besten bei Github im Contao Code an.

    Suchen wo die von Dokuwiki benötigten Sachen erstellt und in die Session eingetragen werden (meine Vermutung, irgendwo in der User-Klasse). Ausserdem kannst du mit den Developer Tools (Firefox oder Chrome) schonmal in die Cookies und die Session reinschauen.

    Wichtig ist ausserdem, dass Dokuwiki auf derselben Domain installiert ist, sonst wird Dir der Zugriff ohnehin verweigert...

    Ich kann Dir leider nicht mit Snippets dienen, weil ich mich dazu auch erstmal in den Code einlesen müsste. Auswendig dürfte das, wenn überhaupt, nur Leo wissen...

  12. #12
    Contao-Nutzer
    Registriert seit
    10.08.2016.
    Ort
    München
    Beiträge
    38

    Standard

    Zitat Zitat von tl_richard_user Beitrag anzeigen
    Hast du dokuwiki auch auf der gleichen third-level-Domain installiert? Sprich in einem Unterordner oder so?

    Sent from my iPhone using Tapatalk

    Hallo tl_richard_user,
    dokuwiki befindet direkt in htdocs.

    htdocs:
    Ordner: contao
    Ordner: dokuwiki

    Sollte ich dokuwiki ins Contao-Verzeichnis packen?

  13. #13
    Contao-Fan Avatar von PaddySD
    Registriert seit
    26.10.2016.
    Ort
    Andechs
    Beiträge
    656

    Standard

    Zitat Zitat von PaddySD Beitrag anzeigen
    Wichtig ist ausserdem, dass Dokuwiki auf derselben Domain installiert ist, sonst wird Dir der Zugriff ohnehin verweigert...
    Darum ist es wichtig....

  14. #14
    Contao-Nutzer
    Registriert seit
    10.08.2016.
    Ort
    München
    Beiträge
    38

    Standard

    Zitat Zitat von PaddySD Beitrag anzeigen
    @seamuc
    Ah, daher weht der Wind. Sorry, dann hatte ich Deine Kenntnisse scheinbar falsch eingeschätzt. War keine böse Absicht.

    Ich finde das Thema interessant, und werde mich über kurz oder lang da mal dran setzen und eine Erweiterung dazu machen. Wieviel Zeit hast Du denn, um die Integration hin zu bekommen? Ich kann damit nämlich nicht direkt anfangen. Ausserdem ist das ja leider kein bezahltes Projekt, insofern muss reale Arbeit vorgehen...

    Wenn Du schonmal selbst ein bisschen suchen und schauen möchtest, fängst Du am besten bei Github im Contao Code an.

    Suchen wo die von Dokuwiki benötigten Sachen erstellt und in die Session eingetragen werden (meine Vermutung, irgendwo in der User-Klasse). Ausserdem kannst du mit den Developer Tools (Firefox oder Chrome) schonmal in die Cookies und die Session reinschauen.

    Wichtig ist ausserdem, dass Dokuwiki auf derselben Domain installiert ist, sonst wird Dir der Zugriff ohnehin verweigert...

    Ich kann Dir leider nicht mit Snippets dienen, weil ich mich dazu auch erstmal in den Code einlesen müsste. Auswendig dürfte das, wenn überhaupt, nur Leo wissen...
    Danke PaddySD,
    jetzt verstehen wir uns ;-) Das ist das Problem mit diesen "modernen" Kommunikationsmethoden

    Zeit habe ich aktuell genügend. Zur Not geht es erst einmal ohne Dokuwiki oder unkomfortabel.

    Ich schaue gerne rein. Vielen Dank für die Tipps.

    Ich durchforste gerade fertige authplugins von anderen CMS-Systemen. Vielleicht helfen die auch etwas weiter.

    Aber ich bin natürlich auch froh, wenn du dich der Sache aus Interesse annimmst. Ich weiß aktuell nicht, ob ich das selbst hinbekomme. ;-)

  15. #15
    Contao-Fan
    Registriert seit
    27.06.2010.
    Beiträge
    539

    Standard

    Sprich, du hast einmal wiki.example.org und einmal contao.example.org bzw. example.org bzw. www.example.org.
    Wenn du nicht das Wiki und Contao auf der selben Domain (inkl. Subdomain) hast, dann hast du erstmal keinen Zugriff auf den Auth Cookie von Contao.
    Du könntest das Dokuwiki in einen Unterordner von Contao verfügbar machen.

    Ich habe übrigens auch mal eine Anleitung für das authMySql-Plugin von dokuwiki geschrieben. Dann funktionieren die Zugangsdaten von Contao, aber man muss sich erneut anmelden. https://www.dokuwiki.org/plugin:authmysql:contao

  16. #16
    Contao-Nutzer
    Registriert seit
    10.08.2016.
    Ort
    München
    Beiträge
    38

    Standard

    Zitat Zitat von tl_richard_user Beitrag anzeigen
    Sprich, du hast einmal wiki.example.org und einmal contao.example.org bzw. example.org bzw. www.example.org.
    Wenn du nicht das Wiki und Contao auf der selben Domain (inkl. Subdomain) hast, dann hast du erstmal keinen Zugriff auf den Auth Cookie von Contao.
    Du könntest das Dokuwiki in einen Unterordner von Contao verfügbar machen.

    Ich habe übrigens auch mal eine Anleitung für das authMySql-Plugin von dokuwiki geschrieben. Dann funktionieren die Zugangsdaten von Contao, aber man muss sich erneut anmelden. https://www.dokuwiki.org/plugin:authmysql:contao


    Vielen Dank für diesen Hinweis.

    Deine Möglichkeit über authmysql für Contao ist natürlich auch super. Interessant ist natürlich hier diese SSO-Variante hier.


    Eine Session legt Contao scheinbar nicht an. Das geht alles über das Cookie, wenn mich mein Blick in Chrome nicht täuscht.
    Sessions werden mir nicht angezeigt aber Cookies.

    Contao nicht eingeloggt als FE-User:
    PHPSESSID mit Value verschlüsselt

    Contao eingeloggt als FE-User:

    Cookies:
    FE_USER_AUTH mit ID/Value verschlüsselt
    PHPSESSID ID/mit Value verschlüsselt

  17. #17
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.114
    Partner-ID
    10107

    Standard

    Zitat Zitat von seamuc Beitrag anzeigen
    Eine Session legt Contao scheinbar nicht an.
    Doch, Contao legt eine Session an.

  18. #18
    Contao-Nutzer
    Registriert seit
    10.08.2016.
    Ort
    München
    Beiträge
    38

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Doch, Contao legt eine Session an.
    Das ist doch schön. ;-)

    Wo soll die auffindbar etc. sein?

    Angezeigt wird mir hier nichts.
    session.png

    Cookies: Ja
    Sessions: Nö.
    Bei mir.

  19. #19
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.114
    Partner-ID
    10107

    Standard

    Zitat Zitat von seamuc Beitrag anzeigen
    Angezeigt wird mir hier nichts.
    session.png
    Dort kannst du auch nichts sehen, weil das der HTML5 sessionStorage ist, nicht die Server seitige Session.

  20. #20
    Contao-Nutzer
    Registriert seit
    10.08.2016.
    Ort
    München
    Beiträge
    38

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Dort kannst du auch nichts sehen, weil das der HTML5 sessionStorage ist, nicht die Server seitige Session.
    Kann ich die dann überhaupt sehen?

  21. #21
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.114
    Partner-ID
    10107

    Standard

    Indirekt zB über den Speicherort der PHP Sessions.

    Du hast auch über die Tabelle tl_session von Contao einen Eintrag, sobald sich ein User über das Front- oder Backend angemeldet hat.
    Geändert von Spooky (21.03.2017 um 15:34 Uhr)

  22. #22
    Contao-Nutzer
    Registriert seit
    10.08.2016.
    Ort
    München
    Beiträge
    38

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Indirekt zB über den Speicherort der PHP Sessions.

    Du hast auch über die Tablle tl_session von Contao einen Eintrag, sobald sich ein User über das Front- oder Backend angemeldet hat.

    Die Einträge in der Tabelle habe ich sogar vorab schon entdeckt. Okay.

  23. #23
    Contao-Fan Avatar von PaddySD
    Registriert seit
    26.10.2016.
    Ort
    Andechs
    Beiträge
    656

    Standard

    Ich nehme ja an, Du hast eine Entwicklungsumgebung, sprich eine Test-Installation von Contao...

    Leg Dir ein Template abgeleitet von fe_page.html5 an, und füge dort folgenden Code ein:
    PHP-Code:
    <?php 
    $session 
    Session::getInstance(); // Session holen
    $debug print_r($sessiontrue); // Die Sessiondaten für das schreiben in eine Datei vorbereiten
    log_message($debug'debug.log'); // Log-Datei oeffnen, $debug einfügen und wieder schliessen
    ?>
    Damit findest Du nach jedem Seitenaufruf unter /system/logs/debug.log einmal die anliegende Session in "Reinform" im log (per FTP runterladen -> in Ruhe anschauen ). Vorsicht, das dürfte sehr zügig eine ziemliche Grösse erreichen. Also wirklich nur in Deiner abgeschotteten Entwicklungsumgebung...

  24. #24
    Contao-Nutzer
    Registriert seit
    10.08.2016.
    Ort
    München
    Beiträge
    38

    Standard

    Okay Danke.
    Ich gehe davon aus, dass man den Cookie verwenden muss. In der Server-Session sehe ich nichts, was mir dafür ins Auge springt.

    Schade, scheinbar hat es bislang wirklich niemand ernsthaft mit der Authentifizierung Contao->Dokuwiki versucht und brauchbare Ergebnisse dazu erzeugt.

    Die Dokumentation von Dokuwiki und die dort verlinkten Beispiele sind haarsträubend unbrauchbar.
    Das ist ein Sammelsurium von neuen und uralten Authentifizierungs-Varianten, gerne auch ohne vernünftige Anleitung/Erklärung, einfach mal reinkopiert und veröffentlicht.
    Nach dem Motto "wer das nicht selbst versteht, ist selbst schuld".
    Schrecklich.

Aktive Benutzer

Aktive Benutzer

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

Lesezeichen

Lesezeichen

Berechtigungen

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