ToolJet 使用 Okta 作为 OIDC 身份提供商的 SSO 配置实战
2026/9/13 4:17:48 网站建设 项目流程

ToolJet 使用 Okta 作为 OIDC 身份提供商的 SSO 配置实战

【免费下载链接】ToolJetOpen-source foundation of ToolJet AI - the enterprise app generation platform for internal tools, dashboards, business applications, workflows and AI agents. Build visually, from a prompt, or from Claude Code, Codex and Cursor over MCP 🚀项目地址: https://gitcode.com/GitHub_Trending/to/ToolJet

本文以 ToolJet 官方文档Okta指南为主体,完整讲解如何把 Okta 配置为 ToolJet 的 OIDC 身份提供商(Identity Provider):从 Okta Developer Console 中创建应用集成、生成 Client ID / Client Secret、获取 Well-Known URL,到在 ToolJet 实例/工作区设置中启用并保存 OIDC 登录配置。结合 ToolJet 服务端源码,文章还会深入解析 OIDC 配置在数据库中的存储结构(sso_configs表)与登录回调处理链路,帮助读者不仅"会配",还能理解其背后的实现机制。

一、Okta 在 ToolJet 中的角色:OIDC 身份提供商

OpenID Connect(OIDC)是一种在 OAuth 2.0 之上构建的认证协议,应用可以借助受信任的身份提供商来安全地验证用户身份。ToolJet 允许把 Okta、Azure AD、Google 等作为 OIDC 身份提供商接入(对应 OpenID Connect 总配置指南),用户在登录 ToolJet 时会被重定向到 Okta 完成认证,认证结果再回传给 ToolJet 换取会话。

从源码结构看,ToolJet 后端的 SSO 体系以统一实体建模:SSOConfigs 实体 定义了SSOType枚举(googlegitformopenidldapsaml),Okta 走的就是其中的OPENID = 'openid'分支;同时通过ConfigScopeinstance/organization)区分 SSO 配置是实例级还是工作区(组织)级,这与文档中"Instance Level / Workspace Level"两种配置入口完全对应。

需要注意的适用前提:OIDC SSO 在 ToolJet 中标注为付费功能(setup.md 开头带有 "Paid feature" 徽标),且不同层级配置需要对应权限:

配置层级所需角色入口路径
实例级(Instance Level)Super Admin设置 > Instance login(示例 URL:https://app.corp.com/instance-settings/instance-login
工作区级(Workspace Level)Admin工作区设置 > Workspace login(示例 URL:https://app.corp.com/nexus/workspace-settings/workspace-login

二、在 Okta Developer Console 中生成 Client ID 与 Client Secret

这是本指南的主体操作流程,全程在 Okta Developer Console 中完成:

  1. 登录 Okta Developer Console。

  2. 进入Applications区域,点击Create App Integration

  3. 在创建表单中,选择OIDC - OpenID Connect作为Sign-in method,选择Web Application作为Application type,然后点击Next按钮。

  4. 填写App integration name,并将Sign-in redirect URIs设置为 ToolJet 提供的 Redirect URL(如何从 ToolJet 获取见第三节第 4 步)。

  5. 点击创建,完成应用创建。

  6. 复制生成的客户端凭证(Client Credential),稍后在 ToolJet 中配置。

  7. 依据 Okta 官方 Auth Servers 文档说明,找到自己的Well-Known URL(组织级授权服务器的/.well-known/openid-configuration端点)。该 URL 是 OIDC 发现(Discovery)机制的入口,ToolJet 会用它自动拉取 token 端点、jwks 端点等配置信息。

操作完成后,你手上应有三样东西:Client IDClient SecretWell-Known URL——它们正是 ToolJet OIDC 配置弹窗中要求的三个核心参数。

三、在 ToolJet 中启用并保存 OIDC 配置

拿到凭证后,按 OpenID Connect Setup 的步骤在 ToolJet 中落地:

  1. 点击 ToolJet 页面左下角的设置图标(⚙️)。
  2. 根据目标层级进入对应入口:
    • 实例级:Settings > Instance login
    • 工作区级:Workspace Settings > Workspace login
  3. 页面右侧有一组按客户端划分的 SSO 开关(默认全部关闭),打开OpenID Connect对应的开关。
  4. 开关打开后会弹出一个配置弹窗,包含NameClient IDClient secretWell known URL等输入项;弹窗左上角有一个启用开关,先打开它,然后不填写任何参数直接点击 Save changes。这一步会先生成 ToolJet 侧的Redirect URL——你正是把它填入上一步 Okta 的 Sign-in redirect URIs 中,形成"先要 URL、再生成凭证"的闭环。
  5. 回到弹窗,把 Okta 的Client IDClient SecretWell Known URL逐一填入并再次点击Save changes

保存成功后,OIDC SSO 即启用,用户即可通过 Okta 完成 ToolJet 登录。

四、源码级解析:OIDC 配置如何存储与生效

4.1 配置结构:OpenId 类型字段全集

SSOConfigs 实体 中定义了OpenId配置类型,除文档中出现的三个必填项外,还包含若干进阶字段,完整清单如下:

字段说明对应文档操作
clientIdOkta 应用生成的 Client ID第二节第 6 步复制的凭证
clientSecretOkta 应用生成的 Client Secret同上
name该 SSO 配置的展示名称弹窗中的 Name 字段
wellKnownUrlOkta 授权服务器的 Well-Known 发现端点第二节第 7 步获取
customScopes自定义的 OAuth 作用域进阶配置,默认留空即可
claimName/groupMapping/enableGroupSync用于 OIDC 组同步:指定 IdP 返回的组 claim 及到 ToolJet 用户组的映射(参见 OIDC 组同步文档)进阶功能,非登录必需
enableShortSession短会话开关进阶配置

这些字段以 JSON 形式持久化在sso_configs表的configs列中(见 sso_config.entity.ts),并通过enabled布尔列控制开关状态;configScope列则区分instanceorganization两个作用域,与前端两级设置入口一一对应。实例级 SSO 能力由数据迁移 1706024347284-AddInstanceLevelSSOInSSOConfigs.ts 引入。

4.2 登录链路:从回调到会话

用户经 Okta 认证成功后,ToolJet 收到回调并进入 OAuth 统一登录服务 OauthService.signIn,其处理逻辑包括:

  • 配置定位:优先按configId取工作区级配置;否则按 SSO 类型分别查询实例级配置(getInstanceSSOConfigsOfType)或组织级配置;
  • 用户校验与开通:校验 IdP 返回的用户是否具备有效的userSSOIdemail,再通过isValidDomain(userResponse.email, domain)做邮箱域名白名单校验;
  • 自动建号与角色授予:若该用户不存在且组织开启了注册(enableSignUp),系统会自动创建用户、初始化其个人工作区,并把该用户挂到ADMIN用户组,随后生成登录会话载荷(generateLoginResultPayload)完成登录;
  • 邀请流程衔接:如果用户是通过邀请链接进入的,还会走邀请激活分支(processOrganizationSignup),把 SSO 身份与组织邀请绑定。

具体到 OIDC 协议交互(用 code 换 token、校验 JWT 等),由 OidcOAuthService 抽象承接,其接口约定了signIn(code 换用户信息)与getConfigs(生成授权 URL 并处理 PKCE code verifier)两个核心方法。从开源仓库的源码结构看,该文件当前是接口骨架(方法抛出未实现错误),完整的协议实现随企业版(EE)模块提供,这也与文档将其标记为付费功能相印证。

五、配置核对清单

上线前建议按以下清单逐项核对:

  1. Okta 应用类型为Web Application + OIDC,Sign-in method 为 OIDC;
  2. Okta 的Sign-in redirect URIs与 ToolJet 弹窗首次保存生成的Redirect URL完全一致(协议与主机需严格匹配);
  3. ToolJet 中Client ID / Client Secret / Well Known URL三项均已填写且开关处于启用状态;
  4. 权限达标:实例级配置者为 Super Admin,工作区级配置者为 Admin;
  5. 若组织开启了域名限制,确认 Okta 侧用户邮箱域名在允许范围内,否则登录会被"Domain verification failed"拦截(见 OauthService.signIn 中的校验逻辑)。

按以上流程完成配置后,ToolJet 的登录页将支持通过 Okta 进行 OpenID Connect 单点登录;如需进一步用 Okta 的组属性自动同步 ToolJet 用户组,可继续参考 OIDC 组同步文档 中claimNamegroupMapping的用法。

【免费下载链接】ToolJetOpen-source foundation of ToolJet AI - the enterprise app generation platform for internal tools, dashboards, business applications, workflows and AI agents. Build visually, from a prompt, or from Claude Code, Codex and Cursor over MCP 🚀项目地址: https://gitcode.com/GitHub_Trending/to/ToolJet

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询