europace/partner-api

Cookie-Setting: SameSite="None" / Secure bei Einbindung des Partnermanagment via iFrame

Closed this issue · 6 comments

ic-hv commented

Hallo,

ich habe gerade den SSO / SSI für unseren Kunden gemäß https://github.com/europace/partner-api/blob/master/docs/silent-sign-in/silent-sign-in.md umgestellt.

Ich binde das Partnermangament dann via iframe und mit einem Link der folgenden Form ein:

https://www.europace2.de/partnermanagement/silent-sign-in?otp=***&subject=RYB98&redirect_uri=/vorgang/oeffne/F04466

Das Loading des iframes klappt auch problemlos mit Firefox, allerdings nicht mit Chrome. Das hängt damit zusammen, das die Cookies die innerhalb des iframes gesetzt werden, nicht mit den Flags SameSite=None, Secure gesetzt werden.

Das ist allerdings notwendig, damit Chrome diese iframe-Cookies einlesen kann, wenn der iframe auf einer Seite eingebunden ist, die nicht mit der Domain "www.europace2.de" endet.

Bitte beheben, weil sonst ist die Einbindung per iframe auf kundenseitigen Domains nicht mehr vernünftig nutzbar.

Siehe hierzu auch ein weiteres Issue von mir (das aber anscheinend wohl ignoriert wird bzw. noch nicht geschlossen wurde)

https://github.com/europace/login-api/issues/2

Herzliche Grüße,
Heiko Vogel

Hallo Heiko,

zunächst danke, dass du auf SSI umstellst. Hinsichtlich der Cookie-Policy haben wir von SSO zu SSI keine Anpassungen vorgenommen.

Du solltest für das Anzeigen und Aufrufen von Europace auf keinerlei Cookies angewiesen sein. Wichtiger Hinweis: wenn du das iFrame startest, musst du das SSI durchlaufen. Nur weil der Nutzer einen Cookie für europace2 mal gesetzt hatten, heißt es nicht, dass man die nachfolgenden Requests/iFrames ohne SSI aufrufen kann. Jedes iFrame muss beim Laden erneut ein SSI durchführen, dann sollte das Ergebnis wie gewünscht funktionieren.

Es wundert mich, dass es bei dir im Firefox funktioniert. Vielleicht hast du die Sicherheitsanforderungen angepasst? Nach meinem Verständnis erlaubt damit dein Firefox anscheinend Cross-Site-Scripting, oder?

Viele Grüße,
Mike

ic-hv commented

Hallo Mike,

Cookies werden sehr wohl benötigt! Ich will ich Dir den Prozess mal schrittweise erklären:

Nachdem das OneTimePasswort generiert ist und dem iframe, der von einer Seite der Domain "accedo.de" eingebunden ist, dann als Adresse etwa folgende URL zugewiesen wird:

https://www.europace2.de/partnermanagement/silent-sign-in?otp=ZSZHHXOOPTH6LVPT37EUXZIHPBDI3JSS&subject=RYB98&redirect_uri=/vorgang/oeffne/F04466?ohneKopfleiste=true

passiert folgendes:

  1. Der iframe authentifiziert sich mithilfe des opt-Parameters. Ok - hier sind noch keine Cookies im Spiel

schritt1+2

  1. Europace sendet eine 302 Status-Code, setzt ein Authentfizierungs-Cookie und leitet den iframe auf die URL https://www.europace2.de/vorgang/oeffne/F04466?ohneKopfleiste=true um. Diese URL enthält nun natürlich keine Authentifikationsmerkmale mehr, weil der Zugriff jetzt mithilfe des (vermeintlich) zuvor gesetzten Authentifizierungs-Cookie verifiziert wird.

401

  1. Chrome erhält nun allerdings eine 401-er Status-Code, weil er das zuvor gesetzte Authentfizierungs-Cookie nicht auslesen kann, weil der iframe eben auf einer Seite der Domain "accedo.de" eingebunden ist - und Chrome darf (selbst innerhab eines iframes, der auf die eigentlich Domain zeigt, um die es sich dreht) ein derartiges Cookie nur dann setzen, wenn es mit der Option SameSite="None" / Secure gesetzt wird, das wurde es aber nicht.

cookie-warning

lax

Chrome bezeichnet dieses Verhalten als Cross-SiteScripting, weil die Domain "accedo.de" mithilfe des iframes quasi ein Cookie von "www.europace.de" auslesen könnte. Deshalb erwartet Chrome eben die Parameter-Kombination SameSite="None" / Secure, damit das gestattet ist. Firefox ist bei dem Handling von iframes in dieser Hinsicht gegenwärtig nicht so restriktiv - wird es aber noch werden.

Also wie gesagt: Entweder ihr setzt diese Cookie-Parameter oder wir können Europace via iframe innerhalb von Seiten, die von "accedo.de" geladen werden, nicht mehr anzeigen.

ic-hv commented

Gegenwärtig mit der alten SSO-Lösung können wir das hier nämlich noch realisieren:

altes-SSO

was mit der neuen SSI-Lösung ohne die genannten Cookie-Optionen nicht mehr geht.

ic-hv commented

Bei der alten SSO-Lösung setzt ihr nämlich die genannte SameSite='None' / Secure Option:

sso_alt
sso-alt-same-site

Hallo Heiko,

wir sehen es uns nochmal an. Die Cookie-Setting sollten sich nicht unterscheiden.

Viele Grüße,
Mike

Hallo Heiko,

Wir setzen jetzt auch beim Silent Sign In das Flag SameSite: None. Die Anpassung ist bereits aktiv und kann getestet werden.

Beste Grüße
Alexander