Java を使用して openLDAP でユーザーを有効/無効にする属性

Java を使用して openLDAP でユーザーを有効/無効にする属性

私のユーザーは 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

userAccountControlはAD属性なので、openldapでは見つかりません(inerOrgPerson の定義はありませんuserAccountControl。ユーザーをロックしたい場合は、別の方法で行う必要があります。

1 つの可能性は、パスワード ポリシー (ppolicy) オーバーレイを使用することです。ppolicy はpwdAccountLockedTime属性を定義します。この属性が "00000101000000Z" に設定されている場合、管理ロックを示します。これを機能させるには、LDAP ツリーに ppolicy を含める必要があります。これは基本的に、ファイルldapaddへの の追加を意味しますppolicy.ldif

もう 1 つの可能性は、ユーザーのパスワードをロックを示すものに変更することです。たとえば、{SSHA}パスワードのプレフィックスを に変更すると{SSHA}!、ユーザーがロックされているかどうかを簡単に示すことができます。さらに、追加のオーバーレイは必要なく、ユーザーのログインも防止できます。

関連情報