
LDAP についてかなりの量の情報を読みましたが、理解できないことがあります。
ローカル ユーザーと LDAP ユーザーの両方を認証できる (相互に排他的な選択肢) J2EE アプリがあるとします。アプリで LDAP サーバーの IP アドレス、ベース DN、接続 DN、パスワードを指定すると、ユーザーは LDAP 情報を使用してログインできるようになります。
ここで、「myuser」がパスワード「mypassword」を使用してアプリケーションにログインするとします。次のうち何が起こりますか?
アプリはログイン要求を受信し、独自の資格情報を使用して LDAP にバインドし、「myuser」のエントリを検索して、「mypassword」を一致するエントリの LDAP ディレクトリに保存されているパスワードと比較し、アクセスを許可または拒否します。
アプリはログイン要求を受信し、「myuser」および「mypassword」の資格情報を LDAP (バインド DN とパスワード) に渡し、バインド操作に対して受信した応答に応じて、ユーザーを許可または拒否しますか?
それは実際どのように機能するのでしょうか?
答え1
私の理解では (私はこれらの問題の専門家ではありませんが)、2 より 1 に近いですが、厳密にはそうではありません。アプリはログイン要求を受け取ります。アプリは独自の資格情報を使用して LDAP にバインドし、パスワードはクリア テキストで送信されます (これが、LDAPS (TLS 経由でエスカレーションする LDAP) が適切な理由です)。これらの資格情報は、保存さmyuser
れたハッシュ化されたユーザー パスワードを含む、アカウントに関連するさまざまな保存済みパラメータの検索を LDAP サーバーが許可できる十分な権限を持っている必要があります。
次に、アプリはmypassword
ユーザーが提示した をハッシュ化し、それを LDAP から返されたハッシュと比較します。一致した場合、提示された資格情報が有効であり、myuser が認証されていることがわかります。一致しない場合は、認証されていないことになります。