Я пытаюсь настроить клиента AuthenticationProvider с помощью Spring Security, но не успел заставить его работать. Я использую конфигурацию Java, поэтому я, вероятно, пропустил что-то простое, но поскольку большинство учебных материалов основано на XML-конфигурации, оно не выпрыгивает на меня.
Это использует Spring v4.0.1.RELEASE, но с Spring Security v3.2.2.RELEASE. Возможно, столбец с номером версии?
Насколько я мог судить, все, что мне нужно было сделать, это создать моего провайдера:
public class KBServicesAuthProvider implements AuthenticationProvider {
@Autowired
private ApplicationConfig applicationConfig;
@Autowired
private SessionServiceClient sessionServiceClient;
@Override
public Authentication authenticate(Authentication authentication) throws AuthenticationException {
String email = (String) authentication.getPrincipal();
String password = (String) authentication.getCredentials();
try {
KBSessionInfo sessionInfo = sessionServiceClient.login(applicationConfig.getKbServicesPresenceId(), email,
password);
List<GrantedAuthority> grantedRoles = new ArrayList<>();
for (KBRoleMembership role : sessionInfo.getAuthenticatedUser().getRoleMemberships()) {
grantedRoles.add(new SimpleGrantedAuthority(role.getRoleId()));
}
return new UsernamePasswordAuthenticationToken(email, password, grantedRoles);
} catch (InvalidSessionException e) {
throw new AuthenticationCredentialsNotFoundException("Username or password was not accepted", e);
}
}
@Override
public boolean supports(Class<?> authentication) {
return authentication.equals(UsernamePasswordAuthenticationToken.class);
}
}
И затем настройте класс, чтобы описать мою настройку безопасности. Этот класс ссылается на моего провайдера:
@Configuration
@EnableWebMvcSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired(required = true)
SessionServiceClient sessionServiceClient;
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().antMatchers("/").permitAll().anyRequest().authenticated();
http.formLogin().loginPage("/login").permitAll().and().logout().permitAll();
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.authenticationProvider(getKBServicesAuthenticationProvider());
}
@Bean
protected AuthenticationProvider getKBServicesAuthenticationProvider() {
return new KBServicesAuthProvider();
}
}
Но я ничего не вижу в журналах, и ни одна из моих точек отладки не попадает. Приложение действует как незащищенное (поэтому я могу добираться до разных URL-адресов и т.д.).
Любые идеи о том, что я должен проверять?