【问题标题】:Unable to change value of ds-pwp-account-disabled in openDJ through spring LDAP无法通过 spring LDAP 在 openDJ 中更改 ds-pwp-account-disabled 的值
【发布时间】:2016-04-16 03:57:51
【问题描述】:

我正在为 LDAP 使用 openDJ,我无法从 spring ldap 模板更改 openDJ 中的 ds-pwp-account-disabled 属性值。

我已经通过 spring ldap 创建了 DirContextOperations 类对象。当我使用 spring ldap 获取 ds-pwp-account-disabled 属性的值时,它会给出。但它不允许通过 spring ldap 更新 ds-pwp-account-disabled 属性值。你能帮我如何通过spring ldap更新ds-pwp-account-disabled属性值。我在google上看了很多文章,可能是通过springldap修改opendj中的权限问题,也可能是其他的。

我正在分享一些代码来确定我如何通过 open DJ 使用 spring ldap--

私有 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: Malformed 'ds-pwp-account-disabled' 属性值;剩余名称 'uid=coy#user8,ou=User Accounts'

【问题讨论】:

  • 请将代码行放入markdown like this
  • 你好,如果你能告诉我你是如何得到这个 ds-pwp-account-disabled 的,我将不胜感激?我正在提取用户属性,但无法提取。

标签: java spring-ldap opendj


【解决方案1】:

ds-pwp-account-disabled 属性具有 LDAP 语法布尔值。 OpenDJ 服务器唯一接受的值是“true”和“false”。 我不是 Spring LDAP 方面的专家,但如果属性的语法未知,我怀疑该库是否会将 Java 布尔值正确转换为正确的 LDAP 值。

【讨论】:

    【解决方案2】:

    据我所知

    ds-pwp-account-disabled
    属性不存在于条目中,则用户不会被禁用 = 用户已启用。

    所以试一试,不加这个属性就是用户启用了。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-11
      • 2017-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多