2014-04-10 1 views
10

Sto configurando una nuova app Web che non usa xml (nessun web.xml e nessun spring.xml). Ho quasi tutto lavoro tranne che non riesco a capire come registrare SaltSource. Devo sostituire quanto segue con l'equivalente Java.Come registrare SaltSource in Java Config (senza xml)

<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> 

Finora ho questo 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 
} 

così come faccio a registrare il SaltSource modo che si finisce in DaoAuthenticationProvider (come l'XML è fatto in passato)?

+0

ho preso a lavorare facendo te seguente: –

+1

protetta configure void (AuthenticationManagerBuilder auth) throws Exception { \t ReflectionSaltSource rss = new ReflectionSaltSource(); \t rss.setUserPropertyToUse ("salt"); \t DaoAuthenticationProvider provider = new DaoAuthenticationProvider(); \t provider.setSaltSource (rss); \t provider.setUserDetailsService (authService); \t provider.setPasswordEncoder (new MyPasswordEncoder()); auth.authenticationProvider (provider); } –

risposta

11

ho avuto modo di lavorare nel modo seguente:

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); 
} 
+0

Se si dispone dei messaggi personalizzati di Spring Security, non dimenticare di richiamare 'provider.setMessageSource()'. –