Java를 사용하여 openLDAP에서 사용자를 활성화/비활성화하는 속성

Java를 사용하여 openLDAP에서 사용자를 활성화/비활성화하는 속성

내 사용자는 inetOrgPerson 입니다. 사용자를 활성화/비활성화하는 속성은 무엇입니까? 저는 JNDI 라이브러리를 사용하고 있으며 Active Directory용인 이 코드를 시도하고 있는데 LDAP: error code 17 - userAccountControl: attribute type undefine이 표시됩니다. 속성을 넣으려고 하면.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

userAccountControlAD 속성이므로 openldap에서는 찾을 수 없습니다(inerOrgPerson의 정의) 이 없습니다 userAccountControl. 사용자를 잠그려면 다른 방법을 사용해야 합니다.

한 가지 가능성은 암호 정책(ppolicy) 오버레이를 사용하는 것입니다. ppolicy는 pwdAccountLockedTime"00000101000000Z"로 설정된 경우 관리 잠금을 나타내는 속성을 정의합니다. 이것이 작동하려면 LDAP 트리에 ppolicy를 포함해야 합니다. 이는 기본적으로 파일 ldapadd에 대한 정책을 의미합니다 ppolicy.ldif.

또 다른 가능성은 사용자의 비밀번호를 잠금을 나타내는 비밀번호로 변경하는 것입니다. 예를 들어, {SSHA}비밀번호의 접두어를 로 변경하면 {SSHA}!사용자가 잠겨 있는지 쉽게 나타낼 수 있습니다. 보너스로 추가 오버레이가 필요하지 않으며 사용자가 로그인하는 것도 방지합니다.

관련 정보