我在我的应用程序中配置了两个身份验证提供程序,一个使用LDAP,另一个使用数据库查找:
<sec:authentication-manager>
<sec:ldap-authentication-provider server-ref="ldapServer" />
<sec:authentication-provider user-service-ref="dbUserDetailsService" />
</sec:authentication-manager>
Spring首先尝试使用LDAP,如果在那里找不到用户,它会尝试我的自定义提供程序。
我想要做的是强制Spring对所有可用提供商中的用户进行身份验证。在这种情况下,它只会尝试我的自定义提供程序,如果它可以首先在LDAP服务器中执行登录。如果自定义提供程序中的身份验证失败,则整个身份验证将失败。
使用Spring Security可以实现这个目标吗?
答案 0 :(得分:1)
我认为你可以实现自己的身份验证提供程序,在其中注入两个实例 - 一个是LdapAuthenticationProvider,另一个是DaoAuthenticationProvider。 您必须实现一个方法
public Authentication authenticate(Authentication authentication) throws AuthenticationException
您可以将身份验证调用首先代理到LdapAuthenticationProvider,如果成功,则调用DaoAuthenticationProvider。