Spring security 在进行身份验证之前,请检查用户名和密码的有效性

Spring security 在进行身份验证之前,请检查用户名和密码的有效性,spring-security,Spring Security,我使用的是SpringSecurity 3.2.5。我使用ActiveDirectoryLdapAuthenticationProvider作为身份验证提供程序。但是我想在通过Active Directory进行身份验证之前检查我的用户名和密码。 例如,在通过Active Directory启动身份验证过程之前,我想检查用户名和密码是否不相等,其中是否没有空格,或者其大小是否小于特殊大小 更新: Spring Security不允许用户名和/或密码为空,并引发此异常: 身份验证请求失败:org.

我使用的是SpringSecurity 3.2.5。我使用ActiveDirectoryLdapAuthenticationProvider作为身份验证提供程序。但是我想在通过Active Directory进行身份验证之前检查我的用户名和密码。 例如,在通过Active Directory启动身份验证过程之前,我想检查用户名和密码是否不相等,其中是否没有空格,或者其大小是否小于特殊大小

更新: Spring Security不允许用户名和/或密码为空,并引发此异常: 身份验证请求失败:org.springframework.security.Authentication.BadCredentialsException:错误的凭据

我在不同的过滤器中查找过,我认为我应该在UsernamePasswordAuthenticationFilter中进行检查,但我不确定,我不知道如何进行检查。我非常感谢你的帮助

提前谢谢

致以最良好的祝愿,
/默认情况下,如果用户试图提交空用户名或密码,则Spring Security将出错。就在LDAP身份验证尝试之前测试密码标准而言,这似乎本质上是不安全的。通过测试前提条件,您可以让攻击者了解密码可能是什么。此外,短路LDAP绑定尝试将有效规避Active Directory中配置的任何最大无效尝试阈值


简单地说,当涉及到身份验证时,除了您提供的用户名和密码是错误的之外,我们不想向用户提供任何特定的详细信息。

谢谢您的回复@MarkVieira。正如您所说,Spring Security不允许用户名和密码为空,在调用Active Directory之前,UsernamePasswordAuthenticationFilter引发此异常:
身份验证请求失败:org.springframework.Security.Authentication.BadCredentialsException:错误凭据
但我希望Spring Security也检查用户名和密码是否相等,或者是否有空格。我知道我可以用javascript等其他方法来实现这一点,但我希望将所有这些约束放在一个地方,并由Spring Security处理。正如您提到的@MarkVieira,如果错误消息显示了这些约束的详细信息,它可以被攻击者输入。但我认为只有一条登录失败的错误消息。这样做的短路逻辑仍然可以通过定时攻击暴露漏洞。此外,用户帐户可能未被锁定的问题仍然是一个问题。我很想知道你的用例是什么?为什么不让AD简单地验证他们的凭证呢?在任何情况下,您最好扩展
UsernamePasswordAuthenticationFilter
,并可能将您的逻辑放在被覆盖的
setDetails()中
方法进行检查并抛出
BadCredentialsException
,或者简单地调用超级实现。你有一个很好的理由被AD锁定。我会做一些测试,但我想我会听从你的建议,让AD来处理。谢谢你抽出时间。