10.12.2. 管理インターフェースに対する LDAP を使用した認証
- LDAP サーバーへの送信接続を作成します。
- LDAP 対応のセキュリティーレルムを作成します。
- 管理インターフェースの新規セキュリティードメインを参照します。
LDAP 送信接続には、以下の属性を使用することができます。
| 属性 | 必要性 | 説明 |
|---|---|---|
| url | 必要 |
ディレクトリーサーバーの URL アドレス。
|
| search-dn | 必要 |
検索の実行を許可されているユーザーの完全識別名 (DN)
|
| search-credentials | 必要 |
検索の実行を許可されているユーザーのパスワード。
|
| initial-context-factory | 不要 |
接続を確立する際に使用する初期コンテキストファクトリー。デフォルトでは
com.sun.jndi.ldap.LdapCtxFactory に設定されています。
|
| security-realm | 不要 |
接続を確立するときに、使用する設定済みの
SSLContext を取得するために参照するセキュリティーレルム。
|
例10.13 LDAP 送信接続の追加
- DN の検索:
cn=search,dc=acme,dc=com - 証明情報の検索:
myPass - URL:
ldap://127.0.0.1:389
/host=master/core-service=management/security-realm=ldap_security_realm:add
/host=master/core-service=management/ldap-connection=ldap_connection/:add(search-credential=myPass,url=ldap://127.0.0.1:389,search-dn="cn=search,dc=acme,dc=com")
管理インターフェースは、デフォルトで設定されているプロパティーファイルをベースとするセキュリティーレルムの代わりに LDAP サーバーに対して認証を行うことができます。LDAP のオーセンティケーターは、最初にリモートディレクトリーサーバーへの接続を確立します。次に、LDAP レコードの完全修飾識別名 (DN) を探すため、ユーザーが認証システムに渡したユーザー名を使用して検索を実行します。クレデンシャルとしてユーザーの DN とユーザー提供のパスワードを使用して、新規接続が確立されます。 この LDAP サーバーに対するこの検証に成功すると、DN が有効であることが検証されます。
- connection
<outbound-connections>に定義されている接続の名前。LDAP ディレクトリーへの接続に使用します。- base-dn
- ユーザー検索を開始するためのコンテキストの識別名
- recursive
- LDAP ディレクトリーツリー全体にわたって再帰的に検索を行うか、指定のコンテキストのみを検索するかを指定します。デフォルトでは
falseに設定されています。 - user-dn
- 識別名を保持するユーザーの属性。これは、後で認証のテストに使用されます。デフォルトでは
dnに設定されています。 - 子要素として
username-filterまたはadvanced-filterのいずれか username-filterはattributeという単一の属性を取り、値はuserNameやsambaAccountNameなどのユーザー名を持つ LDAP 属性の名前です。advanced-filterはfilterと呼ばれる単一の属性を取ります。この属性には、標準的な LDAP 構文のフィルタークエリが含まれています。&文字を&に変更し、エスケープすることに注意してください。フィルターの例は次のとおりです。(&(sAMAccountName={0})(memberOf=cn=admin,cn=users,dc=acme,dc=com))アンパサンド文字をエスケープすると、フィルターは次のようになります。(&(sAMAccountName={0})(memberOf=cn=admin,cn=users,dc=acme,dc=com))
例10.14 LDAP 対応のセキュリティーレルムを示す XML
- connection -
ldap_connection - base-dn -
cn=users,dc=acme,dc=com. - username-filter -
attribute="sambaAccountName"
<security-realm name="ldap_security_realm">
<authentication>
<ldap connection="ldap_connection" base-dn="cn=users,dc=acme,dc=com">
<username-filter attribute="sambaAccountName" />
</ldap>
</authentication>
</security-realm>
警告
例10.15 LDAP セキュリティーレルムの追加
/host=master/core-service=management/security-realm=ldap_security_realm/authentication=ldap:add(base-dn="DC=mycompany,DC=org", recursive=true, username-attribute="MyAccountName", connection="ldap_connection")
セキュリティーレルムの作成が完了したら、管理インターフェースの設定でそのドメインを参照する必要があります。管理インターフェースは、HTTP ダイジェスト認証用のセキュリティーレルムを使用します。
例10.16 HTTP インターフェースへのセキュリティーレルムの適用
/host=master/core-service=management/management-interface=http-interface/:write-attribute(name=security-realm,value=ldap-security-realm)
管理対象ドメイン内のホストを設定して、Microsoft Active Directory に対して認証を行うには、次の手順に従います。この手順では JAAS 認証を使用し、セキュリティードメインを作成して、ロールを Active Directory グループへマップします。Microsoft Active Directory では空のパスワードでバインディングできるため、この作業が必要になります。これにより、アプリケーションプラットフォーム内で空のパスワードが使用されないようにします。
master であることを仮定します。
ldap_security_realmという名前の新しい<security-realm>を追加し、JAAS を使用するように設定します。以下の管理 CLI コマンドは、新しいセキュリティーレルムを追加し、認証メカニズムを設定します。必要な場合はホスト名を変更してください。/host=master/core-service=management/security-realm=ldap_security_realm/:add/host=master/core-service=management/security-realm=ldap_security_realm/authentication=jaas/:add(name=managementLDAPDomain)新しいセキュリティーレルムを使用するように
<http-interface>を設定します。以下の管理 CLI コマンドは HTTP インターフェースを設定します。/host=master/core-service=management/management-interface=http-interface/:write-attribute(name=security-realm,value=ldap_security_realm)JBoss EAP を設定し、カスタム JAAS 設定を起動パラメーターに追加します。
EAP_HOME/bin/domain.confファイルを編集します。HOST_CONTROLLER_JAVA_OPTS変数を探します。ここに、JBoss EAP が起動する前に必要となる JVM のディレクティブを追加します。以下に、このパラメーターのデフォルトコンテンツの例を示します。HOST_CONTROLLER_JAVA_OPTS="$JAVA_OPTS"以下のディレクティブを-Djava.security.auth.login.config=/opt/jboss-eap-6.0/domain/configuration/jaas.conf"に追加します。編集後、この行は次のようになります。-Djava.security.auth.login.config=/opt/jboss-eap-6.0/domain/configuration/jaas.conf"ログインモジュールをモジュールオプションに追加します。
同じファイル内で、以下が含まれる行を見つけます。JBOSS_MODULES_SYSTEM_PKGS="org.jboss.byteman"その行を次のように変更します。余分な空白を挿入しないようにしてください。JBOSS_MODULES_SYSTEM_PKGS="org.jboss.byteman,com.sun.security.auth.login"domain.confファイルを保存し、閉じます。クラスパスに追加される JAAS 設定を作成します。
新しいファイルをEAP_HOME/domain/configuration/jaas.confに作成します。このファイルには以下の内容が含まれている必要があります。環境に合わせてパラメーターを編集します。managementLDAPDomain { org.jboss.security.auth.spi.LdapExtLoginModule required java.naming.factory.initial="com.sun.jndi.ldap.LdapCtxFactory" java.naming.provider.url="ldap://your_active_directory_host:389" java.naming.security.authentication="simple" bindDN="cn=Administrator,cn=users,dc=domain,dc=your_company,dc=com" bindCredential="password" baseCtxDN="cn=users,dc=domain,dc=redhat,dc=com" baseFilter="(&(sAMAccountName={0})(|(memberOf=cn=Domain Guests,cn=Users,dc=domain,dc=acme,dc=com)(memberOf=cn=Domain Admins,cn=Users,dc=domain,dc=acme,dc=com)))" allowEmptyPasswords="false" rolesCtxDN="cn=users,dc=domain,dc=acme,dc=com" roleFilter="(cn=no such group)" searchScope="SUBTREE_SCOPE"; };- JBoss EAP を再起動すると、HTTP インターフェースは認証に LDAP サーバーを使用するようになります。