我的用户是 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}!
,您可以轻松指示用户是否被锁定。作为奖励,您不需要任何额外的覆盖,并且它也可以阻止用户登录。