6

私が知っているように、PHP では、ユーザーのパスワードを変更するために SSL 経由で LDAP に接続する必要があります。

SSLを必要とせずにLDAPパスワードを変更する別の方法、EG、他の言語(JAVA / ASP)はありますか?

ありがとう。

更新: セルフ アカウントのパスワードを変更しようとすると、「警告: ldap_mod_replace() [function.ldap-mod-replace]: Modify: Insufficient access」というメッセージが表示されます。他のユーザーのパスワードを変更しようとすると、エラー メッセージは表示されませんが、パスワードは古いパスワードのままです。

4

6 に答える 6

6

実際、多くの LDAP 実装では、パスワードを変更/設定するために SSL または TLS が必要です。これは LDAP サーバーによって設定された要件であり、アクセスに使用される言語ではありません。言語を変更しても、この特定のサーバー要件をオーバーライドすることはできません。

SSL/TLS 接続を確立できないという酌量すべき状況があることは理解していますが、一般的には、サーバーがそれを必要としない場合でも、このようなパスワード機能を絶対に暗号化する必要があります。

編集: 答えはslapdログにあると思います。ACL も確認する価値があります: OpenLDAP Software 2.4 Administrator's Guide, Section 8. Access Control

于 2011-01-27T03:52:36.760 に答える
3

ディレクトリは、ユーザー エントリの userPassword 属性にパスワード値を格納します。サーバーのアクセス制御設定によっては、ldapmodify などの標準ツールを使用して、指定したパスワード ポリシーに従って userPassword の値を設定できます。

ldapmodify -h host -p port -D "cn=Directory Manager" -w password
dn: uid=bjensen,ou=人々,dc=例,dc=com
changetype: 変更
置換: ユーザーパスワード
ユーザーパスワード: ChAnGeMe
于 2012-07-13T11:32:45.140 に答える
2

ユーティリティがありldappasswdます。例えば

ldappasswd -H ldap://ldap.example.com:389 -D "uid=account-name,ou=serviceaccounts,dc=example,dc=com" -S -W -ZZ

が返された場合referralは、代わりにそのサーバーを試す必要があります。通常、1 つのマスター サーバーと複数の読み取り専用サーバーがある場合。

于 2017-01-06T17:53:25.253 に答える
2

OpenLDAP または Active Directory を使用していますか? パスワードを変更するには、どちらも安全な接続が必要です。

ldap_mod_replace を使用して PHP で Active Directory のパスワードを変更することはできません。管理者でない場合は、ldap_modify_batch を使用する必要があります。

見てみましょう: https://msdn.microsoft.com/en-us/library/cc223248.aspx

置換を使用する場合 (古いパスワードを送信しない場合)、管理者のみがパスワードを変更できます。ただし、削除 (古いパスワードを使用) と追加 (新しいパスワードを使用) でバッチを使用すると、ユーザーは自分のパスワードを変更できます: http://php.net/ldap-modify-batch

于 2015-01-28T08:47:03.987 に答える
1

COM実際には、PHP拡張機能を使用して SSL / TLS 接続を使用せずに、PHP でこれを行うことができます(ただし、使用するということは、アプリケーションに Windows OS を使用する必要COMがあることを意味します)。

使用COMすると、AD サーバーのパスワード ポリシーの複雑さの要件もバイパスされます (理由は不明です)。

$dn = 'cn=John Doe,dc=acme,dc=org';

$ldap = new COM('LDAP:');

$user = $ldap->OpenDSObject('LDAP://ACME-DC01.corp.acme.org/'.$dn, 'admin-username', 'admin-password', 1);

$user->SetPassword('NewPassword');

$user->SetInfo(); // Saved
于 2017-03-08T14:47:16.377 に答える