Я использую дайджест-аутентификацию с помощью Spring Boot.
Проблема: когда я получаю доступ к защищенному URL-адресу, отображается диалоговое окно по умолчанию с запросом имени пользователя и пароля, но невозможно войти в систему даже после заполнения правильных учетных данных.
Это класс SecurityConfig.
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/", "/home").permitAll()
.anyRequest().authenticated()
.and()
.addFilter(digestAuthFilter())
.exceptionHandling()
.authenticationEntryPoint(digestEntryPoint())
.and()
.formLogin()
.defaultSuccessUrl("/secure")
.permitAll()
;
}
@Bean
DigestAuthenticationFilter digestAuthFilter() throws Exception {
DigestAuthenticationFilter digestAuthenticationFilter = new DigestAuthenticationFilter();
digestAuthenticationFilter.setUserDetailsService(userDetailsServiceBean());
digestAuthenticationFilter.setAuthenticationEntryPoint(digestEntryPoint());
digestAuthenticationFilter.setPasswordAlreadyEncoded(true);
return digestAuthenticationFilter;
}
@Bean
DigestAuthenticationEntryPoint digestEntryPoint() {
DigestAuthenticationEntryPoint bauth = new DigestAuthenticationEntryPoint();
bauth.setRealmName("Digest Realm");
bauth.setKey("MySecureKey");
return bauth;
}
@Override
@Bean
public UserDetailsService userDetailsServiceBean() {
InMemoryUserDetailsManager inMemoryUserDetailsManager = new InMemoryUserDetailsManager();
inMemoryUserDetailsManager.createUser(User.withUsername("user").password("{noop}user").authorities("USER").build());
return inMemoryUserDetailsManager;
}
}
Это класс для контроллера покоя для отображения.
@RequestMapping(value = "/")
public class TestController {
@RequestMapping(value = "/secure")
public String secure() {
return "You are authorize to access this page. This is secure page. ";
}
@RequestMapping(value = {"/home", "/"})
public String home() {
return "This is public page. No need of authentication";
}
}
Я ожидаю, что он предоставит доступ, предоставив правильные учетные данныеи перенаправить на защищенный "/ secure" URL.