钉钉扫码免登
官方版本并不支持钉钉登录,于是在中间加了一层自建网关做协议适配,打通扫码授权全流程。
- 员工用钉钉扫码即登录,无需单独密码
- 首次登录自动建号,昵称取组织架构真名
- 所有请求都在内网闭环,零公网依赖
DEVOPS PLATFORM / ENTERPRISE PRACTICE
在一台内网服务器上搭起研发团队的代码管理平台,并把它和公司钉钉打通:扫码免登、真名账号、工作台入口、入离职自动同步、使用指引与品牌定制。全程零公网依赖,员工一个密码都不用记。
BACKGROUND
研发团队规模不大,但代码是公司最核心的技术资产。托管在外部平台上,账号怎么管、离职后权限怎么收、新人怎么知道去哪儿看代码,全是悬着的问题。目标很明确:把代码放到自己能掌控的地方,同时不能让同事多记一套账号密码。
CORE CAPABILITIES
搭起来只是开始。让同事愿意用、用得顺、走了能自动收回权限,才算真正落地。
官方版本并不支持钉钉登录,于是在中间加了一层自建网关做协议适配,打通扫码授权全流程。
把默认的随机编号账号,换成姓名全拼,让代码提交记录里的人名一眼就能认出来。
zhangjianhao把平台作为应用放进企业钉钉工作台,同事从每天都会打开的入口一键直达。
与钉钉通讯录定时对账,权限跟着人事状态走,不依赖任何人的记忆。
在登录页放一个不打扰的入口,指向一份面向全员的操作指引,把培训成本降到最低。
从登录页到浏览器标签,整套视觉换成公司自己的样子,员工一眼确认「这是我们的平台」。
IMPLEMENTATION
每一层都选了成熟、可维护、不依赖外部服务的方案,让这套平台能在内网长期自己跑下去。
| 模块 | 方案 | 关键细节 |
|---|---|---|
| 平台底座 | GitLab CE 19.3.1 单机版 | 一台内网服务器承担全部服务,数据落地本地,不对外开放。 |
| 登录接入 | 通用 OAuth2 提供商 + 自建适配网关 | 平台与钉钉的协议不同,用中间层做翻译,避免改动平台源码。 |
| 网关服务 | Python + waitress + systemd | 常驻内网端口,开机自启、进程异常自动重启,无需人为看护。 |
| 身份信息 | 钉钉开放平台接口 | 换取用户身份后取组织架构真名与唯一标识,用于建号和去重。 |
| 用户名生成 | pypinyin + 实时查重 | 姓名转全拼作为用户名,建号前向平台查询是否占用,重复则递增序号。 |
| 定时对账 | systemd timer | 每 15 分钟运行一次同步任务,按人事状态批量停用或恢复账号。 |
| 运营入口 | 登录页视图补丁 + 幂等脚本 | 新增指引入口写成可重复执行的脚本,平台升级覆盖视图后一键重建。 |
| 品牌资源 | 外观配置 + 静态资源替换 | LOGO、站点标题、浏览器图标统一替换,素材集中归档便于复用到其他系统。 |
INTERFACE
平台在真实环境中的三个关键界面:登录入口、使用界面,以及同事日常触达它的地方。
VALUE & BOUNDARY
老实说清楚哪些问题被解决了、哪些还受条件限制,比只报喜更有用。
WHAT WE SHIPPED
READ MORE
从选型对比到链式升级、自建登录网关、三个教科书上没有的坑,以及可以照着抄的提示语清单。