Политика паролей не работает полностью в Windows Server 2016 AD при использовании UnboundID в приложении springboot

У меня проблемы с AD в Windows server 2016 с такой политикой паролей:

Теперь в приложении Springboot с UnboundID первая проблема, которую я обнаружил, заключается в том, что правило минимального срока действия пароля игнорируется, пока я меняю пароль, из AD не поступает ошибка, и приложение меняет пароль правильно, примерно так:

public String changePassword(UserAndPasswordDTO credentials) {
    // Create connection with active directory
    final LDAPConnection connection = this.createADConnection(myHost, Integer.parseInt(port), dn, password);
    if (connection != null) {
        try {
            // Properly encode the password. It must be enclosed in quotation marks,
            // and it must use a UTF-16LE encoding.
            logger.debug("Going to encode the password.");
            byte[] quotedPasswordBytes = null;
            try {
                final String quotedPassword = '"' + credentials.getPassword() + '"';
                quotedPasswordBytes = quotedPassword.getBytes("UTF-16LE");
            } catch (final UnsupportedEncodingException uee) {
                logger.error("Unable to encode the quoted password in UTF-16LE:  "
                        + StaticUtils.getExceptionMessage(uee));
            }
            // Search in active directory
            SearchResult searchResult = connection.search("dc=" + domain + ",dc=com", SearchScope.SUB,
                    "sAMAccountName=" + credentials.getUsername());
            List<SearchResultEntry> searchEntries = searchResult.getSearchEntries();
            if (searchEntries.size() != 1) {
                // The search didn't match exactly one entry.
                logger.debug("Coming out of the change password service");
                return "The search didn't match exactly one entry.";
            } else {
                // Get the dn value of the search
                String userDN = searchEntries.get(0).getAttribute("distinguishedName").getValue();
                // Attempt to modify the user password.
                final Modification mod = new Modification(ModificationType.REPLACE, "unicodePwd",
                        quotedPasswordBytes);
                connection.modify(userDN, mod);
                logger.debug("Coming out of the change password service");
                return "Password changed succesfully";
            }
        } catch (LDAPException e) {
            logger.error("Error when try to search the user to modify his password");
            logger.debug("Coming out of the change password service");
            return "Error when try to search the user to modify his password";
        } finally {
            connection.close();
        }
    } else {
        // Connection to AD is null
        logger.debug("Connection to active directory is null");
        logger.debug("Coming out of the change password service");
        return "Active Directory connection error";
    }
}

В этом сценарии также должна работать принудительная история паролей, но она позволяет повторять пароль, т.е. менять пароль на abc+000 более 10 раз подряд, что означает, что эта история паролей не генерирует ошибку или что-то в этом роде. Итак, вот мои вопросы... Почему это происходит? и как я могу это решить? Любая помощь будет оценена по достоинству. Благодарность!

PD: Я протестировал требования сложности и правила длины, и они работают нормально, возвращая ошибку для действия в AD. PD2: AD работает по протоколу LDAPS.

1 ответ

Вы разместили это где-то в другом месте, но я подумал, что здесь будет проще общаться. Я провел быстрое исследование и обнаружил это... Он не поддерживает никаких функций, связанных с политикой паролей (например, истечение срока действия пароля, блокировка учетной записи, отклонение слабых паролей и т. Д.). Кроме того, он никоим образом не скрывает сохраненные пароли и не поддерживает использование паролей, которые уже были закодированы в той или иной форме. https://docs.ldap.com/ldap-sdk/docs/in-memory-directory-server.html

Другие вопросы по тегам