Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to Register SaltSource in Java Config (no xml)

I am setting up a new web app that uses no xml (no web.xml and no spring.xml). I have almost everything work except I can't figure out how to register the SaltSource. I need to replace the following with the Java equivalent.

<authentication-manager>
  <authentication-provider user-service-ref="authService" >
   <password-encoder hash="sha" ref="myPasswordEncoder">
    <salt-source user-property="salt"/>
   </password-encoder>
  </authentication-provider>
</authentication-manager>

So far I have this in Java.

protected void configure(AuthenticationManagerBuilder auth) throws Exception {
    ReflectionSaltSource rss = new ReflectionSaltSource();
    rss.setUserPropertyToUse("salt");

    auth.userDetailsService(authService).passwordEncoder(new MyPasswordEncoder());
    // How do I set the saltSource down in DaoAuthenticationProvider
}

So how do I register the SaltSource so that it ends up in DaoAuthenticationProvider (like the xml has done in the past)?

like image 973
Mark.ewd Avatar asked Apr 10 '14 17:04

Mark.ewd


1 Answers

I got to work by doing the following:

protected void configure(AuthenticationManagerBuilder auth) throws Exception {
    ReflectionSaltSource rss = new ReflectionSaltSource();
    rss.setUserPropertyToUse("salt");
    DaoAuthenticationProvider provider = new DaoAuthenticationProvider();
    provider.setSaltSource(rss);
    provider.setUserDetailsService(authService);
    provider.setPasswordEncoder(new MyPasswordEncoder());
    auth.authenticationProvider(provider);
}
like image 70
Mark.ewd Avatar answered Oct 22 '22 01:10

Mark.ewd