mvc example spring spring-security spring-java-config

example - Proveedor de autenticación personalizada con Spring Security y Java Config



spring security css (2)

Lo siguiente hace lo que necesita ( CustomAuthenticationProvider es su implementación que necesita ser administrada por Spring)

@Configuration @EnableWebMvcSecurity public class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Autowired private CustomAuthenticationProvider customAuthenticationProvider; @Override protected void configure(HttpSecurity http) throws Exception { /** * Do your stuff here */ } @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { auth.authenticationProvider(customAuthenticationProvider); } }

¿Cómo puedo definir un proveedor de autenticación personalizado usando Spring Security con Java Configurations? Me gustaría realizar una verificación de credenciales de inicio de sesión en mi propia base de datos.


Como se muestra en baeldung.com , defina su proveedor de autenticación de la siguiente manera:

@Component public class CustomAuthenticationProvider implements AuthenticationProvider { @Override public Authentication authenticate(Authentication authentication) throws AuthenticationException { String name = authentication.getName(); String password = authentication.getCredentials().toString(); if (shouldAuthenticateAgainstThirdPartySystem(username, password)) { // use the credentials // and authenticate against the third-party system return new UsernamePasswordAuthenticationToken( name, password, new ArrayList<>()); } else { return null; } } @Override public boolean supports(Class<?> authentication) { return authentication.equals( UsernamePasswordAuthenticationToken.class); } }

y el siguiente código corresponde a la configuración de java:

@Configuration @EnableWebSecurity @ComponentScan("org.project.security") public class SecurityConfig extends WebSecurityConfigurerAdapter { @Autowired private CustomAuthenticationProvider authProvider; @Override protected void configure( AuthenticationManagerBuilder auth) throws Exception { auth.authenticationProvider(authProvider); } @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests().anyRequest().authenticated() .and() .httpBasic(); } }