使用 Java 在 OpenLDAP 上启用/禁用用户的属性

使用 Java 在 OpenLDAP 上启用/禁用用户的属性

我的用户是 inetOrgPerson 。启用/禁用用户的属性是什么?我正在使用 JNDI 库,我正在尝试此用于活动目录的代码,但我收到 LDAP:错误代码 17 - userAccountControl:属性类型未定义 。如果我在创建用户时尝试 put attribute.put("userAccountControl","0x0001"); ,我会收到相同的错误。

任何想法?

public void disableEnableUser(String user) throws Exception {
    ModificationItem[] mods = new ModificationItem[1];
    //To enable user
    //int UF_ACCOUNT_ENABLE = 0x0001;
    //mods[0] = new ModificationItem(DirContext.REPLACE_ATTRIBUTE, new BasicAttribute("userAccountControl",Integer.toString(UF_ACCOUNT_ENABLE)));

    // To disable user
    int UF_ACCOUNT_DISABLE = 0x0002;
    mods[0] = new ModificationItem(DirContext.REPLACE_ATTRIBUTE, new BasicAttribute("userAccountControl",Integer.toString(UF_ACCOUNT_DISABLE)));

    connection.modifyAttributes("path to user", mods);
}

答案1

userAccountControl是 AD 属性,因此在 openldap 中你找不到它(inerOrgPerson 的定义没有userAccountControl)。如果您想锁定用户,则必须通过其他方式进行。

一种可能性是使用密码策略 (ppolicy) 覆盖。ppolicy 定义一个pwdAccountLockedTime属性,如果将其设置为“00000101000000Z”,则表示管理锁定。要使此功能有效,您必须将 ppolicy 包含在 LDAP 树中,这基本上意味着包含ldapadd文件ppolicy.ldif

另一种可能性是将用户的密码更改为表示锁定的内容。例如,通过将{SSHA}密码前缀更改为{SSHA}!,您可以轻松指示用户是否被锁定。作为奖励,您不需要任何额外的覆盖,并且它也可以阻止用户登录。

相关内容