Java アプリケーションの 1 つに openLDAP を設定しています。ユーザー名とパスワードは openLDAP に保存され、ユーザーはアプリケーションを介して (javax.naming.directory API を使用して) 自分のパスワードを更新できます。ユーザーを既存の Sun Directory Server から openLDAP にインポートしました。インポートは成功し、パスワードは SSHA 形式で暗号化されました。アプリケーションからパスワードを更新すると、パスワードが「プレーン テキスト」形式で保存されることに気付きました。Apache Directory Studio でパスワードを表示すると、パスワードを再表示できます。後で何度もグーグル検索して、slapd.conf ファイルに「password-hash {SSHA}」を設定しようとしましたが、それも役に立ちませんでした。Windows環境にいます。パスワードをプレーンテキスト形式で openLDAP に渡しています。コード内で暗号化は行われません。アプリケーションで暗号化できることは知っていますが、openLDAP で暗号化することをお勧めします。openLDAP 側で何かできることがあれば教えてください。
これは、私が今日パスワードを変更するために使用する Java コードです。これは、過去 7 年間、既存の環境で正常に機能しています。
ModificationItem[] newAttribs = new ModificationItem[1];
Attribute passwordAttrib = new BasicAttribute(DirectoryConstants.USER_PASSWORD, password);
ModificationItem passwordItem = new ModificationItem(DirContext.REPLACE_ATTRIBUTE, passwordAttrib);
newAttribs[0] = passwordItem;
.....
DirContext ctx = this.getContext();
ctx.modifyAttributes( DirectoryConstants.USER_UID + "=" + userId + "," + ou, newAttribs);