Red Hat build of Keycloak は、カスタムコードを必要とせずにほとんどのユースケースに対応するように設計されていますが、カスタマイズ性も望まれています。そのため、Red Hat build of Keycloak には、独自プロバイダーの実装を可能にする数多くの SPI (サービスプロバイダーインターフェイス) があります。
Copy to ClipboardCopied!Toggle word wrapToggle overflow
その後、init メソッド ProviderFactory で設定を取得できます。
public void init(Config.Scope config) {
String themeName = config.get("theme");
}
public void init(Config.Scope config) {
String themeName = config.get("theme");
}
Copy to ClipboardCopied!Toggle word wrapToggle overflow
必要に応じて、プロバイダーは他のプロバイダーを検索することもできます。以下に例を示します。
public class MyThemeSelectorProvider implements ThemeSelectorProvider {
private KeycloakSession session;
public MyThemeSelectorProvider(KeycloakSession session) {
this.session = session;
}
@Override
public String getThemeName(Theme.Type type) {
return session.getContext().getRealm().getLoginTheme();
}
}
public class MyThemeSelectorProvider implements ThemeSelectorProvider {
private KeycloakSession session;
public MyThemeSelectorProvider(KeycloakSession session) {
this.session = session;
}
@Override
public String getThemeName(Theme.Type type) {
return session.getContext().getRealm().getLoginTheme();
}
}
Copy to ClipboardCopied!Toggle word wrapToggle overflow
SPI の pom.xml ファイルには、SPI 用の Red Hat build of Keycloak へのインポート参照を含む dependencyManagement セクションが必要です。この例では、表示される VERSION を 26.4.0.redhat-00001 に置き換えます。これは、Red Hat ビルドの Keycloak の現在のバージョンです。
前述したように、ProviderFactory の実装では一意の ID を使用することを推奨します。ただし、同時に、Red Hat build of Keycloak のビルトインプロバイダーの 1 つをオーバーライドすると便利な場合があります。推奨される方法は、引き続き一意の ID を使用した ProviderFactory 実装であり、たとえば、プロバイダーの設定 の章で指定されているデフォルトのプロバイダーを 設定 します。一方で、これが常に可能であるとは限りません。
たとえば、デフォルトの OpenID Connect プロトコルの動作にいくつかのカスタマイズが必要で、OIDCLoginProtocolFactory のデフォルトの Red Hat build of Keycloak 実装をオーバーライドする場合は、同じ providerId を保持する必要があります。たとえば、管理コンソール、OIDC プロトコルの既知のエンドポイント、およびその他のさまざまなものは、プロトコルファクトリーの ID が openid-connect であることを前提としています。
public class CustomOIDCLoginProtocolFactory extends OIDCLoginProtocolFactory {
// Some customizations here
@Override
public int order() {
return 1;
}
}
public class CustomOIDCLoginProtocolFactory extends OIDCLoginProtocolFactory {
// Some customizations here
@Override
public int order() {
return 1;
}
}
Copy to ClipboardCopied!Toggle word wrapToggle overflow
同じプロバイダー ID を持つ実装が複数ある場合、最上位の実装のみが Red Hat build of Keycloak ランタイムによって使用されます。
プロバイダーに関する追加情報を Red Hat build of Keycloak 管理者に表示すると便利な場合があります。プロバイダーのビルド時間情報 (現在インストールされているカスタムプロバイダーのバージョンなど)、プロバイダーの現在の設定 (プロバイダーが通信するリモートシステムの URL)、または一部の運用情報 (プロバイダーが対話するリモートシステムからの応答時間) を表示できます。Red Hat build of Keycloak 管理コンソールには、そのような情報を表示するサーバー情報ページがあります。