2.3. 创建自定义转换器,将来自 Red Hat Single-Sign On (RHSSO)的用户置备到软件目录
要自定义 RHSSO 用户和组如何映射到 Red Hat Developer Hub 实体,您可以创建一个使用 keycloakTransformerExtensionPoint
的后端模块来为 Keycloak 后端提供自定义用户和组转换器。
流程
-
使用
yarn 新命令
创建一个新的 backend 模块。 将自定义用户和组转换器添加到
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-backend
的pluginId
;否则,模块无法初始化。将此新后端模块安装到 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 帐户登录。