atributo para ativar/desativar usuário no openLDAP usando java

atributo para ativar/desativar usuário no openLDAP usando java

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 pwdAccountLockedTimeatributo 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 ldapaddarquivo 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.

informação relacionada