2.3. 创建自定义转换器,将来自 Red Hat Single-Sign On (RHSSO)的用户置备到软件目录


要自定义 RHSSO 用户和组如何映射到 Red Hat Developer Hub 实体,您可以创建一个使用 keycloakTransformerExtensionPoint 的后端模块来为 Keycloak 后端提供自定义用户和组转换器。

流程

  1. 使用 yarn 新命令 创建一个新的 backend 模块。
  2. 将自定义用户和组转换器添加到 keycloakTransformerExtensionPoint 中。

    以下是如何定义 backend 模块的示例:

    plugins/<module-name>/src/module.ts

    import {
      GroupTransformer,
      keycloakTransformerExtensionPoint,
      UserTransformer,
    } from '@janus-idp/backstage-plugin-keycloak-backend';
    
    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 必须设置为 catalog 以匹配 keycloak-backendpluginId ;否则,模块无法初始化。

  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 来查看用户列表。
  • 当您选择用户时,您会看到从 RHSSO 导入的信息。
  • 您可以选择组,查看列表,访问或查看从 RHSSO 导入的信息。
  • 您可以使用 RHSSO 帐户登录。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.