openldap只返回密码过期的警告

qvtsj1bj  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(392)

我正在尝试使用openldap密码策略进行身份验证。
我的政策如下:

dn: cn=passwordDefault,ou=Policies,dc=company,dc=com
objectClass: pwdPolicy
objectClass: person
objectClass: top
cn: passwordDefault
sn: passwordDefault
pwdAttribute: userPassword
pwdCheckQuality: 0
pwdMinAge: 0
pwdMaxAge: 7776000
pwdMinLength: 8
pwdInHistory: 5
pwdMaxFailure: 5
pwdFailureCountInterval: 600
pwdLockout: TRUE
pwdLockoutDuration: 0
pwdAllowUserChange: TRUE
pwdExpireWarning: 604800
pwdGraceAuthNLimit: 0
pwdMustChange: FALSE
pwdSafeModify: FALSE

在测试策略时,我只能在密码过期时得到警告:

try {
        bindResult = bind(ldapConnection, userDN, userPassword);
    } catch (LDAPException le) {
        bindResult = new BindResult(le.toLDAPResult());
    }
   DraftBeheraLDAPPasswordPolicy10ResponseControl pwpResponse = DraftBeheraLDAPPasswordPolicy10ResponseControl.get(bindResult);
 DraftBeheraLDAPPasswordPolicy10WarningType warningType = pwpResponse.getWarningType();

警告类型唯一不为空的时间是在密码被导出时。
当帐户在5次尝试失败后被锁定时,ldap返回“坏凭证”,但事实并非如此。
如何获得身份验证失败的正确原因?
谢谢。

mpgws1up

mpgws1up1#

当您得到异常时,仍然可以使用响应控件。我不知道在springldap中是什么样子,但我已经通过jndi完成了 LdapContext.getResponseControls() . 响应控件应包含锁定状态。
但是你要小心。您不想向用户透露帐户已锁定。这将是一个初步的安全漏洞。您将向攻击者披露该帐户存在,并且进一步的立即尝试将不会成功,这两种尝试都有助于他的工作。

相关问题