![atributo para ativar/desativar usuário no openLDAP usando java](https://rvso.com/image/760630/atributo%20para%20ativar%2Fdesativar%20usu%C3%A1rio%20no%20openLDAP%20usando%20java.png)
Meus usuários são inetOrgPerson . Qual seria o atributo para ativar/desativar usuários? Estou usando a biblioteca JNDI e estou tentando este código que é para o Active Directory, mas estou recebendo LDAP: error code 17 - userAccountControl: attribute type undefined . Se eu tentar colocar atributos.put("userAccountControl","0x0001"); ao criar o usuário, recebo o mesmo erro.
Qualquer ideia?
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);
}
Responder1
userAccountControl
é um atributo do AD, então no openldap você não o encontrará (odefinição de inerOrgPersonnão tem userAccountControl
). Se você quiser bloquear seus usuários, terá que fazer isso de outra maneira.
Uma possibilidade é usar a sobreposição da Política de Senha (ppolicy). A ppolicy define um pwdAccountLockedTime
atributo que, se definido como "00000101000000Z", indica um bloqueio administrativo. Para que isso funcione, você deve incluir ppolicy em sua árvore LDAP, o que basicamente significa um ldapadd
arquivo ppolicy.ldif
.
Outra possibilidade é alterar a senha do usuário para algo que indique bloqueio. Por exemplo, alterando o {SSHA}
prefixo da senha para {SSHA}!
, você pode indicar facilmente se o usuário está bloqueado. Como bônus, você não precisa de sobreposições extras e também impede que o usuário faça login.