2014-01-06 1 views
1

Мне нужно удалить операционный атрибут из накладкой политики под названием pwdAccountLockedTimeКак удалить операционный атрибут с помощью ldaptemplate

я следовал this Q&A, которые предполагают путь № 2:

Использование LdapTemplate#modifyAttributes(Name, ModificationItem[]) непосредственно, вручную, строящей ModificationItem массив.

Вот мой код:

Name dn = buildDn(user); 
DirContextOperations context = ldapTemplate.lookupContext(dn); 
ModificationItem[] modificationItems; 
modificationItems = new ModificationItem[1]; 
modificationItems[0] = new ModificationItem(DirContextAdapter.REMOVE_ATTRIBUTE, 
              new BasicAttribute(
               "pwdAccountLockedTime", dn)); 
ldapTemplate.modifyAttributes(dn,modificationItems); 

Я проверил пользователь и этот атрибут все еще существует там.

Что мне не хватает?

ответ

0

Кажется, что вы намерены разблокировать учетную запись, которая была заблокирована слишком большим количеством неправильных попыток пароля в OpenLdap.

Если учетная запись пользователя заблокирована (pwdLockout ИСТИНА), то это может быть unlocked by an administrator с использованием одной из следующих процедур:

Удалить операционный атрибут pwdAccountLockedTime. Эта процедура позволяет пользователю продолжать использовать текущий пароль и действует только в том случае, если пароль еще не истек.

Добавить рабочий атрибут pwdReset со значением TRUE или FALSE. FALSE действует только в том случае, если пароль не истек и имеет тот же эффект, что и удаление pwdAccountLockedTime.

В большинстве версий openLDAP вы можете удалить pwdAccountLockedTime.

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

В соответствии с разделом 3.4 rfc4512 «Не все рабочие атрибуты могут быть изменены пользователем».

-jim

+0

delete pwdAccountLockedTime - это то, что я готов сделать. Но я пытаюсь найти способ, как это сделать. Как вы можете видеть в моем вопросе, я пытался, но это не сработало. вы знаете, как это сделать? – rayman

+0

Но были ли вы связаны с LDAP в качестве учетной записи администратора? – EJP

+0

Попробуйте использовать известный код типа Apache Directory Studio и используйте учетную запись администратора. О, и никогда не используйте JNDI, используя текущий хороший LDAP SDK, например https://www.unboundid.com/products/ldap-sdk/ -jim – jwilleke

0

У вас нет. Операционные атрибуты для сервера LDAP, а не для приложений. Они предназначены для чтения только для приложений.

Однако этот конкретный атрибут может быть изменен учетной записью администратора. Единственный способ изменить это - это время блокировки. В противном случае only a password administrator can unlock the account: см. # 5.3.3.

+0

Предположим, что я являюсь администратором паролей. как я могу разблокировать это? programatilly? или? Кстати, вы проверили ссылку, которую я разместил? Они отвечают, что мы можем удалить его обходным путем. Попытка достичь этого – rayman

+0

Ссылка, которую вы опубликовали, должна быть неверной. Это нарушает основной принцип LDAP. Все, что вы делаете при привязке к администратору, - это действие администратора. – EJP

+0

Так как я могу связать как администратор programticlly и разблокировать заблокированного пользователя? это требование, которое наша система управления предполагает поддерживать – rayman

 Смежные вопросы

  • Нет связанных вопросов^_^