Ergebnis 1 bis 7 von 7

Thema: Knifflige Aufgabe: Anmeldung in mehreren Domainen in einer Installation

  1. #1
    Contao-Nutzer Avatar von vates
    Registriert seit
    10.02.2012.
    Ort
    21493
    Beiträge
    36

    Standard Knifflige Aufgabe: Anmeldung in mehreren Domainen in einer Installation

    Seit der Version 2.11. kann man ja (per Hook) eine Cookie Domain vorgeben, um sich für mehrere Subdomains anzumelden. Das hilft mir leider nicht, da ich mehrere Startpunkte mit jeweils anderen echten Domainen habe.

    Die Registrierung eines FE-Users klappt durch die Multidomainfähigkeit von Contao in allen Domainen und muss nur einmalig gemacht werden.

    Die Anmeldung nimmt Contao aber nur für die aktuelle Domain, was sicher an den Cookies liegt. Ich benötige aber eine einmalige Anmeldung für alle Domainen in der Installation!

    Kann mir dazu jemand einen Tipp geben, wie man das z. B. über einen Status in der DB und mit Php-Code realisieren könnte? Welche Stellen im Core muss ich ansprechen/aufrufen, damit so eine Funktion möglich wird?

  2. #2
    Contao-Nutzer Avatar von vates
    Registriert seit
    10.02.2012.
    Ort
    21493
    Beiträge
    36

    Standard Domainübergreifender Login

    In einer Installation mit mehreren Domainen müsste es doch möglich sein, wenn man in einer Domain als FE-User angemeldet ist, automatisch auch für die weiteren Domainen angemeldet zu sein. Ich hab es jetzt versucht mit "Hooks", "fputs" und "curl" zu umgehen, aber Contao ist da sehr gut dicht (LOB)!

    Im BE sind die Startpunkte, somit die Domainen bekannt. Daraus könnte man doch ein Login über alle zulassen. Oder nur über einen Auswahlpunkt im Startpunkt? Da eine Registrierung eines FE-Users für alle Domainen gilt, sollte auch das Login einmalig - oder auswählbar - sein.

  3. #3
    Contao-Fan Avatar von Babelfisch
    Registriert seit
    30.06.2009.
    Ort
    Leipzig
    Beiträge
    894

    Standard

    Wenn du unterschiedliche Second-Level Domains nutzt – also bspw. example.org / example.net / example.com – dann hast du keine Chance, dich einmalig an allen Domains anzumelden. Ein Cookie lässt sich nicht domainübergreifend setzten.

    Nutzt du dagegen (so wie ich) nur verschiedene Subdomains – als bspw. sub1.example.com / sub2.example.com – dann kannst du die Anmeldung über den neuen SetCookie-Hook realisieren, indem du als Domain .example.com angibst. Der Hook kann bspw. so aussehen:

    PHP-Code:
    class CookieHook
    {
        public function 
    setCookie($objCookie)
        {
            
    $objCookie->strDomain strstr($_SERVER['HTTP_HOST'], '.');
            return 
    $objCookie;
        }

    Aber Vorsicht! In der 2.11.2 gab es noch einen bösen Bug.

    Gruß
    Meine aktiven Contao-Projekte: LingoliaStiftung firmm

  4. #4
    Contao-Nutzer Avatar von vates
    Registriert seit
    10.02.2012.
    Ort
    21493
    Beiträge
    36

    Standard

    Danke für Deine Antwort. Ich hatte den Beitrag, aus dem der Hook SetCookie resultierte, bereits verfolgt. Ich habe leider unterschiedliche Domainen, denen mit Cookies nicht beizukommen ist. Deine Aussage bestärkt meine Ergebnisse und beweist eigentlich, dass Contao hier sehr sicher ist. Beim Ausprobieren habe ich aber eine ganze Menge über PHP gelernt.

    Ich muss wohl mein Konzept überdenken, bin ja immer noch bei der Einarbeitung in Contao.

  5. #5
    Contao-Nutzer Avatar von vates
    Registriert seit
    10.02.2012.
    Ort
    21493
    Beiträge
    36

    Standard

    Nun, eigentlich ist das Verhalten von Contao etwas widersprüchlich:

    Ich kann mich als FE-User auf einer Domain registrieren und bin damit mit gleichem Namen und Password auch für die anderen Domainen registriert. Ändere ich auf einer Domain das Kennwort, gilt das auch für die anderen. Das ist ganz praktisch, muss man nur dem User erklären.

    Anmelden kann ich mich nur auf einer Domain, bei den anderen muss ich mich auch jeweils manuell einloggen. Jede Domain verlangt auch eine eigene Abmeldung.

    Wie erkläre ich das jetzt dem User? Zumal ich die Domainen auch sichtbar als Hauptauswahl habe: https://www.contao-community.de/show...-erster-Stelle

  6. #6
    Contao-Urgestein
    Registriert seit
    07.07.2009.
    Beiträge
    4.107

    Standard

    Das was du willst ist wohl ein Single Sign-On? Das ist leider schwer zu implementieren

  7. #7
    Contao-Nutzer Avatar von vates
    Registriert seit
    10.02.2012.
    Ort
    21493
    Beiträge
    36

    Standard SSO Single Sign On

    Zitat Zitat von andreasisaak Beitrag anzeigen
    Das was du willst ist wohl ein Single Sign-On? Das ist leider schwer zu implementieren
    Gibt es denn für Contao dazu schon eine SSO-Erweiterung oder Codeschnipsel? Ich habe nach langer Suche nur Lösungen gefunden, die sich sicher nicht mit Contao vertragen. Was könnte man am leichtesten einbauen?

    Ich habe einen Ansatz, der aber nicht 100%ig ist.

    Dazu baue ich eine Kennung aus Browser-Info und IP-Adresse

    Contao erzeugt beim Start eine "Client"-Id

    Über ein PHP-Image-Tag in einem Html-Modul rufe ich sozusagen ein Cross-Domain-Cookie auf
    Dieses PHP-Script erzeugt eine Server-ID und bekommt die beiden Kennungen per GET und baut in der DB für alle beteiligten Domainen je einen Datensatz auf. Die Browser/IP-Kennung ist identisch mit Contao. Die Client-ID der aufrufenden Contao-Domain wird in den Datensatz übernommen.

    Contao holt beim 2. Lauf die Server-ID aus dem Datensatz mit seiner Client/Browser-Kennung.

    Da die anderen Domainen im gleichen Browser aufgerufen werden, bleiben die Server- und Browserkennung gleich, gehören also zusammen.

    Über den Hook PostLogin und Post-Logout kann ich alle Sätze der Gruppe mit dem User und einem Status versehen.

    Wenn eine der anderen Domainen eine Seite aufruft, ist der User automatisch eingelogt (oder ausgelogt).

    Das funktioniert soweit schon ganz gut, nur dann nicht, wenn die Domain vorher noch nicht aufgerufen war. Dann fehlt noch die Client-ID, die erst im 2. Lauf gelesen werden kann. So muss man immer eine weitere Seite anklicken um die automatische Anmeldung wirsam werden zu lassen.

    Gibt es einen PHP-Trick, um die Info aus dem Cross Domain Cookie direkt an das aufrufende Programm zurück zu geben, ohne einen weiteren Klick?

    Übrigens habe ich den Code in die Index.php durch eine require-zeile geschummelt. Ist leider hart codiert, aber nachvollziehbar

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
  •