Sto costruendo un sito con Spring, che richiede l'autenticazione per accedere ad alcune pagine.
Il sito è in realtà composto da un host client, che esegue il rendering delle viste e gestisce l'associazione dati e un host RIP API (creato anche con Spring), la responsabilità è la restituzione / manipolazione dei dati, la convalida / generazione del token utente etc ..
Ho deciso di implementare un'autenticazione personalizzata sul lato REST, dopo aver ricevuto un nome utente e una password validi, restituirà:
- JWT firmato dall'API REST con AES-256, il carico utile conterrà l'id utente e la data di scadenza.
- Il JWT è memorizzato su un cookie, che è solo HTTP, sicuro e valido solo dal dominio del sito client (è sufficiente per contrastare gli attacchi csrf?)
L'unica backdoor che potrei pensare è se l'attaccante ruba il cookie, per il quale potrei aggiungere al payload JWT un valore casuale univoco per l'utente (che è memorizzato nel database), e nel caso l'utente sia sospettando che la sua sessione sia stata rubata, potrebbe emettere una richiesta per reimpostare il valore univoco, rendendo inutilizzabile il token rubato.
Mi mancano le backdoor che potrebbero consentire a un utente malintenzionato di bypassare facilmente l'autenticazione? Dovrei usare Spring Security invece? Temo di non essere in grado di raggiungere il comportamento apolide che attualmente ho ...
Grazie!