4.2. Elytron クライアントによるクライアント認証の設定

Jakarta Enterprise Beans などの JBoss EAP に接続するクライアントは、Elytron クライアントを使用して認証できます。Elytron クライアントは、リモートクライアントが Elytron で認証可能にするクライアント側フレームワークです。Elytron クライアントには以下のコンポーネントがあります。

認証設定の移行
認証設定には、ユーザー名、パスワード、許可された SASL メカニズムなどの認証情報と、ダイジェスト認証時に使用するセキュリティーレルムが含まれます。認証設定で指定される接続情報は、初期コンテキストの PROVIDER_URL に指定された値を上書きします。
MatchRule
使用する認証設定の決定に使用されるルール。
認証コンテキスト
接続を確立するためにクライアントで使用する一連のルールおよび認証設定。

接続が確立されると、クライアントは認証コンテキストを使用します。この認証コンテキストには、アウトバウンド接続ごとに使用する認証設定を選択するルールが含まれます。たとえば、server1 に接続するときに、ある認証設定を使用するルールと、server2 に接続するときに別の認証設定を使用するルールを設定できます。認証コンテキストは、一連の認証設定および接続の確立時の選択方法を定義するルールセットで構成されます。認証コンテキストは ssl-context を参照でき、ルールに一致できます。

接続を確立するときにセキュリティー情報を使用するクライアントを作成するには、以下を実行します。

  • 1 つ以上の認証設定を作成します。
  • ルールと認証設定のペアを作成して認証コンテキストを作成します。
  • 接続を確立するために runnable を作成します。
  • 認証コンテキストを使用して runnable を実行します。

接続を確立すると、Elytron Client は認証コンテキストによって提供されるルールセットを使用して、認証中に使用する正しい認証設定に一致させます。

クライアント接続の確立時に、以下のいずれかの方法でセキュリティー情報を使用できます。

重要

Elytron クライアントを使用して Jakarta Enterprise Beans 呼び出しを行う場合には、javax.naming.InitialContextContext.SECURITY_PRINCIPAL 設定など、ハードコーディングされたプログラムによる認証情報が Elytron クライアント設定よりも優先されます。

4.2.1. 設定ファイルのアプローチ

設定ファイルのアプローチでは、認証設定、認証コンテキスト、および一致ルールを含む XML ファイルを作成します。

例: custom-config.xml

<configuration>
    <authentication-client xmlns="urn:elytron:client:1.2">
        <authentication-rules>
            <rule use-configuration="monitor">
                <match-host name="127.0.0.1" />
            </rule>
            <rule use-configuration="administrator">
                <match-host name="localhost" />
            </rule>
        </authentication-rules>
        <authentication-configurations>
            <configuration name="monitor">
                <sasl-mechanism-selector selector="DIGEST-MD5" />
                <providers>
                  <use-service-loader />
                </providers>
                <set-user-name name="monitor" />
                <credentials>
                    <clear-password password="password1!" />
                </credentials>
                <set-mechanism-realm name="ManagementRealm" />
             </configuration>

             <configuration name="administrator">
                <sasl-mechanism-selector selector="DIGEST-MD5" />
                <providers>
                  <use-service-loader />
                </providers>
                <set-user-name name="administrator" />
                <credentials>
                    <clear-password password="password1!" />
                </credentials>
                <set-mechanism-realm name="ManagementRealm" />
             </configuration>
        </authentication-configurations>
    </authentication-client>
</configuration>

クライアントの実行時にシステムプロパティーを設定すると、クライアントのコードでこのファイルを参照できます。

$ java -Dwildfly.config.url=/path/to/custom-config.xml ...
重要

programmatic approach を使用する場合、wildfly.config.url システムプロパティーが設定されていても、提供される設定ファイルは上書きされます。

ルールの作成時に、hostnameportprotocol、または user-name など、さまざまなパラメーターと一致するものを検索できます。MatchRule の完全なオプション一覧は Java ドキュメントで確認できます。ルールは、設定される順序で評価されます。

ルールに一致設定が含まれていない場合は、ルール全体が一致し、認証設定が選択されます。ルールに複数の一致設定が含まれる場合、認証設定を選択するには、すべてが一致する必要があります。

表4.1 一般的なルール

属性説明

match-local-security-domain

一致するローカルセキュリティードメインを指定する単一の name 属性を取ります。

match-host

一致するホスト名を指定する単一の name 属性を取ります。たとえば、ホスト 127.0.0.1http://127.0.0.1:9990/my/path で一致します。

match-no-user

ユーザーのない URI に対して一致。

match-path

一致するパスを指定する単一の name 属性を取ります。たとえば、/my/path/ would match on http://127.0.0.1:9990/my/path で一致します。

match-port

一致するポートを指定する単一の name 属性を取ります。たとえば、ポート 9990http://127.0.0.1:9990/my/path で一致します。

match-protocol

照合するプロトコルを指定する単一の name 属性を取ります。たとえば、プロトコル httphttp://127.0.0.1:9990/my/path で一致します。

match-urn

照合する属性を指定する単一の name 属性を取ります。

match-user

一致する user を指定する単一の user 属性を取ります。

wildfly-config.xml ファイルのサンプルは、Example wildfly-config.xml にあります。wildfly-config.xml ファイルの設定方法に関する詳細は、JBoss EAP『開発ガイド』の「wildfly-config.xml ファイルを使用したクライアント設定」を参照してください。