У меня возникли проблемы с тем, как сохранить пароль в Apache DS LDAP в хэше SSHA вместо простого текста. Насколько я могу судить, правильный способ сделать это - настроить Apache DS на использование SSHA для хранения паролей, а затем при установке пароля отправлять только обычный текст. Однако я не могу понять, как настроить Apache DS для этого.
Я ввел хешированный пароль в LDAP (используя интерфейс администратора для LDAP), и Apache DS правильно аутентифицируется по правильному паролю. Однако мне нужно вставить пароль из нашего Java-приложения. Это не может быть необычным запросом, поэтому я должен что-то упустить.
Вот мой код для установки пароля от java с использованием интерфейса LdapTemplate от org.springframework.ldap.core
public void storeNewPassword(final String userId, final String password) {
final DistinguishedName dn = new DistinguishedName("dc=users,dc=pms,dc=com");
dn.add("uid", userId);
Attribute pass = new BasicAttribute("userpassword", password);
final ModificationItem mi = new ModificationItem(
DirContext.REPLACE_ATTRIBUTE,
pass);
ldapTemplate.modifyAttributes(dn, new ModificationItem[] {mi});
}
Приведенный выше код правильно устанавливает пароль, но когда я смотрю на сервер Apache DS, я вижу, что пароль был сохранен в виде обычного текста:
Пожалуйста, может кто-нибудь проверить, является ли это правильным подходом к установке паролей, и предложить, как я могу настроить Apache DS для применения SSHA к паролям, которые он получает.
Спасибо