「我们用 Okta」这句话,翻译过来是二十六小时的工程和一次报价方式的重新选择。
一、一句「我们用 Okta」带来的二十六小时
2026 年 7 月 23 日,第二轮演示结束前,方工说了一句:「我们内部用 Okta,登录要走 SAML,离职走 SCIM 自动停用。」程野当时的产品只有邮箱加密码和魔法链接,没有企业登录。他回了句「我确认一下工作量」,挂了电话开始拆。
以下情境为教学假设,人物、引语和数字不代表经核实的真实案例。
拆法是按「客户会验收什么」倒推。SSO 的验收是三类账号都能登录:管理员、普通成员、已离职(应当被拒)。SCIM 的验收是三类事件都能同步:建号、改名、停用。审计导出的验收是能一次导出 30 天、8 个字段。三件事都做到,才算「支持企业登录」。
工作量估成 16 + 8 + 2 = 26 小时。这个数字不是拍脑袋:SSO 的五段各有时长,SCIM 的两段各有坑,审计导出最省但字段要一次定对。26 小时里没有一分钟花在「研究要不要做」上。
他原本以为 SSO 最难的是协议。做完发现协议是最简单的部分:SAML 的断言格式是公开的,照着文档拼就能跑通。真正花时间的是证书轮换、属性映射和错误提示——这三件事不写进文档,客户第一次配置就会卡住。
动手估算前,他先问清三件事:IdP 是哪一家、协议要 SAML 还是 OIDC、离职停用是实时还是每天一次。三个答案决定工作量的上下限——OIDC 的元数据与断言更简单,通常能省下几个小时;实时停用则要求 webhook 或高频轮询,比每天一次更费工。
26 小时估完,他把它单独列一张表,没有塞进售前 96 小时里。理由是这笔投入不属于「为了拿下这一单」的消耗,而是会留在产品里的资产;混在一起,第二年复盘时会误以为销售效率变差了。
二、SSO 16 小时、SCIM 8 小时、审计导出 2 小时
同一句「支持 SSO」,拆成可验收的动作之后,工作量才有意义。
| 能力 | 工作量 | 验收方式 | 不做会怎样 |
|---|---|---|---|
| SAML 2.0 单点登录 | 16 h | 用客户测试租户完成三类账号登录 | 安全审查直接不通过 |
| SCIM 用户同步 | 5 h | 建号、改名、停用各触发一次 | 60 席每月人工开停号约 2 h |
| SCIM 组与角色映射 | 3 h | 3 个组分别映射到 3 个角色 | 离职后权限残留,审计过不了 |
| 审计日志导出 | 2 h | 导出 30 天、8 个字段、一次成功 | 季度审计只能靠截图 |
16 小时的 SSO 分五段:元数据与 ACS 端点 3 小时,签名与证书 4 小时,属性映射与账号绑定 5 小时,错误提示与回退 2 小时,与客户测试租户联调 2 小时。最耗时的是属性映射,因为客户的用户名是小写邮箱、显示名是中文、组名带部门前缀,三个字段都要有兜底默认值。
证书那段有一个容易漏的点:IdP 每年换证书,换的时候会有一段时间新旧两张并存。服务端必须同时接受两张,否则客户换证书那天全员登录失败。他在签名与证书那 4 小时里留了 1 小时做双证书校验,这 1 小时买的是「换证书不用停机」。
SCIM 的 5 小时里,有 2 小时花在幂等上。Okta 在超时后会重推同一条建号请求,如果只按邮箱建账号,重推就会报「已存在」并让整个同步批次失败。改成用 externalId 做唯一键、重复请求返回 200 而不是 409,才稳定下来。
组映射的 3 小时不是写代码,是定规则:管理员组、成员组、只读组分别对应产品的三个角色。规则定完还要处理「一个人在两个组」的情况,他的选择是取权限高的那个,并在审计日志里记下原因。
审计导出只花 2 小时,但字段必须一次定对:操作者、对象、动作、时间、IP、结果、来源、请求号。少一个字段,客户季度审计时就要回来找你加,而加字段意味着再发一次版。
五段拆分的依据是「客户会卡在哪」。客户 IT 第一次配置时,多数问题出在属性映射与证书,而不是断言签名;把这两段的时间估够,联调就不会拖到第二周。
SCIM 的两个坑都跟「不信任调用方」有关:一是重复推送,二是部分失败。一个批次里第 7 个用户失败时,整批返回 200 还是 207,要在文档里写清,否则客户的重试策略会和你的实现对不上。
四项能力的验收方式有一个共同点:都能在客户的测试租户里当场演示。演示不了的能力,在安全审查里等于不存在——这也是为什么他把「验收方式」和「工作量」放在同一张表里。
三、三档报价与两种回本算法
26 小时怎么收钱,比 26 小时怎么花更难。他试过三种报价,最后同时保留,按客户类型选。
| 档位 | 金额 | 折合时薪 | 适用客户 |
|---|---|---|---|
| 含在年付内 | 0 美元 | 不单独计 | 60 席以下、没有 IdP 的客户 |
| 一次性实施费 | 2,400 美元 | 92.3 美元/h | 有 IdP、50 到 100 席 |
| 合同加价 15% | 2,700 美元 | 103.8 美元/h | 采购要求「全包、不再单独审批」 |
一次性报价 2,400 ÷ 26 = 92.3 美元/h;加价档 18,000 × 15% = 2,700,2,700 ÷ 26 = 103.8 美元/h。加价档更贵,反而更容易被大客户接受,因为采购不需要为「实施费」单独走一次审批,15% 摊进年费不占新的预算科目。
另一种回本算法是自建还是买托管。26 小时按 120 美元/h 的机会成本算,等于 3,120 美元;托管身份服务 60 美元/月,3,120 ÷ 60 = 52 个月才回本,而且这 52 个月里不含每年证书轮换与字段变更的维护。
三家客户复制时,这笔账会变:3 × 18,000 = 54,000 的合同额,3,120 ÷ 54,000 = 5.8%,按机会成本算占收入不到六个点。同一份 26 小时投入,客户越多越便宜,这也是「一次投入、可复用」的真实含义。
如果只做 SSO 不做 SCIM,成本是 16 × 120 = 1,920 美元,少 1,200 美元。但客户问「离职账号怎么办」时,你只能用「每月人工核对」回答,而 60 席每月人工开停号约 2 小时,一年 24 小时——省下的 1,200 美元,第二年就被人力吃回去。
三种报价不是三个价格,是三种决策路径。免费档换成交速度,一次性档换现金流,加价档换采购流程的简化;同一家公司第二次采购时,完全可能从一档换到另一档。
四、自建、托管与不做的边界
自建的适用条件有三个:至少 3 家客户明确要求、需要自定义属性映射、账号元数据不能交给第三方。三条里满足两条就值得自己做,因为 26 小时摊到 3 家只有 8.7 小时一家。
托管的适用条件更简单:只有 1 到 2 家客户要求,26 小时排不进这个季度,且 60 美元/月不构成负担。代价是账号元数据经第三方一手,DPA 里的子处理者清单要多一行。
不做的边界要写下来:客户要求私有化部署 IdP、要求 SCIM 双向全量同步所有组、要求把身份服务放在自己的机房。这三件事都不是 26 小时能解决的,报价再高也不接。
还有一种情况是「能做但不划算」:客户只有 10 席却要求 SSO。26 小时的机会成本 3,120 美元摊到 10 席是 312 美元/席,而每席年费只有 300 美元。这种单子要么加价到覆盖成本,要么直接说明「这个规模用密码加二次验证更合适」。
只做 SSO 不做 SCIM 是一个常见的半成品。它能让安全审查过一半,却会在「离职员工账号还在」这一条上被退回。SSO 是登录能力,SCIM 是运维承诺,两者一起卖才成立。
复算:工程 16 + 8 + 2 = 26 h(一次投入,可复用)
SSO 16 h = 元数据 3 + 证书 4 + 属性映射 5 + 回退 2 + 联调 2
SCIM 8 h = 用户同步 5 + 组与角色 3
一次性报价:2,400 ÷ 26 = 92.3 美元/h
合同加价:18,000 × 15% = 2,700;2,700 ÷ 26 = 103.8 美元/h
机会成本:26 × 120 = 3,120 美元
三家复制:3 × 18,000 = 54,000;3,120 ÷ 54,000 = 5.8%
托管对比:3,120 ÷ 60 = 52 个月
只做 SSO:16 × 120 = 1,920 美元,比全量少 1,200 美元
这组数字里最容易被忽略的是「52 个月」。它不是一个建议期限,而是一个比较结果:只有在自建成本按 3,120 美元计、托管价格保持 60 美元/月、且不计维护时,两者才在第 52 个月相等。任何一项变了,结论就变。
把这组数字放进报价单之前,要先把「谁承担后续变更」写清。客户换 IdP、加部门、改属性名,都属于变更;他写的规则是「交付后 30 天内免费,之后按 4 小时起算」。
五、行动清单与复算验收
- 问清客户用哪家 IdP、走 SAML 还是 OIDC、是否要求 SCIM。
- 用客户的测试租户跑通三类账号:管理员、普通成员、已离职。
- 把证书轮换写进运维日历,确认服务端能同时接受新旧两张证书。
- SCIM 用 externalId 做唯一键,验证重复推送不会建出两个账号。
- 组映射至少覆盖管理员、成员、只读三档,并处理一人两组的情况。
- 审计导出固定 8 个字段,验证 30 天数据能一次导完。
- 在报价单上写清是三档中的哪一档,以及是否含后续字段变更。
- 算一遍单席成本,席位数低于 20 时先考虑不做。
验收标准:任取一个客户账号,都能在 2 分钟内说出它由哪个组授权、最近一次同步是什么时候、停用后多久失去访问。
前四条是「让它能登录」,后四条是「让它能交付」。如果只有一天,先做第一条和第二条:不知道客户用哪家 IdP,16 小时的估算就没有依据。
验收顺序要从「拒绝」开始:先测已离职账号登不进来,再测普通成员能登录,最后测管理员。顺序反了容易漏掉拒绝路径——能登录只能证明配置对了,能拒绝才证明策略生效了。
如果客户只给一个测试账号,先要三个:管理员、普通成员、已离职。三类账号覆盖授权、登录与拒绝三条路径,缺一条都说明不了问题。
使用边界与实操验收
不点名任何身份服务商。 本文只比较三种交付方式的工作量与报价,不评价具体产品的功能、价格或安全记录;60 美元/月是教学假设里的一个价位,不是某家产品的报价。
26 小时是一次投入。 第二家客户如果用的是同一家 IdP,通常只需要 2 到 4 小时配置与联调;如果换成另一家 IdP,属性映射与证书部分要重做,按 16 小时 SSO 的一半重估更稳。
3,120 美元是机会成本,不是现金支出。 它把 26 小时按 120 美元/h 折算,用来和托管服务的月费比较;实际账上不会出现这笔支出,也不应写进发票。
报价里的时薪是折算值,不是挂牌价。 92.3 与 103.8 只用于比较三种交付方式,不该拿去和客户的预算表对齐,也不该用来解释某个功能为什么贵。
复用的前提是同一家 IdP。 换成另一家,属性名、组结构、证书格式都会变;把 26 小时当成「任何客户都 26 小时」,报价一定会亏。
自建与托管是取舍,不是对错。 自建换来控制权与边际成本递减,托管换来了上线速度与维护外包;在只有一两家企业客户时,后者的总成本通常更低。
不替代安全评估。 SSO 与 SCIM 只解决身份的生命周期,不解决会话固定、令牌泄露与越权;这些要在安全基线里单独处理。
关键参考与核验范围
- RFC 7643(SCIM 核心模式) :用于核对用户与组的属性模型、externalId 与唯一性约束。
- RFC 7644(SCIM 协议) :用于核对创建、过滤、分页与幂等相关的协议行为。
- OASIS SAML 2.0 Core :用于核对断言、绑定与签名证书的规范定义。
以上链接于 2026-10-26 实测可公开访问;未核验版本、功能范围与政策更新。核验日期:2026-10-26。
范围上只讨论一个人如何估算 SSO、SCIM 与审计导出的工作量、如何分档报价与判断自建边界,不讨论具体 IdP 的配置步骤、多租户权限模型的实现,也不评价任何身份服务商。
系列导航
- 上一篇:SLA:99.9% 是 43.2 分钟,以及为什么先承诺 99.5%
- 下一篇:试点:四周、十四小时与三条成功标准
- 回到目录:一个人的企业客户:九家询价、一百四十八道问卷与 134 天的第一单
- 相关阅读:什么时候必须有「组织」:五个信号与三种模型
继续阅读
探索更多技术文章
浏览归档,发现更多关于系统设计、工具链和工程实践的内容。