6.4. Jakarta Enterprise Beans へのリモートアクセス
6.4.1. リモート Jakarta Enterprise Beans クライアントでのセキュリティーレルムの使用
Jakarta Enterprise Beans をリモートで呼び出すクライアントにセキュリティーを追加する方法として、セキュリティーレルムを使用することができます。セキュリティーレルムは、ユーザー名/パスワードのペアとユーザー名/ロールのペアの単純なデータベースです。この用語は Web コンテナーのコンテキストでも使用され、意味が若干異なります。
Jakarta Enterprise Beans に対してセキュリティーレルムに存在する特定のユーザー名/パスワードのペアを認証するには、以下の手順に従います。
- 新しいセキュリティーレルムをドメインコントローラーまたはスタンドアロンサーバーに追加します。
以下の例のように、アプリケーションのクラスパスにある
wildfly-config.xml
ファイルを設定します。<configuration> <authentication-client xmlns="urn:elytron:client:1.2"> <authentication-rules> <rule use-configuration="default" /> </authentication-rules> <authentication-configurations> <configuration name="default"> <sasl-mechanism-selector selector="DIGEST-MD5" /> <set-user-name name="admin" /> <credentials> <clear-password password="password123!" /> </credentials> </configuration> </authentication-configurations> </authentication-client> <jboss-ejb-client xmlns="urn:jboss:wildfly-client-ejb:3.0"> <connections> <connection uri="remote+http://127.0.0.1:8080" /> </connections> </jboss-ejb-client> </configuration>
- 新しいセキュリティーレルムを使用するドメインまたはスタンドアロンサーバーでカスタムリモーティングコネクターを作成します。
- カスタムリモーティングコネクターでプロファイルを使用するよう設定されたサーバーグループに Jakarta Enterprise Beans を追加します。またはマネージドドメインを使用していない場合はスタンドアロンサーバーに Jakarta Enterprise Beans をデプロイします。
6.4.2. 新しいセキュリティーレルムの追加
管理 CLI の実行:
jboss-cli.sh
またはjboss-cli.bat
スクリプトを実行し、サーバーに接続します。新しいセキュリティーレルム自体を作成します。
以下のコマンドを実行し、ドメインコントローラーまたはスタンドアロンサーバーに
MyDomainRealm
という名前の新しいセキュリティーレルムを作成します。ドメインインスタンスの場合は、以下のコマンドを使用します。
/host=master/core-service=management/security-realm=MyDomainRealm:add()
スタンドアロンインスタンスの場合には、以下のコマンドを使用します。
/core-service=management/security-realm=MyDomainRealm:add()
myfile.properties
という名前のプロパティーファイルを作成します。スタンドアロンインスタンスの場合は、
EAP_HOME/standalone/configuration/myfile.properties
ファイルを作成し、ドメインインスタンスの場合はEAP_HOME/domain/configuration/myfile.properties
ファイルを作成します。これらのファイルには、ファイル所有者の読み取りおよび書き込みアクセスが必要です。$ chmod 600 myfile.properties
新規ロールについての情報を格納するプロパティーファイルへの参照を作成します。
以下のコマンドを実行して、新しいロールに関連するプロパティーが含まれる
myfile.properties
ファイルへのポインターを作成します。注記プロパティーファイルは、含まれる
add-user.sh
スクリプトおよびadd-user.bat
スクリプトでは作成されません。これは外部に作成する必要があります。ドメインインスタンスの場合は、以下のコマンドを使用します。
/host=master/core-service=management/security-realm=MyDomainRealm/authentication=properties:add(path=myfile.properties)
スタンドアロンインスタンスの場合には、以下のコマンドを使用します。
/core-service=management/security-realm=MyDomainRealm/authentication=properties:add(path=myfile.properties)
新しいセキュリティーレルムが作成されます。この新しいレルムにユーザーおよびロールを追加すると、情報はデフォルトのセキュリティーレルムとは別のファイルに保存されます。この新しいファイルは、独自のアプリケーションまたは手順を使用して管理できます。
add-user.sh
スクリプトを使用して、application-users.properties
以外のデフォルト以外のファイルにユーザーを追加する場合は、引数 --user-properties myfile.properties
を渡す必要があります。それ以外の場合は、application-users.properties
の使用を試行します。
6.4.3. セキュリティーレルムへのユーザーの追加
-
add-user
スクリプトを実行します。ターミナルを開き、EAP_HOME/bin/
ディレクトリーに移動します。Red Hat Enterprise Linux またはその他の UNIX と同様のオペレーティングシステムを使用している場合には、add-user.sh
を実行します。Windows Server を使用している場合は、add-user.bat
を実行します。 -
管理ユーザーまたはアプリケーションユーザーを追加するかどうかを選択します。この手順では、
b
と入力してアプリケーションユーザーを追加します。 -
ユーザーを追加するレルムを選択します。デフォルトでは、利用可能なレルムは
ApplicationRealm
のみです。カスタムレルムを追加してしまった場合は、その代わりにユーザーを追加します。 -
プロンプトが表示されたら、ユーザー名、パスワード、およびロールを入力します。プロンプトが表示されたら、希望のユーザー名、パスワード、および任意のロールを入力します。
yes
を入力して選択を確認するか、no
と入力して変更をキャンセルします。変更は、セキュリティーレルムの各プロパティーファイルに書き込まれます。
6.4.4. セキュリティードメインとセキュリティーレルム間の関係
Jakarta Enterprise Beans をセキュリティーレルムでセキュアにするには、セキュリティーレルムからユーザーの認証情報を取得するように設定したセキュリティードメインを使用する必要があります。これは、ドメインに Remoting および RealmDirect ログインモジュールが必要であることを意味します。セキュリティードメインの割り当ては、Jakarta Enterprise Beans で適用可能な @SecurityDomain
アノテーションによって実行されます。
other
セキュリティードメインは、基礎となるセキュリティーレルムからユーザーとパスワードデータを取得します。Jakarta Enterprise Beans に @SecurityDomain
アノテーションがなく、Jakarta Enterprise Beans にセキュリティーが保護されていると思われる他のセキュリティー関連のアノテーションのいずれかが含まれる場合は、このセキュリティードメインがデフォルトのドメインになります。
接続を確立するためにクライアントによって使用される基礎となる http-remoting connector
は、使用するセキュリティーレルムを決定します。http-remoting connector
の詳細は、JBoss EAP 設定ガイドの About the Remoting Subsystem を参照してください。
デフォルトコネクターのセキュリティーレルムは以下のように変更できます。
/subsystem=remoting/http-connector=http-remoting-connector:write-attribute(name=security-realm,value=MyDomainRealm)
6.4.5. SSL 暗号化を使用したリモート Jakarta Enterprise Beans アクセス
デフォルトでは、EJB2 および Jakarta Enterprise Beans3 Bean の Remote Method Invocation (RMI) のネットワークトラフィックは暗号化されません。暗号化が必要なインスタンスでは、クライアントとサーバー間の接続を暗号化する Secure Sockets Layer (SSL) を使用できます。また、SSL を使用すると、ファイアウォールの設定に応じて、ネットワークトラフィックが一部のファイアウォールを通過できるようになります。
Red Hat では、影響するすべてのパッケージで TLSv1.1 または TLSv1.2 を利用するために SSLv2、SSLv3、および TLSv1.0 を明示的に無効化することを推奨しています。