LDAP 認証はどのように機能しますか?

LDAP 認証はどのように機能しますか?

LDAP についてかなりの量の情報を読みましたが、理解できないことがあります。

ローカル ユーザーと LDAP ユーザーの両方を認証できる (相互に排他的な選択肢) J2EE アプリがあるとします。アプリで LDAP サーバーの IP アドレス、ベース DN、接続 DN、パスワードを指定すると、ユーザーは LDAP 情報を使用してログインできるようになります。

ここで、「myuser」がパスワード「mypassword」を使用してアプリケーションにログインするとします。次のうち何が起こりますか?

  1. アプリはログイン要求を受信し、独自の資格情報を使用して LDAP にバインドし、「myuser」のエントリを検索して、「mypassword」を一致するエントリの LDAP ディレクトリに保存されているパスワードと比較し、アクセスを許可または拒否します。

  2. アプリはログイン要求を受信し、「myuser」および「mypassword」の資格情報を LDAP (バインド DN とパスワード) に渡し、バインド操作に対して受信した応答に応じて、ユーザーを許可または拒否しますか?

それは実際どのように機能するのでしょうか?

答え1

私の理解では (私はこれらの問題の専門家ではありませんが)、2 より 1 に近いですが、厳密にはそうではありません。アプリはログイン要求を受け取ります。アプリは独自の資格情報を使用して LDAP にバインドし、パスワードはクリア テキストで送信されます (これが、LDAPS (TLS 経由でエスカレーションする LDAP) が適切な理由です)。これらの資格情報は、保存さmyuserれたハッシュ化されたユーザー パスワードを含む、アカウントに関連するさまざまな保存済みパラメータの検索を LDAP サーバーが許可できる十分な権限を持っている必要があります。

次に、アプリはmypasswordユーザーが提示した をハッシュ化し、それを LDAP から返されたハッシュと比較します。一致した場合、提示された資格情報が有効であり、myuser が認証されていることがわかります。一致しない場合は、認証されていないことになります。

関連情報