ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

ToolJet SSO 通用设置(General Settings)配置指南:启用注册、允许域名与登录 URL

ToolJet SSO 通用设置(General Settings)配置指南:启用注册、允许域名与登录 URL ToolJet SSO 通用设置General Settings配置指南启用注册、允许域名与登录 URL【免费下载链接】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 2.50.0-LTS 版本为背景系统讲解工作区 SSOSingle Sign-On中的General Settings通用设置包括Enable signup启用注册、Allowed domains允许的域名与Login URL登录 URL三个核心配置项的作用、操作路径、底层实现原理与注意事项。阅读完本文你将能够独立完成 ToolJet 工作区 SSO 通用策略的配置理解这些设置如何影响用户注册、域名校验与直达登录流程并能在源码层面印证其行为。进入 General Settings 的操作路径在 ToolJet 控制台中SSO 通用设置位于工作区级别的管理界面操作步骤如下在 ToolJet 仪表盘左侧边栏点击Workspace Settings⚙️在设置页侧边栏中选择SSO在 SSO 页面中点击General Settings选项卡即可看到本节将要介绍的三个配置项。对应前端实现位于 WorkspaceLoginSettings.jsx其中 General Settings 表单包含了允许域名输入框、登录 URL 展示框以及注册开关等控件。启用注册Enable Signup配置作用Enable signup开关决定了用户首次通过 SSO 登录时是否自动创建新账户开启用户使用 SSO 首次登录时系统会自动为其创建新账户自动注册关闭只有已存在于工作区中的存量用户才能通过 SSO 登录新邮箱地址将被拒绝。这一开关直接控制 SSO 登录链路中的「自动开通账号」行为是控制工作区成员准入的第一道闸门。底层实现从源码看ENABLE_SIGNUP是实例级系统设置Instance System Setting之一定义在 instance-settings 常量export enum INSTANCE_SYSTEM_SETTINGS { ... ENABLE_SIGNUP ENABLE_SIGNUP, ALLOWED_DOMAINS ALLOWED_DOMAINS, ... }其默认值由环境变量DISABLE_SIGNUPS决定见同文件的getDefaultInstanceSettings()[INSTANCE_SYSTEM_SETTINGS.ENABLE_SIGNUP]: process.env.DISABLE_SIGNUPS false ? true : false,即当环境变量DISABLE_SIGNUPS未设置或不为false时默认值为false关闭注册只有显式设置DISABLE_SIGNUPSfalse才默认开启注册。在 SSO 登录流程中该配置通过getInstanceSSOConfigsOfType被读取并转换为布尔值注入到 SSO 配置对象中见 auth/util.service.tsconst instanceSettings await this.instanceSettingsUtilService.getSettings([ INSTANCE_SYSTEM_SETTINGS.ALLOWED_DOMAINS, INSTANCE_SYSTEM_SETTINGS.ENABLE_SIGNUP, ]); return { organization: { enableSignUp: instanceSettings?.ENABLE_SIGNUP true, domain: instanceSettings?.ALLOWED_DOMAINS, }, ... };而 OAuth 登录编排服务oauth/service.ts在解析配置后依据enableSignUp决定新建用户还是仅允许存量用户登录const enableSignUp typeof organization?.id undefined ? true : !!organization.enableSignUp;这里organization.id未定义即实例级 SSO 配置场景时默认允许注册否则严格遵循配置开关。配置与运维要点若希望实例默认关闭注册保持DISABLE_SIGNUPS不设置或设置为true即可若希望默认开启需设置DISABLE_SIGNUPSfalse并重启服务使环境变量生效。该配置通过实例设置接口下发到前端见 configs/service.ts 的public_config其中fetchDefaultInstanceConfig()返回的实例配置列表包含ENABLE_SIGNUP因此修改后需同步刷新前端配置。允许的域名Allowed Domains配置作用Allowed domains用于对 SSO 登录用户的邮箱域名进行白名单限制可以添加多个域名以英文逗号分隔例如tooljet.com,tooljet.io,yourorganization.com默认允许所有域名即该字段留空时不设限制当配置了域名白名单后邮箱后缀不在名单内的用户将无法通过 SSO 登录。前端输入框的辅助文案也明确说明了这一格式见 WorkspaceLoginSettings.jsxSupport multiple domains. Enter domain names separated by comma. example: tooljet.com,tooljet.io,yourorganization.com底层实现域名校验的核心函数为isValidDomain实现在 server/src/helpers/utils.helper.tsexport const isValidDomain (email: string, restrictedDomain: string): boolean { if (!email) return false; const domain email.substring(email.lastIndexOf() 1); if (!restrictedDomain) return true; // 未配置域名时放行所有域名 if (!domain) return false; if ( !restrictedDomain .split(,) // 按逗号拆分 .map((e) e e.trim()) // 去除首尾空格 .filter((e) !!e) // 过滤空项 .includes(domain) // 精确匹配邮箱域名 ) { return false; } return true; };该函数体现了两条关键行为逗号分隔 空白容忍多个域名用逗号分隔每个域名会经过trim()处理因此tooljet.com, tooljet.io含空格也能正确解析留空即放行restrictedDomain为空时直接返回true与文档中「默认允许所有域名」的描述一致。在 OAuth 登录流程中oauth/service.tsSSO 响应解析后立即执行域名校验const domain organization?.domain; ... if (!isValidDomain(userResponse.email, domain)) { throw new UnauthorizedException(You cannot sign in using the mail id - Domain verification failed); }即邮箱域名不在白名单内时登录直接失败并返回「Domain verification failed」错误。数据校验与层级配置接口对domain字段做了长度限制与输入清洗见 login-configs/dto/index.tsMaxLength(250)即域名列表总长度不能超过 250 个字符且会经过sanitizeInput消毒在 EE 版本中还提供isValidSSODomain做组织级与实例级的层级校验组织配置优先于实例配置CE 版本则始终返回true不限制。注意该层级校验仅适用于 EE企业版社区版CE不做 SSO 域名限制。登录 URLLogin URL配置作用Login URL是当前工作区的直达登录链接团队成员可以直接使用该 URL 登录到指定工作区而无需先经过工作区选择页面。该 URL 形如https://你的ToolJet域名/login/workspace-slug 或 workspace-id当 Multi-Workspace多工作区被禁用时该字段会隐藏——因为单工作区场景下不存在「选择工作区」的问题URL 右侧提供复制按钮可一键复制分享给团队成员。底层实现前端根据当前登录会话信息动态拼接登录 URL见 WorkspaceLoginSettings.jsx{${getHostURL()}/login/${ authenticationService?.currentSessionValue?.current_organization_slug || authenticationService?.currentSessionValue?.current_organization_id }}可以看到 URL 的路径段优先使用工作区 slugcurrent_organization_slug不存在时回退到工作区 IDcurrent_organization_id。因此若工作区配置了自定义 slug登录 URL 会更加可读、便于记忆和分享。同时前端还会调用copyFunction(login-url)实现一键复制方便管理员将链接分发给成员。使用建议将登录 URL 与 SSO如 Google OAuth、GitHub OAuth配合使用可以实现「打开链接 → 直接进入工作区 SSO 登录」的最短路径由于 URL 依赖 slug/ID若工作区被重命名或 slug 变更需要以界面展示的最新 URL 为准在禁用了 Multi-Workspace 的部署中该字段自动隐藏管理员无需也无法配置。三个配置项与 SSO 登录链路的整体关系将上述三个配置项串联起来SSO 登录的完整链路为用户访问工作区登录 URL或通用登录页服务端读取实例/工作区 SSO 配置含ENABLE_SIGNUP、ALLOWED_DOMAINS用户通过 IdP如 Google完成身份认证后回调 ToolJetToolJet 解析 IdP 返回的用户邮箱先执行域名白名单校验isValidDomain/isValidSSODomain不通过则拒绝登录通过校验后依据enableSignUp判断允许注册则自动创建账户并关联到工作区否则仅放行存量用户用户进入工作区。这一流程在 oauth/service.ts 中按序实现先取配置含domain与enableSignUp再做域名校验最后走「创建或复用用户」的findOrCreateUser逻辑见 auth/util.service.ts。常见问题与排查建议现象可能原因排查方向首次 SSO 登录提示无法登录Enable signup已关闭且该用户未预先加入工作区在工作区成员管理中先添加该用户或临时开启注册开关登录报「Domain verification failed」邮箱域名不在Allowed domains白名单内检查白名单格式逗号分隔、无多余空格、总长度是否超过 250 字符找不到 Login URL 字段Multi-Workspace 被禁用单工作区部署下该字段按设计隐藏无需配置环境变量修改后行为未变化服务未重启或前端配置未刷新修改DISABLE_SIGNUPS后需重启服务并确认public_config已返回最新值以上排查项均可在 configs/service.ts、oauth/service.ts 与 utils.helper.ts 中找到对应的实现依据。若需要进一步了解 Google/GitHub 等具体 SSO 提供方的配置可参阅同目录下的对应文档如 Google SSO 与 GitHub 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创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表