2.3. Red Hat build of Keycloak (RHBK) からソフトウェアカタログにユーザーをプロビジョニングするためのカスタムトランスフォーマーの作成


RHBK ユーザーとグループを Red Hat Developer Hub エンティティーにマッピングする方法をカスタマイズするには、keycloakTransformerExtensionPoint を使用して Keycloak バックエンドにカスタムのユーザーおよびグループトランスフォーマーを提供するバックエンドモジュールを作成します。

手順

  1. yarn new コマンドで新しいバックエンドモジュールを作成します。
  2. カスタムのユーザーおよびグループトランスフォーマーを 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-backendpluginId と一致するように catalog に設定する必要があります。そうしないと、モジュールは初期化に失敗します。

  3. この新しいバックエンドモジュールを 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 アカウントでログインできます。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.