Contao-Camp 2024
Ergebnis 1 bis 8 von 8

Thema: Login im iFrame funktioniert nicht am Safari

  1. #1
    Contao-Nutzer
    Registriert seit
    02.04.2021.
    Beiträge
    68

    Standard Login im iFrame funktioniert nicht am Safari

    Hallo Zusammen,
    ich habe eine etwas spezielle Situation. Auf einer externen Seite wird ein iFrame eingebunden der eine Contaowebseite ladet in der man sich einloggt und zu einem geschützten Bereich kommt.

    Das Problem ist, das funktioniert überall, nur nicht im Safari (getestet am iPhone, iPad und Desktop).
    Wenn ich mir im Logintemplate FE_USER_LOGGED_IN ausgeben lasse, dann steht da nach dem Login zB im Chrome "1" und im Safari vom iPad nichts. Also im Safari werde ich dann auch nicht weitergeleitet, logischerweise.
    Gleichzeitig schreibt aber Contao im Systemlog, dass sich der User erfolgreich eingeloggt hat.

    Kann es sein, das der Safari irgendwelche speziellen Cookierichtlinien hat, die das Logincookie im iFrame blockieren?

  2. #2
    Wandelndes Contao-Lexikon Avatar von tab
    Registriert seit
    22.10.2013.
    Beiträge
    10.060
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Das halte ich für sehr wahrscheinlich. Per Default blockiert Safari alle "third party " Cookies und was du da hast scheint mir ein klassischer Fall von third party Cookie zu sein.

  3. #3
    Contao-Nutzer
    Registriert seit
    02.04.2021.
    Beiträge
    68

    Standard

    Gibt es denn einen Weg, im Template zu prüfen ob der User eingeloggt ist, außer FE_USER_LOGGED_IN? Immerhin loggt Contao das der User sich eingeloggt hat, also sollte man das ja prüfen können.

    Ich würde dann anstatt des Cookies einfach irgendwas in den localStorage vom Browser schreiben, damit ich checken kann, ob der Benutzer eingeloggt ist.

  4. #4
    Wandelndes Contao-Lexikon Avatar von tab
    Registriert seit
    22.10.2013.
    Beiträge
    10.060
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Ein User, der das entsprechende Cookie nicht mitschickt, ist nicht angemeldet. Keine Ahnung, ob Contao das irgendwie mitbekommt, wenn das Cookie nicht angelegt wird beim Login. Woran würdest du denn den User, der sich gerade angemeldet hat, beim nächsten Request erkennen wollen? IP reicht in der Regel nicht, da meist nicht eindeutig. User agent auch nicht, ...? Browserdaten? Keine Ahnung ob Safari das zulassen würde.

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

    Standard

    Eigentlich sollte das kein Browser mehr zulassen.

    Man müsste dafür (soweit ich mich erinnere) das SameSite Attribut des Session Cookies ändern (ginge über die Symfony Framework Config).
    » sponsor me via GitHub or PayPal or Revolut

  6. #6
    Contao-Nutzer
    Registriert seit
    02.04.2021.
    Beiträge
    68

    Standard

    Naja, wie gesagt schreibt Contao ja in die SysLogs das der Benutzer sich angemeldet hat. Also Contao sagt somit ja (Serverseitig), Benutzer gibt es und Logindaten passen.

    Könnte ich das im Template auch so abfragen, würde ich dann einfach im mod_login.html5 ein Javascript einbauen, das 1. in den localStorage vom Browser speichert dass das Gerät eingeloggt ist und 2. auf die gewünschte Seite weiterleiten (alles im iFrame, auch die Weiterleitung).

    Wenn das nächste mal der iFrame geöffnet wird, schaue ich im localStorage ob der Benutzer schon eingeloggt war und leite gleich weiter.



    Das ganze Konstrukt ist etwas kompliziert, ich versuche es hier noch etwas zu erläutern:

    Host mit Login (nicht der hier besprochene Login)
    - Hostseite mit iFrame
    - iFrame mit ContaoLogin und Weiterleitung auf Hostunterseite
    - Hostunterseite, die nirgends verlinkt wird und nur im iFrame angezeigt wird

    Also der Benutzer muss sich grundsätzlich mal im Host einloggen (Host ist kein Contao). Wüsste er die URL der geschützten Seite, könnte er die sie direkt aufrufen. Um das für den Ottonormalverbraucher zu verhindern, zeigen wird die geschützte Seite nur im iFrame.
    Das ganze Konstrukt ist hald mehr ein Hack als alles andere, aber die Hostseite kann keine geschützten Unterseiten für spezifische Benutzer, darum das Contao im iFrame als separater Login.

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

    Standard

    Zitat Zitat von mikefmmedia Beitrag anzeigen
    Naja, wie gesagt schreibt Contao ja in die SysLogs das der Benutzer sich angemeldet hat. Also Contao sagt somit ja (Serverseitig), Benutzer gibt es und Logindaten passen.
    Das Problem ist Client-Seitig: der Browser ignoriert das vom iframe gesendete Session Cookie aufgrund des SameSite Attributs (dazu sollte es in der Browser Konsole eine entsprechende Warnung geben).
    » sponsor me via GitHub or PayPal or Revolut

  8. #8
    Contao-Nutzer
    Registriert seit
    02.04.2021.
    Beiträge
    68

    Standard

    Ja das Cookie ist mir im Prinzip egal, das löse ich mit dem localStorage, wenn ich nur heraus bekommen würde ob der Login valide ist.


    Die alternative und eigentlich auch sauberere Lösung wäre ein Login ohne iFrame, also mit einem Redirekt auf das Contao und nach erfolgreichen Login wieder zurück zum Host. Den umbau zahlt mir aber keiner.

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
  •