Node.js CORS-Sitzungscookie mit Angular.js

8

Ich mache eine einfache Anmeldung mit Node.js mit CORS und Angular.js.

Das ist --- client.example.com macht einen POST too api.example.com/login , bei Erfolg wird ein Session Cookie zu client.example.com zurückgegeben und kann ebenfalls auf ein GET Dienst wie api.example.com/secret geschützt durch den Sitzungscookie.

Das Erstellen von GET-Anfragen, die nicht durch einen Session-Cookie geschützt sind, ist kein Problem.

  

Letztendlich ist das Ziel hier zu authentifiziert eine clientseitige App für eine REST API, die CORS mit einem lokalen stradegy verwendet --- dh Benutzername & amp; Passwort --- auch wenn die obige Konvention nicht möglich ist.

Ich kann keine funktionierende Implementation finden, um von irgendwoher zu lernen --- zeige mir in die richtige Richtung?

Bonus: Zeigt ein funktionierendes Beispiel.

    
Dan Kanze 23.04.2013, 01:01
quelle

1 Antwort

2

Ihr Problem ist sehr einfach, Browser erlauben das Senden von Cookies in einer Domäne nicht an eine andere Domäne gesendet werden.
Dies dient der Sicherheit. Wenn Ihr Sitzungscookie von einer beliebigen Domäne aus zugänglich ist, könnte jede Site csrf ausführen (per Definition soll csrf - die Sitzung von einer Site an einer anderen Site verwenden).

Es gibt Möglichkeiten, aber Sie sollten vorsichtig sein, wenn Sie sie anwenden.

  • Der einfachste Weg ist die Verwendung von Jsonp für die Anmeldung und die Ausführung domänenübergreifender Anfragen. jsonp bricht im Prinzip die cross-domain-Richtlinien von Cookies.

  • Sie können einen iFrame in client.example.com Seite einbetten, die in api.example.com liegt, der übergeordnete und der iFrame können über Nachricht senden .

Beide Möglichkeiten sind für csrf-Anfragen (von Natur aus) offen, daher sollten Sie besonders vorsichtig sein, auf welche Informationen Sie client.example.com zugreifen dürfen.

    
Alon Bar David 23.04.2013, 05:57
quelle

Tags und Links