
NocoBase 钉钉登录集成实战OAuth 配置、回调 URL 与手机号自动注册机制解析【免费下载链接】nocobaseNocoBase is an open-source AI no-code platform for building business systems fast. Instead of generating everything from scratch, AI works on top of production-proven infrastructure and a WYSIWYG no-code interface, so you get both speed and reliability.项目地址: https://gitcode.com/GitHub_Trending/no/nocobase本文基于 NocoBase 官方中文文档《认证钉钉》整理并深化讲解如何通过钉钉 OAuth 让用户使用钉钉账号登录 NocoBase 的完整配置流程在钉钉开发者后台创建应用、开通权限、获取 Client ID / Client Secret以及在 NocoBase 用户认证管理中添加钉钉认证、配置回调 URL 与“手机号不存在时自动注册”选项。读完本文你可以独立完成钉钉登录接入并理解 NocoBase 认证体系authenticators 数据模型与认证类型注册机制的底层工作方式。一、认证钉钉插件是什么NocoBase 的认证钉钉插件对应 npm 包nocobase/plugin-auth-dingtalk见 文档 frontmatter支持用户使用钉钉账号登录 NocoBase。它属于 NocoBase 第三方/扩展认证体系的一部分核心认证能力由plugin-auth提供钉钉插件则作为一种具体的authType注册进来由用户自行启用和配置。从源码结构看NocoBase 的扩展认证统一落在authenticators数据模型上定义于 authenticators.ts。该集合的关键字段与设计意图如下字段类型作用namestring认证实例名称唯一unique: true是登录接口与usersAuthenticators关联表的锚点authTypestring认证类型标识如 basic、dingtalk 等对应插件向AuthManager注册的类型title/descriptionstring展示给管理员的标题与描述title支持多语言translation: trueoptionsjson各认证类型的私有配置默认{}——钉钉的 Client ID、Client Secret、自动注册开关等都存放在这里enabledboolean是否启用默认falseusersbelongsToMany通过中间表usersAuthenticators关联允许使用该认证的用户onDelete: CASCADE此外该集合声明了dumpRules: { group: third-party }与migrationRules: [overwrite, schema-only]说明第三方认证配置在备份/迁移时会被归入 third-party 分组迁移时仅覆盖表结构不会破坏已有配置数据。理解了这个模型就能理解后文所有配置动作的本质在 NocoBase 管理后台“添加 - 钉钉”一次实际就是向authenticators集合写入一条authType为钉钉的记录并把密钥等参数序列化进optionsJSON 字段。二、激活插件登录 NocoBase 管理端进入插件管理页面。找到认证钉钉点击启用/激活。激活后该插件会向认证体系注册“钉钉”这一认证类型。之后才能在用户认证管理页看到“添加 - 钉钉”的选项。三、在钉钉开发者后台申请接口权限接入钉钉登录需要先在钉钉开放平台创建应用并开通所需接口权限。官方文档给出的参考路径是参考钉钉开放平台“实现登录第三方网站”的教程创建一个应用教程为钉钉官方外部文档此处不贴外链请按名称在钉钉开放平台文档中检索。关键权限有且仅有两项个人手机号信息用于在 OAuth 授权后获取用户手机号这是登录匹配的核心依据通讯录个人信息读权限用于读取用户的基础通讯录信息。进入应用管理后台后在权限管理中分别为上述两项权限开通/申请这是整个接入能否走通的前提。四、从钉钉开发者后台获取密钥在应用管理后台的“凭证与基础信息”或对应凭证页面中复制两个凭证Client IDClient Secret这两个值将原样填入 NocoBase 的钉钉认证配置对应optionsJSON 中的客户端标识与密钥。五、在 NocoBase 上添加钉钉认证5.1 入口进入用户认证插件管理页面设置 - 用户认证。该页面列出当前系统已启用的全部认证方式由publicList/ 列表类接口按sort排序展示。从源码看authenticators.ts 的动作层中publicList只会返回enabled: true的记录且只向外暴露白名单字段name、authType、title、options、sort并通过authManager.getAuthConfig(authType).getPublicOptions(options)对options做脱敏——也就是说密钥等敏感配置不会原样下发到前端登录页登录页只能拿到类型标题和公开选项。这也是“添加一次、配置一次登录页自动出现钉钉按钮”的机制基础。5.2 添加钉钉认证点击添加 - 钉钉进入配置表单。5.3 配置参数详解配置项说明建议Sign up automatically when the user does not exist当使用手机号匹配不到已有用户时是否自动创建新用户钉钉授权后插件以获取到的手机号在users中查找匹配记录若未开启该项且无匹配用户则拒绝登录内网/企业环境建议开启实现“钉钉扫码即注册”对外系统建议关闭并预先导入用户Client ID钉钉开发者后台复制的 Client ID必填与 Client Secret 成对使用Client Secret钉钉开发者后台复制的 Client Secret必填属于敏感凭证注意不要写入前端代码或提交到代码库Redirect URL回调 URLNocoBase 生成的 OAuth 回调地址复制后填入钉钉开发者后台见下一节保存后这条配置会持久化到authenticators集合的options字段JSON 类型enabled默认为启用状态后才会出现在登录页。5.4 管理约束至少保留一个启用的认证方式管理端对认证方式有硬性保护authenticators.ts 中的checkCount会在destroy/update中校验“启用状态的认证数量”当你要禁用或删除的是最后一个启用的认证方式时接口会抛出 400 错误Please keep and enable at least one authenticator。因此如果你只有钉钉一种认证请先确保密码认证等其他方式处于启用状态再操作钉钉这条记录否则操作会被拒绝——这是防止把自己锁在系统外的安全设计。六、在钉钉开发者后台配置回调 URL将第五步在 NocoBase 中复制的Redirect URL回调 URL填写到钉钉开发者后台应用的“登录与分享 / 安全域名 回调地址”配置中以钉钉后台实际界面为准。两者必须完全一致否则 OAuth 回调会因域名/地址不匹配而失败。配置完成后钉钉授权成功时会将浏览器重定向回该 URL 并附带授权码NocoBase 端再用授权码 Client Secret 换取用户信息。七、登录流程与机制配置完成后未登录用户访问 NocoBase 登录页面登录表单下方会出现第三方登录入口点击钉钉按钮浏览器跳转至钉钉授权页用户扫码或输入钉钉账号授权钉钉按配置的回调 URL 重定向回 NocoBase携带授权码NocoBase 服务端调用钉钉接口换取手机号依赖“个人手机号信息”权限以手机号在users中匹配匹配到 → 直接以该用户身份登录未匹配到 → 若开启了“不存在时自动注册”则自动创建新用户并完成登录否则登录失败。从源码结构看登录页展示的第三方认证列表来自publicList动作其authTypeTitleauthType?.title即各认证插件注册的中文标题如“钉钉”options经getPublicOptions脱敏后仅用于渲染。钉钉插件具体换取用户信息的 HTTP 调用实现在其独立包nocobase/plugin-auth-dingtalk中该包未包含在本仓库开源代码内本仓库开源可见的认证核心为plugin-auth见 plugin-auth 包因此“以手机号匹配/创建用户”的上述描述基于官方文档对参数语义的定义与核心认证框架的对接方式推断。八、前置条件与常见注意点适用前提需要一个可在钉钉开放平台创建应用的组织管理员权限NocoBase 服务需有可被钉钉回调访问到的公网或内网可达地址。权限缺一不可未开通“个人手机号信息”时无法获取手机号登录匹配无从谈起。回调 URL 必须逐字一致包括协议http/https、端口与路径。自动注册的取舍自动创建的新用户初始权限遵循 NocoBase 的默认角色体系建议结合plugin-acl见 plugin-acl为不同部门用户细化权限。密钥安全Client Secret 仅保存在服务端authenticators.options中并经过publicList的getPublicOptions脱敏请勿自行在插件或自定义代码中把它下发到前端。删除保护如前文所述禁用/删除最后一个启用的认证方式会被后端拦截400操作前先保留一个启用的认证。九、小结NocoBase 的钉钉登录接入是一条标准的“OAuth 手机号对齐”路线在钉钉开放平台侧完成应用创建、两项权限开通、凭证获取与回调 URL 登记在 NocoBase 侧通过用户认证管理添加钉钉认证配置自动注册开关、Client ID / Secret 与回调地址。其底层依托plugin-auth的authenticators数据模型统一管理所有认证方式敏感配置经 JSONoptions存储并脱敏下发配合“至少保留一个启用认证”的保护机制使第三方登录既能快速上线又具备可运维性。相关实现可继续深入 authenticators 集合定义 与 认证动作层 阅读。【免费下载链接】nocobaseNocoBase is an open-source AI no-code platform for building business systems fast. Instead of generating everything from scratch, AI works on top of production-proven infrastructure and a WYSIWYG no-code interface, so you get both speed and reliability.项目地址: https://gitcode.com/GitHub_Trending/no/nocobase创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考