对于现有的工作应用,我想提供一个辅助身份验证提供者,可能带有DaoAuthenticationProvider。假设它是用于验证“备份”密码,或者是由于严格的密码策略而更改的先前密码,并且用户忘记了新密码。 ; - )
为了概念验证,这个secondaryAuthenticationProvider的实现会是什么样的,无论传入的凭据如何,它都将始终对用户进行身份验证? (返回经过身份验证的Authentication对象的内容)
许多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 :(得分:0)
如果您只有一个替代密码,则可以声明由特殊DaoAuthenticationProvider
支持的第二个UserDetailsService
,这将使用该备用密码生成UserDetails
。
否则,您可以创建自定义AuthenticationProvider
。 DaoAuthenticationProvider
中的凭据检入发生在additionalAuthenticationChecks()
,因此如果您想要更改该逻辑,可以创建DaoAuthenticationProvider
的子类并使用您的实现覆盖此方法。
例如,如果要对用户进行身份验证而不管其凭据如何,则可以使用空实现覆盖此方法。
答案 1 :(得分:0)
听起来我应该创建一个具有此行为的 UserDetailsService - 这是迄今为止最简单的方法。