Ich versuche, einen einfachen benutzerdefinierten Authentifizierungsanbieter mit Spring Security in einer Spring Boot App zu implementieren, aber es funktioniert nicht.Frühling Sicherheit benutzerdefinierte Authentifizierung Provider 403 Antwort
My Custom Auth-Provider ist:
@Component
public class CustomAuthenticationProvider implements AuthenticationProvider{
@Override
public Authentication authenticate(Authentication a) {
try{
List<GrantedAuthority> roles = new ArrayList<>();
roles.add(new SimpleGrantedAuthority("USER"));
UsernamePasswordAuthenticationToken u = new UsernamePasswordAuthenticationToken("usuario", "password", roles);
return u;
}catch(Exception e){
return null;
}
}
@Override
public boolean supports(Class<?> type) {
return true;
}
}
Und meine Sicherheit Config ist dies:
@Configuration
@EnableWebSecurity
@EntityScan(basePackages = "sirio.io.models")
public class AppConfiguration {
@Configuration
@Order(1)
public static class ApiWebSecurity extends WebSecurityConfigurerAdapter{
@Autowired
private CustomAuthenticationProvider customAuthenticationProvider;
@Override
public void configure(HttpSecurity http) throws Exception{
http.antMatcher("/admin/**")
.authorizeRequests()
.anyRequest()
.hasRole("USER")
.and()
.httpBasic()
.and()
.authenticationProvider(customAuthenticationProvider);
}
}
}
ich mehrere Haltepunkte in der CustomAuthProvider niedergelassen haben und sie genannt wurden, aber ich bekomme immer eine 403 Antwort im Browser
[EDIT] Versuchte eine andere Art von Custom Auth Provider, aber mit dem gleichen Ergebnis.
@Component
public class CustomAuthenticationProvider extends AbstractUserDetailsAuthenticationProvider{
@Override
protected void additionalAuthenticationChecks(UserDetails ud, UsernamePasswordAuthenticationToken upat) throws AuthenticationException {
}
@Override
protected UserDetails retrieveUser(String string, UsernamePasswordAuthenticationToken upat) throws AuthenticationException{
List<GrantedAuthority> authoritys = new ArrayList<>();
authoritys.add(new SimpleGrantedAuthority("USER"));
UserDetails ud = new User("usuario", "password", authoritys);
return ud;
}
}
Ich habe versucht, erstreckt AbstractUserDetailsAuthenticationProvider aber seine nicht funktioniert. – willermo