# oie-oidc-auth **Repository Path**: easylin/oie-oidc-auth ## Basic Information - **Project Name**: oie-oidc-auth - **Description**: OIE Community Store package (localized) - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-10-12 - **Last Updated**: 2026-10-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # OIE OIDC 认证 此扩展为 OIE Web 管理器添加 OpenID Connect 单点登录功能。它运行在引擎上,将浏览器重定向到身份提供者并交换授权码。它验证 ID 令牌并将用户以引擎用户名登录。它可以在首次登录时创建引擎用户,并可以从提供者声明中分配 RBAC 角色。 **文档:**[wiki](https://github.com/gibson9583/oie-oidc-auth/wiki) 包含带截图的安装和配置指南、Keycloak、Microsoft Entra ID、Okta 和 AWS Cognito 的提供者指南以及故障排除页面。本 README 为参考文档。 ## 环境要求 - OIE 4.6.0。 - OIE Web 管理器 0.9.0 或更高版本。 - 一个 OpenID Connect 提供者上的机密客户端,需要其客户端 ID 和客户端密钥。 - 重定向 URI `/oidc/callback`,需在提供者处注册。 - 可选:基于角色的访问控制 (RBAC) 扩展。角色分配需要此扩展。在没有 RBAC 的情况下启用用户创建前,请先阅读*即时用户*章节。 构建需要:Java 17、Maven 和 OIE 4.6.0 安装。 ## 构建 ```sh OIE_HOME=/path/to/oie mvn clean package ``` 构建输出 `target/oidcauth-1.0.2.zip`。GitHub 上的每个发布版也附带此文件。 ## 安装 1. 将 zip 解压到引擎的扩展目录。 2. 重启引擎。 3. 在 Web 管理器中打开 **设置 → OIDC 认证**。扩展加载后此选项卡会出现。如果扩展未加载,引擎将没有 OIDC 端点、没有 `manageOIDC` 权限、也没有设置选项卡。 扩展在正常运行时不会向引擎日志写入任何内容。当紧急开关被设置、存储的策略被拒绝、以及 JIT 预配在没有 RBAC 扩展的情况下开启时,它会记录一条 WARN 日志。要在日志中查看其状态,将日志记录器 `org.openintegrationengine.plugins.oidc` 设置为 DEBUG。引擎随后会在启动时和每次保存后写入一行以 `OIDC authentication is` 开头的日志。该行报告四种状态之一: - `ACTIVE for ` - `disabled (policy key 'enabled' is false)` - `SWITCHED OFF by OIE_OIDC_DISABLED` - `not configured: ` ## 权限 扩展权限 `manageOIDC` 保护设置选项卡及其 API。 安装 RBAC 后: - 管理员角色 (`is_admin`) 上的用户持有 `manageOIDC`。他们持有所有扩展权限。不要将 `manageOIDC` 添加到管理员角色。角色编辑器会以只读方式显示该角色。 - 将 `manageOIDC` 授予需要管理 SSO 策略的其他角色。 未安装 RBAC 时,每个已登录用户都可以打开此选项卡。 Web 模块在加载时发送 `GET /api/extensions/oidcauth/configuration`。`403` 响应会隐藏选项卡。任何其他响应都会显示选项卡。如果选项卡缺失,请检查该响应。Servlet 在每次操作时都会检查权限。 引擎的审计日志将每次保存记录为 **Manage OIDC configuration**,每次测试记录为 **Test OIDC configuration**。每个事件仅记录用户和结果。没有事件包含策略或客户端密钥。 ## 配置 1. 在提供者处使用重定向 URI `/oidc/callback` 注册客户端。输入 Web 管理器 URL 后,设置选项卡会显示确切的值。 2. 在 Web 管理器中,打开 **设置 → OIDC 认证**。 3. 选择 **启用 OIDC 登录**。这会解锁其他字段。 4. 输入 **Discovery URL**、**Client ID**、**Client secret** 和 **Web 管理器 URL**。 5. 选择 **测试连接**。这会读取发现文档、获取密钥集并计算可以验证令牌的签名密钥数量。不会进行任何更改。 6. 选择 **保存**。 **保存** 会验证策略、将其存储到引擎数据库并应用到运行中的扩展。无需重启。**刷新** 会重新读取存储的策略。 此选项卡具有以下特性: - 在选择了 **启用 OIDC 登录** 之前,所有字段保持锁定。 - 被运维覆盖固定的字段为只读并标记为*已固定*。参见*运维覆盖*章节。 - 横幅会报告活动的紧急开关。横幅也会报告引擎拒绝的策略及原因。 - **默认角色** 和每个 **声明到角色的映射** 目标提供引擎的 RBAC 角色。已存储但 RBAC 不再列出的名称保持选中状态并被标记。 - **关联账户** 提供引擎的用户。在读取发现文档后的登录中,选项卡会自动填写新绑定的 `issuer#` 部分。 - 声明字段在输入时会建议常用的声明名称。它们接受任何文本。 - 当选项卡无法读取列表时,会回退到自由文本输入。 - 选项卡将存储的客户端密钥显示为 `********`。保存掩码时保留存储的密钥。输入新值以替换它。 ## 策略存储 策略以扩展的插件属性形式存储在引擎数据库中。客户端密钥在存储前使用引擎的密钥加密,因此扩展页面上的原始属性视图和服务器配置导出会显示密文。以明文存储的密钥或由其他引擎密钥无法解密的密钥会被拒绝,直到在设置选项卡中重新输入。因此,恢复到具有不同密钥库的引擎上的导出需要重新输入密钥。 ### 运维覆盖 每个策略键都可以在数据库外部固定: - 环境变量:`OIE_OIDC_`。将键大写并用下划线替换每个点和连字符。`roles.default` 变为 `OIE_OIDC_ROLES_DEFAULT`。 - 系统属性:`org.openintegrationengine.oidc.`,键保持不变。示例:`-Dorg.openintegrationengine.oidc.roles.default=User`。 环境变量优先于系统属性。两者都优先于存储的策略。选项卡以只读方式显示固定的键,且不将其包含在保存中。自动化安装可以通过这种方式设置整个策略。 ### 紧急开关 `OIE_OIDC_DISABLED=true`(或系统属性 `org.openintegrationengine.oidc.disabled=true`)关闭 SSO。引擎拒绝所有 OIDC 登录,登录页面不再提供 SSO。存储的策略保持不变,选项卡报告开关状态。这不同于 `OIE_OIDC_ENABLED=false`,后者固定策略键 `enabled`。 ## 登录流程 引擎公开三个不需要会话的操作:`GET /api/extensions/oidcauth/public`、`POST /start` 和 `POST /callback`。每个引擎 API 请求必须携带 `X-Requested-With` 头,因此提供者不会直接联系引擎。Web 管理器转发提供者的响应。 1. 登录页面读取 `/public`。响应携带 `configured`、`providerLabel` 和 `autoRedirect`,不包含提供者的相关信息。 2. 用户选择 **使用