package ch.rasc.sec.security;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.authentication.configurers.userdetails.UserDetailsAwareConfigurer;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.crypto.password.PasswordEncoder;
public class TotpAuthenticationConfigurer extends
UserDetailsAwareConfigurer<AuthenticationManagerBuilder, UserDetailsService> {
private TotpAuthenticationProvider provider = new TotpAuthenticationProvider();
private final UserDetailsService userDetailsService;
protected TotpAuthenticationConfigurer(UserDetailsService userDetailsService) {
this.userDetailsService = userDetailsService;
this.provider.setUserDetailsService(userDetailsService);
}
public TotpAuthenticationConfigurer passwordEncoder(PasswordEncoder passwordEncoder) {
this.provider.setPasswordEncoder(passwordEncoder);
return this;
}
@Override
public void configure(AuthenticationManagerBuilder builder) throws Exception {
this.provider = postProcess(this.provider);
builder.authenticationProvider(this.provider);
}
@Override
public UserDetailsService getUserDetailsService() {
return this.userDetailsService;
}
}