Я пытаюсь написать приложение, которое предложит пользователю управлять пользователями в системе LDAP. Одна из особенностей этого - функциональность «Forgot Password».LDAP: Как сбросить значение поля pwdReset
- Пользователь использует мое приложение сбросить свой пароль
- я задать несколько вопросов безопасности, и если они правильны, перенаправить его на новый экран - новый экран пароля.
- Пользователь вводит новый пароль (так как он забыл свой старый)
- Я использую admin Контекст и сбрасываю пароль пользователя (используя
modifyAttributes(..)
). - Система LDAP, набор
pwdReset
доtrue
, указывающий, что пароль был изменен администратором и должен быть изменен пользователем.
Теперь я хочу установить это как false, потому что я не хочу, чтобы пользователь снова менял свой пароль (как он уже делал выше), поэтому я явно изменяю его на false. Но я получаю ошибку
javax.naming.directory.SchemaViolationException: [LDAP: error code 65 - Object Class Violation]; remaining name 'cn=XXXX,ou=XXXXOU,O=XXXX'
Каков путь вокруг? Есть ли другая альтернатива?
Для Другой крупный, код для сброса pwdReset
как в соответствии с:
List<ModificationItem> modsList = new ArrayList<ModificationItem>();
BasicAttribute attribute = new BasicAttribute(ATTR_PASSWORDRESET, "false");
modsList.add(new ModificationItem(DirContext.REPLACE_ATTRIBUTE, attribute));
ModificationItem [] modsArr = modsList.toArray(new ModificationItem[modsList.size()]);
modsArr = modsList.toArray(new ModificationItem[modsList.size()]);
this.adminCtx.modifyAttributes(userName, modsArr);
А вот мой pwdPolicy
Итак, вы вообще не используете [tag: OpenLDAP], вы используете продукт IBM? Не помещайте без разбора. – EJP