2014-02-25 89 views
0

我有一個基於Seam框架構建的Web應用程序,目前我正在使用構建於Spring上的新Web應用程序替換此應用程序。我們用戶的登錄信息存儲在數據庫中,並使用salted hash進行加密。這些都是在Seam應用與產生的電流:在Spring Web應用程序中使用Seam Web應用程序的用戶登錄信息

PasswordHash.instance().generateSaltedHash(plainTextPassword, saltPhrase, "SHA") 

我遇到的問題是,新的Spring應用程序必須使用相同的登錄名和我無法複製的密碼散列。我目前有這個SecurityConfig類:

@Configuration 
@EnableWebSecurity 
public class SecurityConfig extends WebSecurityConfigurerAdapter { 

@Autowired 
private UserDAO userDAO; 

@Override 
public void configure(AuthenticationManagerBuilder auth) throws Exception { 
    for (AdminUser u : userDAO.getAdminUsers()) { 
     System.out.println("Granting access to login: " + u.getLogin() 
       + " password: " + u.getPassword()); 
     auth.inMemoryAuthentication().withUser(u.getLogin()) 
       .password(u.getPassword()).roles("USER"); 
     } 
    } 
} 

任何幫助,將不勝感激。如果有任何額外的代碼需要查看,請添加評論。

回答

0

配置彈簧安全性以從給定表中讀取用戶的方法是通過DaoAuthenticationProvider,請參見official docs

有一種可以定義如何哈希和鹽醃應該做支持,波紋管是XML的樣子:

<bean id="daoAuthenticationProvider" 
    class="org.springframework.security.authentication.dao.DaoAuthenticationProvider"> 
    <property name="userDetailsService" ref="inMemoryDaoImpl"/> 
    <property name="saltSource" ref="saltSource"/> 
    <property name="passwordEncoder" ref="passwordEncoder"/> 
</bean> 

在Java配置,在配置方法有可能實例化一個DaoAuthenticationProvider,將其配置並使用API​​ auth.authenticationProvider(...)將其傳遞給AuthenticationManagerBuilder