Ho due app Web, una per l'interfaccia utente Web in AngularJS e una per i servizi web REST in Java. Entrambi sono distribuiti su domini separati.come implementare la protezione CSRF per le richieste cross domain
Le applicazioni utilizzano cookie per l'autenticazione. Ogni volta che l'utente immette un nome utente e una password validi, il server restituisce un cookie solo http contenente il token e tale cookie viene trasmesso attraverso tutte le richieste. Ho abilitato CORS su entrambe le app, ecco perché il cookie di sessione funziona correttamente.
Ora, sto cercando di aggiungere la protezione CSRF per questo. Stavo cercando di utilizzare il cookie csrf in cui nel server invieremo il cookie csrf (non httponly) come parte della risposta REST e l'interfaccia utente leggerà il valore dal cookie e lo passerà in un'intestazione del token csrf per le altre chiamate REST.
Il problema con questo approccio che sto affrontando è che poiché il server è in un dominio diverso, non posso leggere il cookie utilizzando $ cookies in AngularJs. C'è un modo per leggere un valore di quel cookie? In caso contrario, posso implementare CSRF in qualche altro modo?
Ho anche provato a implementare la creazione del cookie csrf sull'interfaccia utente Web stessa nel browser, ma il browser non invia il cookie al servizio web come nel suo diverso dominio.
Quindi, la mia domanda è come implementare la protezione CSRF per questo tipo di situazione?
Ho provato questo e dal momento che server è di dominio diverso, non penso che AngularJs sia stato in grado di leggere quel cookie. Ho provato manualmente e controllato, non c'era nessun cookie nell'oggetto $ cookies. Come posso risolvere questo? Inoltre ho controllato il link per AngularJS CSRF, è menzionato lì che l'intestazione non sarà impostata per richieste cross domain – user3565529
Ho aggiornato la mia risposta. Per favore fatemi sapere se questo non risolve il vostro problema? –