![Java を使用して openLDAP でユーザーを有効/無効にする属性](https://rvso.com/image/760630/Java%20%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%20openLDAP%20%E3%81%A7%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%82%92%E6%9C%89%E5%8A%B9%2F%E7%84%A1%E5%8A%B9%E3%81%AB%E3%81%99%E3%82%8B%E5%B1%9E%E6%80%A7.png)
私のユーザーは 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}!
、ユーザーがロックされているかどうかを簡単に示すことができます。さらに、追加のオーバーレイは必要なく、ユーザーのログインも防止できます。