LDAPユーザー認証の説明|Connect2id

LDAP ユーザー認証は、MS Active Directory、OpenLDAPまたはOpenDJなどのディレクトリサーバーでユーザー名とパスワードを組み合わせて検証するプロセスです。 LDAP ディレクトリは、ユーザー、グループ、および権限情報を保存し、企業内のアプリケーションに提供するための標準技術です。

LDAP ディレクトリによるユーザー認証は 2 段階のプロセスです。 この記事では、その仕組みと、LdapAuthでそれを構成する方法について説明します。

ステップ 1 – ユーザー名をディレクトリ エントリ属性に解決する

ディレクトリ内のユーザー エントリは、ディレクトリ ルート (右端のセグメント) から始まるパスのような構造を持つ識別名 (DN) によって識別されます。

ログイン フォームでは、ユーザーは通常、ユーザー名または電子メールアドレスのような単純な識別子を入力します。 ディレクトリ エントリの DN を記憶させることは期待できません。

この問題を解決するために、DN 解決が登場します。 これは、ユーザーの名前または電子メールを取り、一致するエントリ DN を見つけるために、すべての userentries の名前または電子メール属性に対して検索を実行します。 ディレクトリは非常に効率的なインデックスとキャッシュを採用しているため、これらの検索は通常非常に高速です。

検索するディレクトリ属性は searchFilterconfiguration パラメータで定義します。 u プレースホルダーは、ログインフォームに入力されたユーザー ID に置き換えられます。

ldapAuth.dnResolution.searchFilter = (|(uid=%u)(mail=%u))

UID のみを検索する場合、検索フィルターは次のようになります。

ldapAuth.dnResolution.searchFilter = (uid=%u)

UID, Eメールおよび従業員番号を検索する場合は、フィルターを

ldapAuth.dnResolution.searchFilter = (|(uid=%u)(mail=%u)(employeeNumber=%u))

DN解決を設定し、ディレクトリに新しい使用権を作成する際に注意すべき点が2つあります:

  • ユーザーログイン時の属性(ユーザー名、Eメール等)は一意でなければなりません。

  • ログインする予定のすべてのユーザーが、識別属性として定義された属性を持っていることを確認してください。 たとえば、ユーザーが自分の電子メールアドレスでログインする場合、すべてのアカウントに電子メール属性が定義されていることを確認します。 正しいユーザー名とパスワードを入力したにもかかわらず、ユーザーがログインできない状況をトラブルシューティングするには、サービスログを確認してください。

    不正なユーザー名によりログインが拒否された場合、次のような行がログに表示されます。

    2012-10-01 10:52:51,460 INFO – user.auth: username=tom authenticated=false message=Invalid username

    ユーザー名は正しく解決されたが、パスワードが間違っていた場合:

    2012-10-01 10:55:05,662 INFO – user.auth: username=alice DN=uid=alice,ou=people,dc=wonderland,dc=net authenticated=false message=Invalid password

    ユーザーのディレクトリエントリDNを正しく解決できた場合、次のステップに進みパスワードを確認できます。

    ステップ2 – ユーザーパスワードの確認

    パスワードは、bindと呼ばれるLDAPコマンドで確認されます。 ディレクトリサーバーへの接続が開始され、エントリDNとパスワードを渡して、特定のユーザーとして接続を認証する要求が送信されます:

    DN: uid=alice,ou=people,dc=wonderland,dc=netpassword: secret

    資格情報が正しい場合、ディレクトリサーバーは成功を返します。

    Important things to note here:

    • The password is checked against an attribute in the user’s entry dedicated to serve that purpose.パスワードは、ユーザーのエントリでその目的のために使用される属性と照合されます。 標準的なディレクトリ スキーマを使用している場合、この属性は userPassword と呼ばれます。 MS Active Directoryでは、この属性の名前はunicodePwdである。 ログインするすべてのユーザーが、定義されたパスワード属性を持っていることを確認してください。

    • パスワード値はしばしばハッシュ化され、書き込み専用にするなどの追加的な保護が施されている場合があります。 したがって、単純な LDAP の読み取りと比較は、一般にここでは機能しません。 bind コマンドは常に好ましい方法です。

    • パスワードは通常、大文字と小文字を区別します。 ログファイルはすべてのログイン試行の詳細を記録し、認証が期待通りに機能しないときに迅速なトラブルシューティングに使用できます。 LdapAuthget の設定についてさらにサポートが必要な場合は、弊社までお問い合わせください。

コメントを残す

メールアドレスが公開されることはありません。