Ho un tipico MVC Spring in esecuzione su Tomcat. Dopo aver acceso il sistema per l'esecuzione su HTTPS (tutto funziona correttamente con HTTP semplice), il login ha smesso di funzionare. Il motivo è che l'oggetto SecurityContextHolder.getContext().getAuthentication()
di Spring diventa null
dopo l'utilizzo di RedirectView
.SpringContextHolder.getContext(). GetAuthentication() restituisce null dopo che RedirectView è utilizzato in HTTPS/SSL
Ho già cercato la risposta, l'unico che ho trovato suggerito di impostare la proprietà redirectHttp10Compatible
su false
nell'impostazione del bean viewResolver
. Questo non ha aiutato.
Ho anche controllato che durante il reindirizzamento, il mio ID di sessione rimane lo stesso e la connessione rimane sicura, cioè non è un problema (almeno per quanto ho potuto dire) di un cambio tra http e https o viceversa.
Quale potrebbe essere il problema?
<beans:beans xmlns="http://www.springframework.org/schema/security" xmlns:beans="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-3.1.xsd">
<http auto-config="true">
<intercept-url pattern="/**" requires-channel="https" />
<intercept-url pattern="/index*" access="ROLE_USER"/>
<intercept-url pattern="/dashboard*" access="ROLE_USER" requires-channel="https"/>
<intercept-url pattern="/login*" access="ROLE_GUEST, ROLE_ANONYMOUS, ROLE_USER"/>
<intercept-url pattern="/signin*" access="ROLE_GUEST, ROLE_ANONYMOUS, ROLE_USER"/>
<intercept-url pattern="/signup*" access="ROLE_GUEST, ROLE_ANONYMOUS, ROLE_USER"/>
<form-login login-page="/home"
default-target-url="/home"
authentication-failure-url="/home?authentication_error=true"
authentication-success-handler-ref="redefineTargetURL"
/>
<anonymous username="guest" granted-authority="ROLE_GUEST" key="anonymousKey"/>
<logout invalidate-session="true" logout-success-url="/logout?message=Logout Successful" />
</http>
<authentication-manager alias="authenticationManager">
<authentication-provider user-service-ref="userDetailsService" />
</authentication-manager>
<beans:bean id="redefineTargetURL" class="com.groupskeed.common.RedefineTargetURL" />
<beans:bean id="userDetailsService" class="com.groupskeed.security.UserDetailsServiceImpl" />
Hai provato accedendo tramite il sessione? Inoltre, si prega di postare la configurazione per aiutare ulteriormente il debug. Vorrei esaminare l'allegato dell'autenticazione tra Session e SecurityContext. – Carsten
Grazie per la risposta. Quali file di configurazione dovrei pubblicare? –
La configurazione di sicurezza Spring. E se si usano implementazioni di classi personalizzate, anche queste potrebbero essere utili. – Carsten