2010-02-25 82 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有这种行为 - 这将是迄今为止做的最简单的方法。

相关问题