Я использую базовую аутентификацию для обеспечения начального веб-сервиса REST, над которым я работаю. Кажется, все работает нормально, за исключением того, что путь выхода из системы не работает. Он перенаправляется на "/login? Logout", как задокументировано, но мой пользователь, похоже, фактически не вышел из системы. (т.е. я все равно могу получить доступ к странице X, а не странице Y, как ожидалось).
Конфигурация приложения:
@Configuration
@ComponentScan
@EnableAutoConfiguration(exclude = ManagementSecurityAutoConfiguration.class)
@EnableWebSecurity
@EnableSwagger
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)
@Configuration
protected static class ApplicationSecurity extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.httpBasic()
.and().authorizeRequests().antMatchers("/manage/**").hasRole("ADMIN")
.anyRequest().fullyAuthenticated()
.and().logout().permitAll().logoutRequestMatcher(new AntPathRequestMatcher("/logout", HttpMethod.GET.toString())).invalidateHttpSession(true);
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication().withUser("admin").password("admin").roles("ADMIN", "USER").and().withUser("user").password("user").roles("USER");
}
}
}
Обратите внимание, что безопасность в целом, похоже, работает. Я могу открыть новую вкладку инкогнито, и проверка подлинности/безопасности будет работать, как ожидалось.
Вы не можете выйти из базовой HTTP-аутентификации с помощью ссылки выхода.
Пожалуйста, проверьте аналогичную тему здесь.
2014-08-07 16:58:36.931 INFO 2132 --- [nio-8080-exec-2] osbaaudit.listener.AuditListener : AuditEvent [timestamp=Thu Aug 07 16:58:36 EDT 2014, principal=user, type=AUTHENTICATION_SUCCESS, data={details=org.springframework.security.web.authentication.WebAuthenticationDetails@957e: RemoteIpAddress: 127.0.0.1; SessionId: null}]