Spring security Spring Security LDAP身份验证错误-身份验证异常而不是密码锁

Spring security Spring Security LDAP身份验证错误-身份验证异常而不是密码锁,spring-security,ldap,spring-security-ldap,Spring Security,Ldap,Spring Security Ldap,我已经使用以下配置设置了ldap身份验证。我需要用户使用LDAP数据存储进行身份验证,因此我将pwdMaxFailure设置为2 身份验证工作正常,但是每次我使用错误的密码登录时,都会出现以下异常,而不是密码锁异常。我不认为SpringLDAP在验证用户时检查PwdPolicy(计算密码尝试次数) ne=(javax.naming.AuthenticationException) javax.naming.AuthenticationException:[LDAP:错误代码49- 无效的\u凭据

我已经使用以下配置设置了ldap身份验证。我需要用户使用LDAP数据存储进行身份验证,因此我将pwdMaxFailure设置为2

身份验证工作正常,但是每次我使用错误的密码登录时,都会出现以下异常,而不是密码锁异常。我不认为SpringLDAP在验证用户时检查PwdPolicy(计算密码尝试次数)

ne=(javax.naming.AuthenticationException) javax.naming.AuthenticationException:[LDAP:错误代码49- 无效的\u凭据:绑定失败:错误\u 229无法对用户进行身份验证 cn=管理员,ou=用户,o=组织]

我的LDIF文件是

dn:cn=admin,ou=users,o=organization objectClass:inetOrgPerson
objectClass:organizationalPerson对象类:person对象类: 顶级cn:管理员序列号:管理员uid:管理员用户密码: E1NTSEF9BELTUNZLY9OK1JSV2HCWEM2U2ZZNDH0LZD0OHBLBJFRDJKXN3C9P Q==
CreateTimestStamp:20141003000008.689Z创建者姓名: 0.9.2342.19200300.100.1.1=管理员,2.5.4.11=系统入口CSN:20141020004319.002000Z#000000#001#000000入口DN:cn=管理员,ou=用户,o=组织入口父ID: 8204b2df-ff5a-413a-a063-4ac30d35bee4入口UUID:: N2I1MTFLNJYTMDHJZS00YJA3LWIXIZITNTKYOTI3ZGE3ZTBI修饰符名称: 0.9.2342.19200300.100.1.1=管理员,2.5.4.11=系统修改时间戳:20141020004319.002Z PWD故障时间:20141020003207.120Z PWD历史: MjaxNDEWMDMwdawmdgunjgxwimxljmuni4xljqums4xndy2ljexns4xmjeums4
0MCM4I1LXUNRRHVZQ9 PWD政策子条目: cn=默认值,ou=pwdPolicy,o=组织

dn:cn=默认值,ou=pwdPolicy,o=组织对象类:设备
objectClass:pwdPolicy objectClass:top cn:default
pwdAttribute:userPassword pwdExpireWarning:3600 pwdGraceExpire: 1 pwdLockout:真实pwdLockout持续时间:120 pwdMaxAge:2592000
PWDMAX故障:2

spring配置文件如下所示


我得到以下异常,而不是密码锁异常

从:

8.1.1。如果帐户被锁定,则失败

如果按照第7.1节的规定锁定了帐户,则服务器 使用适当的resultCode(即。 invalidCredentials(49)在绑定操作的情况下,比较 (5) 在比较操作等情况下)。服务器可能会设置 错误:中的passwordPolicyResponse中的accountLocked(1) 控制消息的字段

因此,LDAP服务器运行正常

我不认为SpringLDAP在验证用户时检查PwdPolicy(计算密码尝试次数)


执行检查的是LDAP服务器。Spring需要提供额外的请求控制,使其能够查看上述密码锁定状态。但是在任何情况下,你都不想向用户透露为什么他在登录时登录失败:这是一个信息泄漏。这等于告诉攻击者用户名是正确的,这是不可取的。如果用户认为自己的密码正确,请让他询问登录失败的原因,或者让他查看丢失的密码序列。

感谢您的快速回复。登录无法创建上下文(使用错误的密码)后,在类PasswordPolicyAwareContextSource的catch块中,它正在调用PasswordPolicyControlExtractor.extractControl,其中responseControl为null。如果不为null,则检查ctrl是否已锁定。不确定我是否做了正确的事情,是否有任何方法可以使responseControl不为null。我不知道Spring的任何内容,但在LDAP中,您必须将“密码策略请求控件”附加到请求以获得带有响应的“密码策略响应控件”。