2.3. Red Hat build of Keycloak (RHBK) からソフトウェアカタログにユーザーをプロビジョニングするためのカスタムトランスフォーマーの作成
RHBK ユーザーとグループを Red Hat Developer Hub エンティティーにマッピングする方法をカスタマイズするには、keycloakTransformerExtensionPoint
を使用して Keycloak バックエンドにカスタムのユーザーおよびグループトランスフォーマーを提供するバックエンドモジュールを作成します。
手順
-
yarn new
コマンドで新しいバックエンドモジュールを作成します。 カスタムのユーザーおよびグループトランスフォーマーを
keycloakTransformerExtensionPoint
に追加します。以下は、バックエンドモジュールを定義する方法の例です。
plugins/<module-name>/src/module.ts
import { GroupTransformer, keycloakTransformerExtensionPoint, UserTransformer, } from '@backstage-community/plugin-catalog-backend-module-keycloak'; const customGroupTransformer: GroupTransformer = async ( entity, // entity output from default parser realm, // Keycloak realm name groups, // Keycloak group representation ) => { /* apply transformations */ return entity; }; const customUserTransformer: UserTransformer = async ( entity, // entity output from default parser user, // Keycloak user representation realm, // Keycloak realm name groups, // Keycloak group representation ) => { /* apply transformations */ return entity; }; export const keycloakBackendModuleTransformer = createBackendModule({ pluginId: 'catalog', moduleId: 'keycloak-transformer', register(reg) { reg.registerInit({ deps: { keycloak: keycloakTransformerExtensionPoint, }, async init({ keycloak }) { keycloak.setUserTransformer(customUserTransformer); keycloak.setGroupTransformer(customGroupTransformer); /* highlight-add-end */ }, }); }, });
重要モジュールの
pluginId
は、keycloak-backend
のpluginId
と一致するようにcatalog
に設定する必要があります。そうしないと、モジュールは初期化に失敗します。この新しいバックエンドモジュールを Developer Hub バックエンドにインストールします。
backend.add(import(backstage-plugin-catalog-backend-module-keycloak-transformer))
検証
Developer Hub は起動するたびにユーザーとグループをインポートします。コンソールログをチェックして、同期が完了したことを確認します。
同期が成功した例:
{"class":"KeycloakOrgEntityProvider","level":"info","message":"Read 3 Keycloak users and 2 Keycloak groups in 1.5 seconds. Committing...","plugin":"catalog","service":"backstage","taskId":"KeycloakOrgEntityProvider:default:refresh","taskInstanceId":"bf0467ff-8ac4-4702-911c-380270e44dea","timestamp":"2024-09-25 13:58:04"} {"class":"KeycloakOrgEntityProvider","level":"info","message":"Committed 3 Keycloak users and 2 Keycloak groups in 0.0 seconds.","plugin":"catalog","service":"backstage","taskId":"KeycloakOrgEntityProvider:default:refresh","taskInstanceId":"bf0467ff-8ac4-4702-911c-380270e44dea","timestamp":"2024-09-25 13:58:04"}
- 最初のインポートが完了したら、Catalog ページに移動し、User を選択してユーザーのリストを表示します。
- ユーザーを選択すると、RHBK からインポートされた情報が表示されます。
- グループを選択してリストを表示し、RHBK からインポートされた情報にアクセスしたり確認したりできます。
- RHBK アカウントでログインできます。