4.2.2. プログラムによるアプローチ

プログラムによるアプローチでは、クライアントのコードにすべての Elytron クライアント設定を設定します。

//create your authentication configuration
AuthenticationConfiguration adminConfig =
    AuthenticationConfiguration.empty()
      .useProviders(() -> new Provider[] { new WildFlyElytronProvider() })
      .setSaslMechanismSelector(SaslMechanismSelector.NONE.addMechanism("DIGEST-MD5"))
      .useRealm("ManagementRealm")
      .useName("administrator")
      .usePassword("password1!");

//create your authentication context
AuthenticationContext context = AuthenticationContext.empty();
context = context.with(MatchRule.ALL.matchHost("127.0.0.1"), adminConfig);


//create your runnable for establishing a connection
Runnable runnable =
    new Runnable() {
      public void run() {
        try {
           //Establish your connection and do some work
        } catch (Exception e) {
          e.printStackTrace();
        }
      }
    };

//use your authentication context to run your client
context.run(runnable);

設定の詳細を AuthenticationConfiguration および AuthenticationContext に追加するとき、各メソッド呼び出しはそのオブジェクトの新しいインスタンスを返します。たとえば、異なるホスト名で接続する際に別の設定が必要な場合は、以下を実行できます。

//create your authentication configuration
AuthenticationConfiguration commonConfig =
    AuthenticationConfiguration.empty()
      .useProviders(() -> new Provider[] { new WildFlyElytronProvider() })
      .setSaslMechanismSelector(SaslMechanismSelector.NONE.addMechanism("DIGEST-MD5"))
      .useRealm("ManagementRealm");

AuthenticationConfiguration administrator =
    commonConfig
      .useName("administrator")
      .usePassword("password1!");


AuthenticationConfiguration monitor =
    commonConfig
      .useName("monitor")
      .usePassword("password1!");


//create your authentication context
AuthenticationContext context = AuthenticationContext.empty();
context = context.with(MatchRule.ALL.matchHost("127.0.0.1"), administrator);
context = context.with(MatchRule.ALL.matchHost("localhost"), monitor);

表4.2 一般的なルール

ルール説明

matchLocalSecurityDomain(String name)

これは、設定ファイルアプローチの match-domain と同じです。

matchNoUser()

これは、設定ファイルアプローチの match-no-user と同じです。

matchPath(String pathSpec)

これは、設定ファイルアプローチの match-path と同じです。

matchPort(int port)

これは、設定ファイルアプローチの match-port と同じです。

matchProtocol(String protoName)

これは、設定ファイルアプローチの match-port と同じです。

matchPurpose(String purpose)

このルールと同じで、特定の目的名と一致する新規ルールを作成します。

matchUrnName(String name)

これは、設定ファイルアプローチの match-urn と同じです。

matchUser(String userSpec)

これは、設定ファイルアプローチの match-userinfo と同じです。

また、空の認証設定を開始する代わりに、captureCurrent() を使用して現在設定されている認証を開始することもできます。

//create your authentication configuration
AuthenticationConfiguration commonConfig = AuthenticationConfiguration.captureCurrent();

captureCurrent() を使用すると、以前に確立された認証コンテキストがキャプチャーされ、新しいベース設定として使用されます。認証コンテキストは、run()を呼び出してアクティベートすると確立されます。captureCurrent() が呼び出され、コンテキストが現在アクティブでない場合、利用可能な場合はデフォルト認証を試行し、使用します。詳細は、以下のセクションを参照してください。

AuthenticationConfiguration.empty() は、上で設定を構築するベースとしてのみ使用し、それ自体では使用しないでください。JVM 全体で登録されたプロバイダーを使用し、匿名認証を有効にする設定を提供します。

AuthenticationConfiguration.empty() 設定でプロバイダーを指定する場合、カスタム一覧を指定できますが、ほとんどのユーザーは WildFlyElytronProvider() プロバイダーを使用する必要があります。

認証コンテキストを作成する場合は context.with(…​) を使用することで、現在のコンテキストのルールと認証設定を、指定のルールと認証設定とマージさせる新しいコンテキストが作成されます。指定されるルールおよび認証設定は、現在のコンテキストのルールおよび認証設定の後に表示されます。