プロバイダーの設定

プロバイダーの設定方法について

サーバーは拡張性を念頭に置いて構築されており、そのために、サーバーに特定の機能を提供するサービスプロバイダーインターフェース(SPI)を多数提供しています。このガイドでは、SPIとそのプロバイダーの設定に関するコアコンセプトについて理解します。

このガイドを読むことで、ここで説明する概念と手順を使用して、サーバー機能を拡張するために実装したプロバイダーを含め、任意のプロバイダーをインストール、アンインストール、有効化、無効化、および設定できるようになるはずです。

設定オプションの形式

プロバイダーは、特定の設定形式を使用して設定できます。形式は次のとおりです。

spi-<spi-id>-<provider-id>-<property>=<value>

<spi-id> は、設定するSPIの名前です。

<provider-id> は、設定するプロバイダーのIDです。これは、対応するプロバイダーファクトリ実装に設定されたIDです。

<property> は、特定のプロバイダーに設定するプロパティの実際の名前です。

これらの名前(spi、プロバイダー、およびプロパティの場合)はすべて小文字にする必要があり、myKeycloakProvider のようにキャメルケースの名前の場合は、次のように大文字の前にダッシュ(-)を含める必要があります:my-keycloak-provider

HttpClientSpi SPIを例にとると、SPIの名前は connectionsHttpClient であり、利用可能なプロバイダー実装の1つは default という名前です。connectionPoolSize プロパティを設定するには、次のような設定オプションを使用します。

spi-connections-http-client-default-connection-pool-size=10

プロバイダー設定オプションの設定

プロバイダー設定オプションは、サーバーの起動時に提供されます。オプションのサポートされているすべての構成ソースと形式については、Keycloakの設定を参照してください。たとえば、コマンドラインオプションを使用する場合:

connections-http-client SPIの default プロバイダーに connection-pool-size を設定する
bin/kc.[sh|bat] start --spi-connections-http-client-default-connection-pool-size=10

SPIの単一プロバイダーの設定

SPIによっては、複数のプロバイダー実装が共存できますが、実行時に使用されるのはそのうちの1つだけです。これらのSPIの場合、特定のプロバイダーが、アクティブになり実行時に使用されるプライマリ実装です。

プロバイダーを単一プロバイダーとして設定するには、次のように build コマンドを実行する必要があります。

email-template SPIの単一プロバイダーとして mycustomprovider プロバイダーをマークする
bin/kc.[sh|bat] build --spi-email-template-provider=mycustomprovider

SPIのデフォルトプロバイダーの設定

SPIによっては、複数のプロバイダー実装が共存でき、そのうちの1つがデフォルトで使用されます。これらのSPIの場合、特定のプロバイダーがデフォルトの実装であり、特定のプロバイダーが要求されない限り選択されます。

デフォルトプロバイダーを決定するために、次のロジックが使用されます。

  1. 明示的に設定されたデフォルトプロバイダー

  2. 順序が最も高いプロバイダー(順序 ⇐ 0 のプロバイダーは無視されます)

  3. IDが default に設定されたプロバイダー

プロバイダーをデフォルトプロバイダーとして設定するには、次のように build コマンドを実行する必要があります。

password-hashing SPIのデフォルトプロバイダーとして mycustomhash プロバイダーをマークする
bin/kc.[sh|bat] build --spi-password-hashing-provider-default=mycustomprovider

プロバイダーの有効化と無効化

プロバイダーを有効または無効にするには、次のように build コマンドを実行する必要があります。

プロバイダーの有効化
bin/kc.[sh|bat] build --spi-email-template-mycustomprovider-enabled=true

プロバイダーを無効にするには、同じコマンドを使用し、enabled プロパティを false に設定します。

プロバイダーのインストールとアンインストール

カスタムプロバイダーは、Javaアーカイブ(JAR)ファイルにパッケージ化し、ディストリビューションの providers ディレクトリにコピーする必要があります。その後、JARファイルからの実装でサーバーのプロバイダーレジストリを更新するために、build コマンドを実行する必要があります。

この手順は、サーバーの起動時または実行時にのみ検出されるのではなく、すべてのプロバイダーを事前に認識するようにサーバーランタイムを最適化するために必要です。

プロバイダーをアンインストールするには、providers ディレクトリからJARファイルを削除し、再度 build コマンドを実行する必要があります。

サードパーティの依存関係の使用

プロバイダーを実装する場合、サーバーディストリビューションから利用できないサードパーティの依存関係を使用する必要がある場合があります。

この場合、追加の依存関係を providers ディレクトリにコピーし、build コマンドを実行する必要があります。そうすると、サーバーは、これらの追加の依存関係に依存する任意のプロバイダーに対して、実行時にこれらの依存関係を利用可能にします。

このページの内容