
ToolJet 通过 Google 作为 OIDC 身份提供方Client ID / Client Secret 申请全流程与后端配置解析【免费下载链接】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 官方文档「Google (OIDC)」为主体完整讲解如何将 Google Cloud 配置为 ToolJet 的 OpenID ConnectOIDC身份提供方从在 Google Cloud 控制台创建项目、注册 OAuth 客户端、设置userinfo.email与userinfo.profile权限到把生成的 Client ID、Client Secret 和 Well Known URL 填入 ToolJet 的 OIDC 设置并结合 ToolJet 服务端源码说明这些凭据在后端sso_configs实体中的存储结构、敏感字段加密机制以及通过环境变量初始化的方式帮助读者既完成实操配置又理解其底层实现。Google 作为 OIDC 身份提供方在 ToolJet 中的定位OpenID ConnectOIDC是一种构建在 OAuth 2.0 之上的身份认证协议它通过一个受信任的第三方身份提供方Identity Provider, IdP安全地验证用户身份。在 ToolJet 中Google 可以作为一种 OIDC 身份提供方进行接入用户在登录 ToolJet 时会被重定向到 Google 的登录页面完成身份验证Google 签发身份凭证后ToolJet 据此创建或匹配本地用户实现单点登录SSO。ToolJet 的 OIDC 支持是付费功能Paid feature并且支持两种作用域Instance Level实例级需要Super Admin角色入口为Settings Instance loginWorkspace Level工作区级需要Admin角色入口为Workspace Settings Workspace login。从服务端实体定义看ToolJet 在后端枚举SSOType中明确支持OPENID openid这一类型与GOOGLE、GIT、LDAP、SAML、FORM并列见 sso_config.entity.ts。而ConfigScope枚举则对应文档所述的两种配置作用域ORGANIZATION组织/工作区级与INSTANCE实例级见 sso_config.entity.ts。需要区分的是SSOType.GOOGLE是 ToolJet 面向 Google 提供的快捷登录GCS OAuth 流程而本文主题SSOType.OPENID是通用的 OIDC 协议接入——Google 只是其中一个可用的身份提供方。本文聚焦后者使用 Google 充当 OIDC IdP。第一步在 Google Cloud 控制台生成 Client ID 与 Client Secret以下是官方文档给出的完整操作步骤全部在 Google Cloud 控制台console.cloud.google.com完成1. 创建项目进入 Google Cloud 控制台并新建一个项目。2. 进入凭据页面创建 OAuth 客户端前往 Google Cloud 控制台的 Credentials 页面apis/credentials开始创建 OAuth 客户端 IDCreate OAuth client ID。3. 选择用户类型User type在 OAuth 同意屏幕consent screen设置中需要选择用户类型选择Internal内部仅允许你所在 Google 工作区Workspace内的用户登录选择External外部允许工作区之外的用户登录。请根据企业策略选择例如面向内部工具场景一般选 Internal。4. 填写应用注册信息进入应用注册页App registration填写必填项点击页面底部的SAVE AND CONTINUE按钮。5. 配置 OAuth Scopes关键步骤在第二页设置 OAuth 权限。点击ADD OR REMOVE SCOPES添加以下两个权限userinfo.emailuserinfo.profile这两个权限的作用是允许 ToolJet 存储登录用户的邮箱和姓名——即 Google 会在令牌ID Token中签发用户的 email 和 profile 声明供 ToolJet 匹配或创建本地用户。配置完成后点击SAVE AND CONTINUE。6. 配置回调地址Authorized redirect URIs关键步骤切换到Credentials标签页点击 CREATE CREDENTIAL选择OAuth client ID。选择 Application type 并填写名称在Authorised JavaScript origins中填入 ToolJet 实际部署的域名在Authorized redirect URIs中填入ToolJet 的 Google SSO 设置中生成的 Redirect URL该地址需要在 ToolJet 侧先保存一次配置后才会生成具体见下文「在 ToolJet 中配置」一节。7. 创建并复制凭据点击Create复制生成的Client ID和Client secret。Client secret 属于敏感凭据请妥善保管不要提交到代码仓库或日志中。8. 获取 Well Known URLOIDC 要求客户端通过身份提供方的元数据端点发现授权地址、令牌地址、JWKS 等。对于 Google固定使用https://accounts.google.com/.well-known/openid-configuration将其作为 ToolJet 中的Well Known URL参数填入。在 ToolJet 中配置 OIDC获得上述三项参数后回到 ToolJet 完成最终配置此为 OIDC 通用配置流程Google 与 Azure AD、Okta 等提供方一致点击 Dashboard 左下角的设置图标⚙️。实例级进入Settings Instance login示例 URLhttps://app.corp.com/instance-settings/instance-login工作区级进入Workspace Settings Workspace login示例 URLhttps://app.corp.com/nexus/workspace-settings/workspace-login。右侧会看到各 SSO 客户端的开关默认全部关闭。打开OpenID Connect的开关。打开后弹出配置弹窗包含Name、Client ID、Client secret、Well known URL等输入项。弹窗左上角有启用开关——先打开它然后在未填写任何参数的情况下直接点击 Save changes。这一操作的目的是让 ToolJet 先生成Redirect URL上一步在 Google Cloud 中 Authorized redirect URIs 处要填写的地址。将 Google Cloud 中获取的Client ID、Client Secret和Well Known URLhttps://accounts.google.com/.well-known/openid-configuration分别填入对应字段再次点击Save changes。保存成功后OIDC SSO 即启用完成用户即可通过 Google 账户完成 OpenID Connect 认证登录 ToolJet。注意配置顺序Google 侧的 redirect URI 依赖 ToolJet 侧生成的 Redirect URL因此必须先在 ToolJet 弹窗中「空保存」一次拿到该地址再回 Google Cloud 完成第 6 步最后回 ToolJet 填入完整参数。源码级解析OIDC 配置在后端如何存储与使用OpenId配置结构在实体定义中OIDC 类型对应的配置结构如下sso_config.entity.tstype OpenId { clientId: string; clientSecret: string; name: string; customScopes: string; wellKnownUrl: string; claimName: string; groupMapping: { [key: string]: string }; enableGroupSync: boolean; enableShortSession: boolean; };其中clientId、clientSecret、name、wellKnownUrl与文档中弹窗的四个输入项一一对应。此外还存在customScopes自定义 OAuth scope、claimName、groupMapping、enableGroupSync组同步开关等扩展字段这些能力超出了基础 OIDC 登录本身属于工作区级 OIDC 的进阶配置。整个sso_configs表的configs字段以 JSON 列存储sso_config.entity.ts同一张表承载google、git、openid、ldap、saml多种 SSO 类型通过sso枚举列区分。Client Secret 的加密存储Client Secret 属于高敏感凭据。从数据迁移代码 AddInstanceLevelSSOInSSOConfigs 可以看到当从环境变量初始化实例级 OIDC 配置时clientSecret会先经过encryptionService.encryptColumnValue(ssoConfigs, clientSecret, ...)加密后再落库{ configScope: ConfigScope.INSTANCE, sso: SSOType.OPENID, enabled: !!envVars?.SSO_OPENID_CLIENT_ID, configs: { clientId: envVars?.SSO_OPENID_CLIENT_ID || , name: envVars?.SSO_OPENID_NAME || , clientSecret: (envVars?.SSO_OPENID_CLIENT_SECRET (await encryptionService.encryptColumnValue( ssoConfigs, clientSecret, envVars.SSO_OPENID_CLIENT_SECRET ))) || , wellKnownUrl: envVars?.SSO_OPENID_WELL_KNOWN_URL || , }, },同时可以确认三个环境变量到 OIDC 配置的映射关系环境变量对应配置字段作用SSO_OPENID_CLIENT_IDclientId同时决定是否启用该 OIDC 配置非空即enabledSSO_OPENID_CLIENT_SECRETclientSecret加密后存储SSO_OPENID_WELL_KNOWN_URLwellKnownUrlOIDC 元数据端点Google 即https://accounts.google.com/.well-known/openid-configuration这意味着在自托管self-hosted部署场景下运维团队也可以不依赖界面、直接通过环境变量完成 OIDC 配置——这与界面配置的字段完全一致。认证流程接口从源码结构看OIDC 授权流程的交互逻辑位于认证模块的 OAuth 子包中IOidcService 接口 定义了三个核心方法——getConfigs(configId, codeChallenge?)返回codeVerifier与authorizationUrl其中codeChallenge参数表明实现了 PKCE 代码挑战机制用于增强授权码流程的安全handleOIDCConfigs(response, configId)处理重定向响应返回authorizationUrl供浏览器跳转到身份提供方signIn(code, configs)用授权码换取令牌并解析用户身份。结合 Well Known URL 的工作方式可以推断ToolJet 会先请求https://accounts.google.com/.well-known/openid-configuration获得 Google 的授权端点与 JWKS 端点随后按标准 OIDC 授权码流程完成重定向登录而不需要为每个提供方硬编码端点地址。测试中的佐证服务端测试同样印证了这套字段结构。例如 organizations.spec.ts 中构造的 OIDC 配置wellKnownUrl: https://idp.example.com/.well-known/openid-configuration,而 util.service.spec.ts 则覆盖了登录配置工具服务对wellKnownUrl等字段的处理逻辑可作为理解 OIDC 配置读取路径的参考。小结接入 Google 作为 ToolJet 的 OIDC 身份提供方核心是三件事在 Google Cloud 创建 OAuth 客户端并授予userinfo.email、userinfo.profile权限把 ToolJet 生成的 Redirect URL 注册为 Google 侧的授权回调最后将 Client ID、Client Secret 与固定 Well Known URLhttps://accounts.google.com/.well-known/openid-configuration填入 ToolJet 的 OIDC 设置。后端侧这些参数以 JSON 形式存入sso_configs表SSOType.OPENIDClient Secret 经列级加密落库并支持通过SSO_OPENID_CLIENT_ID/SSO_OPENID_CLIENT_SECRET/SSO_OPENID_WELL_KNOWN_URL环境变量初始化适用于自托管部署的自动化配置场景。相关文档与源码位置OIDC 通用配置指南setup.md同系列其他身份提供方文档Azure AD (OIDC)、Okta (OIDC)后端实体server/src/entities/sso_config.entity.ts认证流程接口server/src/modules/auth/oauth/interfaces/IOidcService.ts环境变量初始化迁移server/data-migrations/1706024347284-AddInstanceLevelSSOInSSOConfigs.ts【免费下载链接】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),仅供参考