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

Мои пользователи - inetOrgPerson. Какой атрибут будет включать / отключать пользователей? Я использую библиотеку JNDI, и я пробую этот код для активного каталога, но получаю 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
задан 3 December 2020 в 15:52
1 ответ

userAccountControl является атрибутом AD, поэтому в openldap вы его не найдете (определение inerOrgPerson не имеет userAccountControl). Если вы хотите заблокировать своих пользователей, вы должны сделать это другим способом.

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

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

1
ответ дан 3 December 2020 в 15:30

Теги

Похожие вопросы