atributo para habilitar/deshabilitar usuario en openLDAP usando java

atributo para habilitar/deshabilitar usuario en openLDAP usando java

Mis usuarios son inetOrgPerson. ¿Cuál sería el atributo para habilitar/deshabilitar usuarios? Estoy usando la biblioteca JNDI y estoy probando este código que es para el directorio activo pero obtengo LDAP: código de error 17 - userAccountControl: tipo de atributo indefinido. Si intento poner atributos.put("userAccountControl","0x0001"); Al crear el usuario, aparece el mismo error.

¿Alguna idea?

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);
}

Respuesta1

userAccountControles un atributo AD, por lo que en openldap no lo encontrará (eldefinición de inerOrgPersonno tiene userAccountControl). Si desea bloquear a sus usuarios, debe hacerlo de otra manera.

Una posibilidad es utilizar la superposición de Política de contraseñas (ppolicy). La política define un pwdAccountLockedTimeatributo que, si se establece en "00000101000000Z", indica un bloqueo administrativo. Para que esto funcione, debe incluir ppolicy en su árbol LDAP, lo que básicamente significa un archivo ldapaddcon el ppolicy.ldifarchivo.

Otra posibilidad es cambiar la contraseña del usuario por algo que indique bloqueo. Por ejemplo, cambiando el {SSHA}prefijo de la contraseña a {SSHA}!, podrás indicar fácilmente si el usuario está bloqueado. Como beneficio adicional, no necesita superposiciones adicionales y también evita que el usuario inicie sesión.

información relacionada