2013-04-23 14 views
8

Tworzę proste logowanie za pomocą Node.js z CORS i Angular.js.Node.js plik cookie sesji CORS z Angular.js

To --- client.example.com robi POST zbyt api.example.com/login gdzie na sukces cookie sesji jest zwrócony zbyt client.example.com i można uzyskać dostęp za GET usługa jak api.example.com/secret chronionym przez cookie sesji.

Wykonywanie żądań GET, które nie są chronione przez plik cookie sesji, nie stanowi problemu.

Ostatecznym celem tutaj jest zbyt authenticate a client side app to a REST api using CORS with a local stradegy --- to nazwa & hasło --- nawet jeśli konwencja powyżej isnt możliwe.

Nie mogę znaleźć impaktującej pracy, aby uczyć się z dowolnego miejsca - wskazać mi właściwy kierunek?

Bonus: Pokaż przykład pracy.

+0

Jest to możliwe tylko po ustawieniu domeny pliku cookie na .example.com. Nie możesz ustawić pliku cookie dla client.example.com z api.example.com: http://stackoverflow.com/questions/1062963/how-do-browser-cookie-domains-work – alexwen

+0

@alexwen Co jeśli chciałbym zaakceptować z dowolnej domeny, np. --- 'client.example1.com' &' client.example2.com'. Celem tutaj jest zbyt autentyczna aplikacja po stronie klienta również interfejs REST za pomocą CORS z lokalną stradegy --- tj. 'Nazwa użytkownika' i' hasło'. –

Odpowiedz

2

Twój problem jest bardzo prosty, przeglądarki nie zezwalają na wysyłanie plików cookie ustawionych w jednej domenie do wysłania do innej domeny.
Jest to związane z bezpieczeństwem. Jeśli plik cookie sesji był dostępny z dowolnej domeny, to każda strona mogłaby wykonać csrf (z definicji csrf to csrf - użyć sesji z jednej strony w innej witrynie).

Istnieją sposoby obejścia tego problemu, ale należy zachować ostrożność podczas ich stosowania.

  • Najprostszym sposobem jest użycie jsonp aby zalogować się i dokonać żądań między domenami, jsonp zasadzie łamie Ciasteczka polityki między domenami.

  • można osadzić iFrame w client.example.com strony, która siedzi w api.example.com, rodzic i iFrame może komunikować się za pomocą post message.

Oba sposoby są otwarte na prośby CSRF (ze swej natury), więc należy być bardzo ostrożnym w jakie informacje pozwalają client.example.com dostępu.

Powiązane problemy