Vorrei chiedere un problema su come ho progettato un flusso di sicurezza.
Il contesto
Ho una webapp progettata in due moduli web e server
-
Web : è un client a pagina singola, realizzato con Angular 1.5.5 (tra gli altri moduli). È una procedura guidata con 6 possibili stati (schermate). Il suo fornitore di dati sarà il modulo server .
-
Server : è un'API resto. Quale voglio che sia stateless . È realizzato con Spring MVC e Spring Security.
Fin qui tutto bene.
L'app lato client ( client da ora in poi) non può essere richiesta senza previa autorizzazione. Sono consentite solo fonti attendibili. Queste fonti imposteranno un hash in intestazioni o query stringa.
L'API responsabile della sicurezza è Spring. Finora, con un semplice PreauthFilter sono stato in grado di prendere hash dalla richiesta, convalidarlo e, in caso di OK, impostarlo come autenticato ( PreAuthenticationAuthenticatedToken ). Tuttavia il mio contesto di sicurezza primaverile è stateless e il contesto di sicurezza Spring non lo manterrà in nessuna sessione / titolare. A causa del client è una singola pagina, non ne ho bisogno dopo la convalida.
Una volta che il client sta funzionando (PreAuth è terminato con successo), ora è il momento di sbarazzarsi della sicurezza dell'API Rest.), che voglio sia anche stateless e vorrei implementare un JWT .
Ecco a cosa sto combattendo. Vorrei inviare 3 valori a client dopo il processo Preauth , per informare i client dei valori necessario per avviare tutto il protocollo JWT.
Di solito inizia con utente / password da una pagina di accesso. Ma devo iniziare da un PreAuth ...
L'unico modo in cui ho trovato di informare questi 3 valori è stato tramite un SucessfulAuthenticationHandler da cui ho impostato 3 cookie.
La domanda è:
-
C'è un altro modo per informare questi 3 valori, dopo PreAuth, invece dei cookie? ( Ho provato ad aggiungere intestazioni alla risposta, ma non so se avrò accesso alle intestazioni di risposta di Angular.In generale perché non è una richiesta Ajax ).
Questi cookie hanno un massimo di 0, quindi dopo che la richiesta non è più disponibile (non voglio avere a che fare con i cookie scaduti). Ad ogni modo non mi sento totalmente a mio agio con loro.
-
Dovrei provare un altro approccio?
-
Che cosa suggeriresti?