
私のユーザーは 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}!
、ユーザーがロックされているかどうかを簡単に示すことができます。さらに、追加のオーバーレイは必要なく、ユーザーのログインも防止できます。