атрибут для включения/выключения пользователя в openLDAP с использованием java

атрибут для включения/выключения пользователя в openLDAP с использованием java

Мои пользователи — inetOrgPerson. Какой атрибут будет для включения/отключения пользователей? Я использую библиотеку JNDI и пробую этот код для Active Directory, но получаю LDAP: код ошибки 17 — userAccountControl: тип атрибута не определен. Если я пытаюсь ввести attributes.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). Если вы хотите заблокировать своих пользователей, вам придется сделать это каким-то другим способом.

Одна из возможностей — использовать наложение Password Policy (ppolicy). Ppolicy определяет pwdAccountLockedTimeатрибут, который, если установлен на "00000101000000Z", указывает на административную блокировку. Чтобы это работало, вам нужно включить ppolicy в ваше дерево LDAP, что по сути означает с ldapaddфайлом ppolicy.ldif.

Другая возможность — изменить пароль пользователя на что-то, что указывает на блокировку. Например, изменив префикс {SSHA}пароля на {SSHA}!, вы можете легко указать, заблокирован ли пользователь. В качестве бонуса вам не нужны никакие дополнительные наложения, и это также не позволяет пользователю войти в систему.

Связанный контент