2010-02-25 44 views
0

對於現有的工作程序,我想提供一個輔助的AuthenticationProvider,可能與一個DaoAuthenticationProvider。比方說,它是用來驗證「備份」的密碼,或者是由於改變了嚴格的密碼策略和用戶忘記新密碼之前密碼。 ;-)短切/旁路的Spring Security 2.0身份驗證使用自定義的AuthenticationManager

對於概念驗證,會是什麼實現像這個secondaryAuthenticationProvider,將永遠無論輸入憑證的認證用戶? (東西,返回一個驗證Authentication對象)

哪個MANY org.springframework.security.providers &分裝的類和方法,我應該看看嗎?

示例配置:

<bean id="authenticationManager" class="org.springframework.security.providers.ProviderManager"> 
    <property name="providers"> 
    <list> 
     <ref local="daoAuthenticationProvider"/> 
     <ref local="secondaryAuthenticationProvider"/> <!-- new AuthProv --> 
     <ref local="rememberMeAuthenticationProvider"/> 
    </list> 
    </property> 
</bean> 

回答

0

如果你只有一個替代密碼,你可以聲明通過特殊UserDetailsService支持的第二DaoAuthenticationProvider,這將產生UserDetails與替代密碼。

否則,您可以創建自定義AuthenticationProvider。憑據檢查發生在additionalAuthenticationChecks()DaoAuthenticationProvider,所以如果你想改變這個邏輯,你可以創建一個DaoAuthenticationProvider子類覆蓋此方法與實現。

例如,如果你想不管其證書來認證用戶,則可以覆蓋此方法與空的實現。

+0

我假設默認的AuthenticationProvider比較用的UserDetails的憑據,但它聽起來像你說的「認證」是基於UserDetailService是否返回一些的UserDetails與否。需要對文檔... – marklai 2010-02-25 16:12:45

+0

@marklai讀了起來:是的,我錯了。我確定了答案。 – axtavt 2010-02-25 16:55:34

0

聽起來好像你應該創建自己的的UserDetailsS​​ervice有這種行爲 - 這將是迄今爲止做的最簡單的方法。

相關問題