6.3. プロバイダー実装の登録
プロバイダー実装を登録する方法は 2 つあります。ほとんどの場合、最も単純な方法では、Red Hat Single Sign-On デプロイヤーアプローチを使用します。これは、多数の依存関係を自動的に処理します。また、ホットデプロイメントも再デプロイメントもサポートします。
別の方法として、モジュールとしてデプロイできます。
カスタム SPI を作成する場合は、これをモジュールとしてデプロイする必要があります。そうでない場合は、Red Hat Single Sign-On デプロイヤーアプローチの使用を推奨します。
6.3.1. Red Hat Single Sign-On デプロイヤーの使用
プロバイダー jar を Red Hat Single Sign-On の standalone/deployments/
ディレクトリーにコピーする場合は、プロバイダーが自動的にデプロイされます。ホットデプロイメントも機能します。さらに、プロバイダーの jar は、jboss-deployment-structure.xml
ファイルなどの機能を使用できるように、JBoss EAP 環境にデプロイされた他のコンポーネントと同じように機能します。このファイルでは、他のコンポーネントの依存関係を設定し、サードパーティーの jar およびモジュールを読み込むことができます。
プロバイダー jar は EAR や WAR などの他のデプロイ可能なユニットにも含めることができます。これらのライブラリーを EAR の lib/
ディレクトリーに配置できるため、EAR をデプロイすると、サードパーティーの jar を使用するのが非常に簡単になります。
6.3.2. モジュールを使用したプロバイダーの登録
手順
jboss-cli スクリプトを使用してモジュールを作成するか、手動でフォルダーを作成します。
たとえば、
jboss-cli
スクリプトを使用してイベントリスナーの sysout サンプルプロバイダーを追加するには、以下を実行します。KEYCLOAK_HOME/bin/jboss-cli.sh --command="module add --name=org.acme.provider --resources=target/provider.jar --dependencies=org.keycloak.keycloak-core,org.keycloak.keycloak-server-spi"
または、
KEYCLOAK_HOME/modules
内にモジュールを手動で作成し、jar とmodule.xml
を追加することもできます。たとえば、
KEYCLOAK_HOME/modules/org/acme/provider/main
フォルダーを作成します。次にprovider.jar
をこのディレクトリーにコピーし、以下の内容でmodule.xml
を作成します。<?xml version="1.0" encoding="UTF-8"?> <module xmlns="urn:jboss:module:1.3" name="org.acme.provider"> <resources> <resource-root path="provider.jar"/> </resources> <dependencies> <module name="org.keycloak.keycloak-core"/> <module name="org.keycloak.keycloak-server-spi"/> </dependencies> </module>
このモジュールを Red Hat Single Sign-On に登録するには、
standalone.xml
、standalone-ha.xml
、またはdomain.xml
の keycloak-server サブシステムセクションを編集してプロバイダーに追加します。<subsystem xmlns="urn:jboss:domain:keycloak-server:1.2"> <web-context>auth</web-context> <providers> <provider>module:org.keycloak.examples.event-sysout</provider> </providers> ...
6.3.3. プロバイダーの無効化
プロバイダーを無効にするには、standalone.xml
、standalone-ha.xml
、または domain.xml
でプロバイダーの enabled 属性を false に設定します。たとえば、Infinispan ユーザーキャッシュプロバイダーを無効にするには、以下を追加します。
<spi name="userCache"> <provider name="infinispan" enabled="false"/> </spi>