Quando un client non autenticato richiede un URL che richiede un livello di accesso non anonimo come definito in security-config.xml
, la sicurezza Spring invia un reindirizzamento HTTP alla nostra pagina di accesso (ad esempio /login
). Va bene.Come impedire l'aggiunta della sicurezza di primavera; jsessionid = XXX per accedere ai reindirizzamenti?
Il problema è che in assenza di una sessione esistente (identificata da un cookie fornito nella richiesta del client), problemi di sicurezza di primavera un reindirizzamento che specifica anche la nuova sessione del client nell'URL, ad es. /login;jsessionid=8o7pglapojus
.
Molti contenitori supportano questo (apparentemente funziona bene in tomcat?), Ma sembra che Jetty (che è quello che stiamo usando in questo momento) non lo fa - l'URL reindirizzato arriva attraverso il nostro router URL completamente intatto (incluso il "parametro" jsessionid
, e la sessione denominata non è associata alla richiesta /login
tramite jetty/spring-security (cioè un ID di sessione totalmente nuovo viene fornito nell'intestazione Set-Cookie della risposta alla richiesta /login
).
Possiamo aggirare questo facendo corrispondere /login.*
nei nostri percorsi, ma sono curioso di sapere se esiste un modo per prevenire l'emissione dell'ID di sessione nel reindirizzamento dell'autenticazione per iniziare.
@BalusC qualsiasi nota soluzione pre-molla 3? – Xorty
@Xorty Dai un'occhiata a http://fralef.org/tomcat-disable-jsessionid-in-url.html, se l'aggiornamento a Spring Security 3+ non è un'opzione. –