Bezdepbonusu7Программирование: статьи и ответы

Вопрос

OpenLDAP возвращает предупреждение только об истечении срока действия пароля

Автор вопроса: GleebОтветов: 1

Я пытаюсь использовать политику паролей 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 возвращает "неверные учетные данные", но это не так.

как мне получить правильную причину, по которой аутентификация не удалась?

Спасибо.

javaspringopenldapspring-ldap

Ответы

Ответ 1 · рейтинг 2 · user207421

Когда вы получаете исключение, вы также можете иметь элементы управления ответом. Я не знаю, как это выглядит в Spring-LDAP, но я сделал это в JNDI через LdapContext.getResponseControls(). Контроль ответа должен содержать статус блокировки.

Однако с этим нужно быть осторожным. Вы не хотите сообщать пользователю, что учетная запись заблокирована. Это было бы на первый взгляд нарушением безопасности. Вы бы сообщили злоумышленнику, что учетная запись существует, и что дальнейшие немедленные попытки не увенчаются успехом, что помогает ему в его работе.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы