ToolJet LDAP 单点登录(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
LDAP(Lightweight Directory Access Protocol,轻量级目录访问协议)是用于访问和管理目录信息的标准协议,能够为企业提供集中式的身份认证与用户管理。本指南围绕 ToolJet 工作区(Workspace)中的 LDAP SSO 配置展开,完整说明配置入口、各项参数含义、SSL 证书选项、登录流程以及首次登录时的组同步与头像更新行为,并结合当前仓库的服务端与前端源码给出底层实现佐证。读者读完本文后,可以独立在企业自建的 ToolJet 实例上完成 LDAP 认证接入,并理解登录背后的用户创建、邀请激活与工作区级作用域等细节。
LDAP 在 ToolJet 中的定位
在 ToolJet 中,LDAP 被建模为一种工作区级别的单点登录(SSO)配置项。从服务端数据模型看,sso_config.entity.ts 中定义了SSOType枚举,其中LDAP = 'ldap'与GOOGLE、GIT、OPENID、SAML等并列;配置实体SSOConfigs通过configs字段(JSON 类型)存储 LDAP 的详细参数(见同文件 L68-L99)。
同时,LDAP 属于受许可证(License)保护的 SSO 能力。在 LicenseBase.ts 中通过getFeatureValue('ldap')读取该特性开关,前端在 BaseSSOConfigurationList.jsx 中将ldap列入protectedSSO列表,并使用LicenseTooltip对未授权实例隐藏/禁用配置入口。因此,在使用 LDAP SSO 前,请确认你的 ToolJet 版本与许可证包含 LDAP 特性。
前置条件与角色要求
- 配置 LDAP SSO 需要Admin(管理员)角色。
- 需要一个可访问的 LDAP 目录服务器(如 OpenLDAP、Active Directory 等),并准备好以下信息:
- 服务器 Hostname 或 IP 地址;
- 服务端口;
- 基础可分辨名称(Base DN);
- 若启用证书模式,还需准备客户端私钥(Client Key)、客户端证书(Client Certificate)与服务端证书(Server Certificate)。
配置 LDAP SSO 的分步操作
1. 进入工作区登录设置
- 点击 ToolJet 仪表盘左下角的设置图标(⚙️)。
- 进入Workspace settings > Workspace login。
- 典型 URL 形如:
https://app.corp.com/nexus/workspace-settings/workspace-login。
- 典型 URL 形如:
- 在 SSO 配置列表中点击LDAP卡片,打开配置弹窗(对应前端源码中的
openModal('ldap')逻辑,见 BaseSSOConfigurationList.jsx)。
2. 启用并填写配置项
打开Enable开关后,依次填写以下字段:
| 配置字段 | 说明 | 示例 |
|---|---|---|
| Name | SSO 名称,将显示在登录页的 “Sign in with<Name>” 按钮上 | Corporate LDAP |
| Hostname | LDAP 服务器的主机名或 IP 地址 | ldap.corp.com或10.0.0.5 |
| Port | LDAP 服务端口号(明文 389,LDAPS 636,具体取决于服务器配置) | 389或636 |
| Base DN | 基础可分辨名称,用于限定用户搜索的目录子树 | dc=corp,dc=com |
| SSL | 是否启用 SSL 加密连接;开启后可进一步选择None或Certificates | Certificates |
关于 SSL 模式:
- None:不使用证书校验,仅开启加密传输或按服务器默认策略连接。
- Certificates:需要额外提供三项内容:
- Client Key:客户端私钥;
- Client Certificate:客户端证书;
- Server Certificate:服务端证书(用于校验 LDAP 服务器身份)。
从服务端实体定义看,LDAP 配置的数据结构与上述字段一一对应。sso_config.entity.ts 中定义了包含basedn、ssl及证书对象(clientKey、clientCert、serverCert)的 LDAP 配置类型,并支持basedns多 Base DN 数组、bindAttribute(cn或upn)与enableGroupSync等扩展字段——这些字段意味着 ToolJet 的 LDAP 集成在底层支持多目录树、多种绑定属性以及组同步能力,为大型组织的复杂目录结构预留了扩展空间。
3. 保存配置
填写完毕后,点击底部的Save Changes按钮保存。配置写入后,ToolJet 会将其持久化到sso_configs表(见 sso_config.entity.ts),其中configScope为organization,sso为ldap,enabled置为true。
4. 获取 Login URL 并分享给用户
保存成功后返回Workspace login页面,复制页面提供的Login URL。该 URL 用于访问对应工作区的登录页,可将其分发给需要登录该工作区的用户。
登录流程与使用方式
- 用户访问工作区Login URL,点击Sign in with
<LDAP Name>按钮。 - 输入 LDAP 用户名与密码。
- ToolJet 使用 LDAP 服务器中每个用户关联的common name(cn)作为登录Username。
- 首次登录:用户会被重定向到Workspace Invite页面完成激活;
- 后续登录:直接进入 ToolJet 仪表盘。
登录作用域说明
需要注意:ToolJet 支持的是工作区级别的 LDAP 登录,而不是实例级别。因此,通过 LDAP 登录的用户会被定向到其选择的工作区,而不是全局实例。这一点与服务端登录逻辑一致:在 OauthService.signIn 中,工作区登录分支会按organization.id查询用户(findByEmail(userResponse.email, organization.id, ...)),并将organizationDetails固定为该工作区,从而保证登录会话归属到具体工作区。
首次登录的附加检查:组同步与头像更新
首次登录时,ToolJet 会执行额外的账户处理:
- 用户组同步:ToolJet 会校验 LDAP 服务器中的用户组;如果对应组在 ToolJet 工作区中存在,用户会被自动加入该组。该能力与实体中
enableGroupSync配置项对应,同时仓库中也有独立的组同步迁移(如 AddLdapGroupSyncToggle.ts 为 LDAP 配置增加组同步开关),说明组同步是 LDAP 集成的一项成熟能力。 - 头像更新:ToolJet 会从 LDAP 服务器读取用户的 profile picture,并同步更新 ToolJet 账户头像。
这些行为由服务端用户生命周期逻辑驱动:在 lifecycle.ts 中,LDAP = 'ldap'被定义为用户的合法来源(source)之一,与signup、invite、google、saml等并列;user.entity.ts 的source字段枚举同样包含'ldap'。这意味着通过 LDAP 首次登录创建的账户,其来源会被标记为ldap,便于后续审计与生命周期管理。
结合源码理解 LDAP 登录的实现结构
- 服务端:
OauthService中注入了LdapService(见 service.ts),并在 module.ts 中注册了oauth/util-services/ldap.service提供方。ldap.service.ts 基于ldapts客户端库定义了initializeLdapClient、search、unbindLdapClient等核心方法,用于建立连接、执行目录搜索与释放连接。 - 前端:登录入口方面,仓库中存在 LdapLoginPage.jsx 作为 LDAP 登录页的壳组件,并通过
withEditionSpecificComponent按版本(Edition)动态注入对应实现;LDAP 配置的 UI 卡片则统一由 BaseSSOConfigurationList.jsx 渲染,LDAP 图标取自assets/images/Ldap.png(见 L343-L344)。 - 许可校验:后端 sso.guard.ts 在路由守卫中针对
'ldap'场景做许可证校验,前端则通过featureAccess.ldap控制配置入口是否可用,二者共同保证只有具备许可的实例才能启用 LDAP SSO。
常见注意事项
- 请确保 LDAP 服务器地址(Hostname/Port)从 ToolJet 服务端可达,且防火墙放行相应端口。
- Base DN 建议尽量精确,以缩小目录搜索范围、加快认证响应;如目录规模较大,可结合实体的
basedns多 Base DN 能力规划配置(需以你所部署版本实际支持的 UI 字段为准)。 - 启用 SSL 证书模式时,需保证 Client Key、Client Certificate、Server Certificate 三份材料内容正确且配套,否则握手会失败。
- LDAP 登录属于工作区级 SSO,请将对应工作区的 Login URL 分发给目标用户,而不是实例登录地址。
- 如果实例许可证未包含 LDAP 特性,配置入口会被隐藏或置灰;此时请升级许可证后再行配置。
通过以上步骤,即可在企业目录服务之上为 ToolJet 工作区开启 LDAP 单点登录,实现集中的身份认证、自动组同步与头像同步,显著简化内部用户的登录与管理流程。
【免费下载链接】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),仅供参考