LDAPを使用すると、そのユーザーとバインドして結果を記録するのと同じくらい簡単にユーザー名/パスワードを確認できますか、または特別なLDAP「パスワードの確認」機能がありますか?
面倒なLDAPリポジトリのセットアップの問題に取り組みながら、もう少し「舞台裏」を理解しようとしています。
(注:これは、パスワードがカスタムプロパティにハッシュとして保存されていない状況向けです。その状況は管理が容易です)
LDAPはuserPasswordの比較をサポートしています。パスワードを送信すると、サーバーは比較を行い、trueまたはfalseを返します。これは、ユーザーを認証するためのログイン方法を必要としません。
WhoAmI拡張操作(RFC 4532)を調べてください。
WhoAmIは実際に1つの目的を果たします-送信されたバインド資格情報を検証します。 「ログイン制限」(私が知っている)に影響を与えたり誘発したりするべきではありません。
WhoAmIは、専用のバイナリ(「ldapwhoami」など)を使用して実行できます。または、Net :: LDAP :: Extension :: WhoAmI(Perl)またはLDAP操作をサポートするその他の言語を使用して実行できます。いくつかの「検索」機能を使用した「パスワードのテスト」は賢明ではないテスト方法であることに注意してください。
たとえば、DNが「uid = max、ou = users、dc = company、dc = com」で、パスワードが「@secret」の場合、Linuxボックスの専用バイナリを使用してこれを行うことができます(注-ZZはTLSの機密性のために使用されます。これは、ご使用の環境ではサポートされていないかオプションです。
ldapwhoami -x -w "@secret" -D uid=max,ou=users,dc=company,dc=com -ZZ -H ldap://address.of.your.ldapserver/
ユーザー/パスの組み合わせが正しい場合、返される答えは次のとおりです。
dn:uid = max、ou = users、dc = company、dc = com
ユーザー/パスの組み合わせが正しくない場合、返される答えは(通常)です。
(49)無効な資格情報
これは、私が言ったように、パスワードやユーザー名が間違っているか、ユーザーが存在しないか、LDAPサーバーのACLが認証できないような方法で壊れていることを意味します。多くの場合、そのユーザー/パスの組み合わせが間違っているか、ユーザーが存在しません。
最後に、LDAPWhoAmI操作は、資格情報を検証する非常に軽量で簡単な方法です。また、他のメカニズム(例:Kerberosシングルサインオン、ダイジェストMD5など)でも機能します。
ユーザー名/パスワードをチェックするためにバインドを使用すると、一部のシステムではログインとしてカウントされ、ログイン制限があると失敗する可能性があります。
パスワードを確認するだけの場合は、compareを使用する方が適切なオプションです。
そのユーザーとしてバインドすれば十分です。パスワードはバインドのプロセスでチェックされます。