付録A 高度な LDAP ログインモジュール:完全 LDAP 認証


JBoss Negotiation プロジェクトには、LDAP ロール検索要件を処理する AdvancedLdapLoginModule が含まれています。
AdvancedLdapLoginModule は、LdapExtLoginModule に基づいています。SPNEGOLoginModule とともに、チェーン設定内でこのモジュールを利用することで、GSSAPI 認証が LDAP 経由で認証を行えるようになります (「ロールマッピング」 を参照)。あるいは、LDAP を使った完全認証にこのモジュールを利用可能です。また、必要であれば認証あるいはロール検索、ユーザー検索を省略するように設定することができます。

A.1. 設定

新規ログインモジュールの完全修飾クラス名は org.jboss.security.negotiation.AdvancedLdapLoginModule です。

警告

ベータリリースでは、クラス名は org.jboss.security.negotiation.spnego.AdvancedLdapLoginModule でした。今でもログインモジュールは、この名前で利用できますが、廃止予定で今後のリリースでは削除されます。
AdvancedLDAPLoginModule はパスワードスタッキングに対応しています。このモジュールを他のログインモジュールと利用したい場合は、password-stacking プロパティが useFirstPass に設定されているようにしてください。

A.1.1. 初期の LDAP コンテキストを定義

まずユーザー認証情報を定義する必要があります。この情報はInitialLdapContextを取得し、ユーザーとユーザーロールの検索に利用されます。

注記

ログインモジュールがあれば、ユーザー名と認証情報を使うか、すでに認証済みのユーザーを GSSPI を使うことで、この InitialLdapContext を取得することができます。ここでは、ユーザー認証をつかっています。GSSAPI での設定については、「ロールマッピング」 を参照してください。
ユーザー名とパスワードで認証する場合、これから提示する内容により、以下の設定を定義します。
bindDN
LDAP サーバーにバインドするために利用する DN を定義します。定義済みの baseCtxDN および rolesCtxDN への読み取り/検索の権限を持つ DN です。
bindCredential
bindDN パスワードを定義します。jaasSecurityDomain を指定している場合は、このパスワードは暗号化可能です。
jaasSecurityDomain
jaasSecurityDomain の JMX ObjectNameを定義します。これは、java.naming.security.principal を復号化する際に利用する jaasSecurityDomain です。このドメインの JaasSecurityDomain#encrypt64(byte[]) メソッドは、暗号化されたパスワードを返します。org.jboss.security.plugins.PBEUtils を使い、暗号化形式を生成することも可能です。

A.1.2. DN 検索の定義

モジュールが LDAP 初期コンテキストを作成した後、提供済みのユーザー名をとり、ユーザー DN を検索します。検索プロパティを定義するには、以下のプロパティを提示します。
baseCtxDN
コンテキストの固定 DN を定義しユーザーロールを検索します。これは、実際のロールが実際に置かれている場所の識別名 (DN) ではなく、ユーザーロールが含まれているオブジェクトが置かれている場所の DN という点を考慮します (つまり、Active Directory では、ユーザーアカウントを持つ DN ということになります)。
baseFilter
認証ユーザーのコンテキストの場所を突き止めるために使う検索フィルターを定義します。ログインモジュールのコールバックから取得した通りの、入力ユーザー名/ユーザー DN は、{0} 表現を代入します。この代入動作は、標準のDirContext?.search(Name, String, Object[],SearchControls? cons) メソッドから来ています。一般的な検索フィルターの例は、(uid={0})です。
searchTimeLimit
ユーザーとロール検索のタイムアウト時間をミリ秒で定義します (デフォルトは 10000 で、10 秒となっています)。

注記

ユーザー DN 検索を無効にするには、baseCtxDN プロパティを省略します。提示したユーザー名をこのログインモジュールで DN として使います。

A.1.3. ユーザー認証

注記

LDAP ログインモジュールが最初のログインモジュールでなく、以前のログインモジュールがすでにユーザー認証を済ましている場合、ユーザー認証は省略されます。
今までにログインモジュールでユーザー認証を行なっていない場合、この手順で、ユーザー DN 検索と提示した認証情報からのユーザー DN を使い、新たな InitialLdapContext を作成しユーザー DN と認証情報の組み合わせが有効でなるか確認します。
ユーザー認証は、以下のプロパティを定義してください。
allowEmptyPassword
空の (length==0) パスワードが LDAP サーバーに渡された場合。LDAP サーバーは空のパスワードを無名ログインとして処理します。このプロパティを false に設定し、空のパスワードを受け付けないようにするか、true に設定し、LDAP サーバーが空のパスワードを認証できるようにします (デフォルトは、false)。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat