Невозможно изменить значение ds-pwp-account-disabled в openDJ через spring LDAP

Я использую openDJ для LDAP и не могу изменить значение атрибута ds-pwp-account-disabled в openDJ из весеннего шаблона ldap.

Я создал объект класса DirContextOperations через spring ldap. Когда я получаю значение атрибута ds-pwp-account-disabled с помощью spring ldap, оно дается. Но это не позволяет обновлять значение атрибута ds-pwp-account-disabled через spring ldap. Можете ли вы помочь мне, как мне обновить значение атрибута ds-pwp-account-disabled через spring ldap. Я прочитал так много статей в Google, это может быть проблема с привилегиями в opendj через springldap или может быть что-то другое.

Я делюсь некоторым кодом, чтобы определить, как я использую spring ldap с помощью open DJ--

частный LdapTemplate ldapTemplate;

ErrorDTO createAccountIfNotExists(Account account){

    DirContextAdapter context = new DirContextAdapter(dn);
    context.setAttributeValues(OBJECTCLASS, new String[] { TOP, USERACCOUNTS });
    mapToContext(account, context);
    try {
        ldapTemplate.bind(context);

    } catch (Exception e) {
    }
    return error;
}

public LdapTemplate getLdapTemplate() {
    return ldapTemplate;
}

public void setLdapTemplate(LdapTemplate ldapTemplate) {
    this.ldapTemplate = ldapTemplate;
}

void mapToContext(Account account, DirContextOperations context) {
    context.setAttributeValue("cn", account.getFirstName());
    context.setAttributeValue("sn", account.getLastName());
    context.setAttributeValue("x-user-id", account.getUserId());
    context.setAttributeValue("mail", account.getEmail());
    context.setAttributeValue("givenname", account.getFirstName());
    context.setAttributeValue("mobile", account.getMobilePhone());
    context.setAttributeValue("telephonenumber", account.getBusinessPhone());
    context.setAttributeValue("title", account.getJobTitle());
    context.setAttributeValue("x-incident-ref", account.getIncidentRef());
    context.setAttributeValue("x-client-category", account.getClientCategory());
    context.setAttributeValue("x-organization", account.getOrganization());
    context.setAttributeValue("facsimiletelephonenumber", account.getFax());
    context.setAttributeValue("x-bureau", account.getBureau());
    context.setAttributeValue("x-company", account.getCompany());
    context.setAttributeValue("ds-pwp-account-disabled", account.getEnabled());
    if (account.getAccountCode() != null) {
        context.setAttributeValue("x-account-code", account.getAccountCode());
        context.setAttributeValue("uid", account.getAccountCode() + "#" + account.getUserId());
    } else {
        context.setAttributeValue("uid", account.getUserId());
    }

}

Ниже приведена ошибка - org.springframework.ldap.InvalidAttributeValueException: неверно сформированное значение атрибута «ds-pwp-account-disabled»; вложенным исключением является javax.naming.directory.InvalidAttributeValueException: неверно сформированное значение атрибута 'ds-pwp-account-disabled'; оставшееся имя 'uid=coy#user8,ou=учетные записи пользователей'


person sharmav    schedule 28.03.2016    source источник
comment
Пожалуйста, поместите строки кода в markdown like this.   -  person surajs1n    schedule 28.03.2016
comment
Здравствуйте, я был бы признателен, если бы вы могли сказать мне, как вы отключили этот ds-pwp-account-disabled? Я извлекаю пользовательские атрибуты, но не могу.   -  person karansardana    schedule 24.11.2016


Ответы (2)


Атрибут ds-pwp-account-disabled имеет логический синтаксис LDAP. Сервер OpenDJ принимает только значения «true» и «false». Я не эксперт в Spring LDAP, но если синтаксис атрибута неизвестен, я сомневаюсь, что библиотека правильно транспонирует логические значения Java в правильные значения LDAP.

person Ludovic Poitou    schedule 29.03.2016

As I know if

ds-pwp-account-disabled
attribute not exists in an entry, then the user won't be disabled = the user is enabled.

Так что попробуйте, чтобы не добавлять этот атрибут, если пользователь включен.

if(!account.getEnabled()){ //suppose that it's returning a boolean
  context.setAttributeValue("ds-pwp-account-disabled", "true");
}
person zsom    schedule 15.04.2016