惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

B
Blog RSS Feed
量子位
Y
Y Combinator Blog
大猫的无限游戏
大猫的无限游戏
B
Blog
U
Unit 42
C
Check Point Blog
I
InfoQ
aimingoo的专栏
aimingoo的专栏
雷峰网
雷峰网
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 【当耐特】
人人都是产品经理
人人都是产品经理
The Cloudflare Blog
H
Help Net Security
MongoDB | Blog
MongoDB | Blog
博客园 - Franky
H
Hackread – Cybersecurity News, Data Breaches, AI and More
J
Java Code Geeks
Microsoft Azure Blog
Microsoft Azure Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
云风的 BLOG
云风的 BLOG
宝玉的分享
宝玉的分享
爱范儿
爱范儿

土法炼钢兴趣小组的算法知识备份

国密算法与国密 TLS 系列索引 【系统架构设计】架构质量属性:不只是"高可用高性能" 【系统架构设计百科】告警策略:如何避免"狼来了" 【系统架构设计】CQRS:读写分离的架构哲学 【系统架构设计】空间架构:极端扩展场景的解法 【系统架构设计】微服务架构深度审视:优势、代价与适用边界 【系统架构设计】扩展性原理:水平、垂直与对角扩展 【系统架构设计】无状态设计:扩展的第一步也是最难的一步 【系统架构设计】缓存架构:从本地到分布式的多级缓存体系 【系统架构设计】管道与过滤器:Unix 哲学的架构表达 【系统架构设计】复杂性管理:架构的核心战场 【系统架构设计】消息队列架构:异步解耦的设计与陷阱 【系统架构设计】CDN 架构:全球加速的设计原理 【系统架构设计】连接池设计:被忽视的性能杀手 【系统架构设计】弹性设计模式:熔断器、舱壁与超时 【系统架构设计】高可用设计模式:冗余、故障转移与仲裁 【系统架构设计】容量规划:从拍脑袋到数据驱动 【系统架构设计】数据库扩展:分库分表的工程实践与替代方案 【系统架构设计】SLO 工程:可靠性的量化管理 【系统架构设计】性能建模:用数学思维分析系统瓶颈 【系统架构设计】混沌工程:主动验证系统的韧性 【系统架构设计】零拷贝与内存映射:数据搬运的极致优化 【系统架构设计】线程模型:从 thread-per-request 到协程 【系统架构设计】容灾架构:多活与灾备设计 【系统架构设计】数据库性能模式:索引、查询与连接管理 【系统架构设计】数据建模:从关系范式到文档模型的真实权衡 【系统架构设计】吞吐量优化:批处理、流水线与并发模型 【系统架构设计】流处理架构:从批处理到实时的范式迁移 【系统架构设计】搜索引擎架构:倒排索引之上的系统设计 【系统架构设计】时序数据架构:监控与 IoT 的存储设计
【身份与访问控制工程】自建还是采购:Keycloak、Auth0、Entr...
Liao Tonglang · 2026-06-20 · via 土法炼钢兴趣小组的算法知识备份

Keycloak 工程拆解 中,我们看到了自建 IAM 的工程细节。但很多团队面临的实际问题是:我们应该自建 Keycloak,还是直接买 Auth0/Okta/Entra?

这个问题不能被简化为”开源 vs 商业”的意识形态之争。它是工程经济学——总拥有成本(TCO)、团队能力、业务规模和定制需求的函数。

一、成本模型的工程拆分

IAM 的成本不仅是 license 费用。完整的成本模型包括:

TCO = License Fee
    + Infrastructure (compute + storage + network)
    + Operations (部署、监控、升级、故障处理)
    + Engineering (定制开发、集成、API 对接)
    + Knowledge (培训、文档、团队学习曲线)
    + Risk (供应商锁定、合规风险、供应商 outage)

1.1 自建 Keycloak 的成本

以一个中等规模的 B2B SaaS 公司为例(10 万 MAU,5 个企业 SSO 集成):

成本项 估算 说明
基础设施 2-4 vCPU + 8 GB RAM + RDS PostgreSQL 约 $200-400/月(双节点 + LB)
运维人力 0.3-0.5 FTE 升级、监控、故障处理、备份恢复
定制开发 因人而异 自定义认证流、与内部系统集成、UI 定制
HA/多活 额外 1.5-2x 基础设施成本 多区域部署、数据库复制
License $0 Apache License 2.0

隐性成本: - Keycloak 的版本升级不是零成本的——从 21.x 到 22.x 的 Quarkus 迁移,从 24.x 到 25.x 的 API 变更,都需要投入时间。 - Keycloak 的内部知识积累——团队中至少需要 1 人深入理解 Keycloak 的 SPI、Authentication Flow 引擎和数据库 schema。

1.2 采购 Auth0 / Okta 的成本

以 Auth0 的 B2B 定价为例(2026 年公开信息):

成本项 估算 说明
License(B2B Essential) $800/月起 (1000 MAU) → $3000+/月 (10 万 MAU) MAU 阶梯定价,含 OIDC/SAML SSO
Enterprise SSO 附加 额外费用(企业套餐) SAML/OIDC 对接企业 IdP
MFA 附加 包含或附加 Auth0 的 Adaptive MFA 为附加模块
组织(Organization) B2B 套餐包含多租户 Okta 的 Org2Org 更成熟
运维 $0(SaaS) Auth0 承担全部基础设施
定制 UI 低代码配置 深度定制受限——不能用 SPI 写自定义代码
供应商锁定 未来切换成本高 迁移 10 万用户的认证数据到另一个平台是大型工程

1.3 盈亏平衡点

粗略估算:对于一个 MAU 在 5000 以下的 SaaS 创业公司,Auth0 的 Free Tier 或低端付费计划(~$300/月)远低于自建 Keycloak 的人力和基础设施成本(~$800/月)。

对于 MAU 在 10 万以上的 SaaS 公司,Auth0/Okta 的年费用($30,000-$80,000/年)与自建 Keycloak 的一个专职 IAM 工程师的年薪(包含 on-call 和其他成本)处于同一量级。此时决策取决于其他因素——定制深度、数据主权、合规需求。

二、功能对比:不是什么都能互相替代

能力 Keycloak (自建) Auth0 Okta Workforce Azure AD / Entra ID
OIDC / OAuth 2.0 全支持 全支持 全支持 全支持
SAML 2.0 全支持 全支持 全支持 全支持(原生)
社交登录 内置(Google/GitHub/Facebook 等) 内置 + 更多 有限 Microsoft / Google
自定义认证流 SPI 编写任意 Authenticator Auth0 Actions (Node.js) Okta Workflows (低代码) 条件访问策略
多租户 (B2B) 手动架构(多 Realm 或 Group 隔离) Organizations (B2B 套餐) Org2Org B2B 直接联合
User Federation 内置(LDAP/AD + 自定义 SPI) 有限(企业连接器) AD/LDAP Agent 原生 AD 集成
审计与合规 自建日志管道 Auth0 Log Streams Okta System Log Entra 审计日志
API 授权 手动集成(配合 OPA/Cedar) RBAC + FGA (基于 OpenFGA) 有限 Entra Permissions Management

关键差异:

  • Auth0 Actions vs Keycloak SPI:Auth0 Actions 是一个在登录流程中运行的 Node.js 函数,可以做轻量级的自定义逻辑(如 Whitelist 过滤、自定义 claims、发送通知)。但 Actions 不能实现”完全自己写一套认证流程”(如对接内部 HR 系统做实时身份验证)——这需要 Keycloak 的 SPI 深度扩展。
  • Entra ID 的 AD 原生集成:如果企业已经全面依赖 Microsoft 365 和 Azure,Entra ID 的无缝集成(Azure AD Connect、Conditional Access、Intune 设备合规)是自建 Keycloak 无法复制的。
  • Okta 的 Org2Org:大型企业集团可能已经统一使用 Okta——如果那些客户要求”我们只愿意接 Okta”,你作为 SaaS 提供商只需要支持 OIDC/SAML 即可,不需要自己成为 Okta 客户。

三、决策框架

flowchart TD
    Q1{"业务是 B2C<br/>还是 B2B?"}
    Q1 -->|"B2C<br/>(百万级用户)"| A1["采购 Auth0 / 云厂商方案<br/>自建 Keycloak 的运维成本<br/>在 B2C 量级下失控"]
    Q1 -->|"B2B<br/>(千-10万级用户)"| Q2{"是否需要深度定制<br/>或数据主权要求?"}

    Q2 -->|"需要"| Q3{"团队有 2+ 人<br/>能投入 IAM?"}
    Q3 -->|"有"| A2["自建 Keycloak<br/>+ 配合 OPA/Zanzibar"]
    Q3 -->|"没有"| A3["采购 Auth0 / Okta<br/>(企业级功能匹配)"]

    Q2 -->|"不需要"| Q4{"是否已全栈使用<br/>Microsoft/Azure?"}
    Q4 -->|"是"| A4["Entra ID<br/>(生态协同优势)"]
    Q4 -->|"否"| A3

    A1 -.->|"如果业务复杂度增加<br/>(如多租户权限)"| A2
    A3 -.->|"如果 MAU 增长到<br/>License 成本超过人力成本"| A2

工程判据:如果以下三个条件中满足两个,建议自建: 1. MAU > 50,000(商业 license 费用 > 一名 IAM 工程师的年薪)。 2. 需要深度定制认证流程(有自己的认证因素、与内部系统有复杂的实时交互)。 3. 数据主权或合规要求数据不得出特定区域(Auth0/Okta 的数据中心选择有限或不满足合规)。

四、迁移成本的事前评估

在选择”自建”或”采购”时,必须考虑切换成本:

  • 自建 → 采购:迁移用户密码不可能(哈希不可逆),需要”渐变迁移”——新用户去新的 IdP,老用户在旧 IdP,逐步迁移或强制全员重新登录。
  • 采购 → 自建:同样的问题反向——但可以导出用户数据(Auth0 和 Okta 都支持用户数据导出)。MFA 种子和 WebAuthn credential 不可迁移——必须让用户重新注册。
  • 策略和权限数据:OAuth Clients 配置、权限规则(如果用了 OpenFGA/Zanzibar)可以在新平台重建,需要事前设计好自动化导入脚本。

上一篇Keycloak 工程拆解:Realm、Client、Flow 与扩展机制 下一篇CIAM 架构:面向 B2B / B2C SaaS 的身份平台

同主题继续阅读

把当前热点继续串成多页阅读,而不是停在单篇消费。

2026-06-14 · architecture / security

【身份与访问控制工程】SCIM 与账号生命周期:开通、变更、离职自动化

SSO 只解决认证,SCIM 解决账号的生命周期管理。但 SCIM 2.0 的实现远不是调几个 REST API 那么简单:User/Group schema 的映射、Delta vs Full sync 的同步策略、Patch 操作语义,每个环节都有坑。本文从账号生命周期的四个关键事件出发,拆解 SCIM 2.0 的核心协议、同步模式、Schema 扩展,以及与企业 IdP(Azure AD、Okta)对接的实际工程经验。

2026-06-13 · architecture / security

【身份与访问控制工程】IAM 全景:为什么这是高价值赛道

从 2020 年 SolarWinds 到 2024 年 Okta 支持系统泄露,身份基础设施的安全失败反复证明一件事:IAM 不是 IT 支撑系统,而是安全架构的承重墙。本文建立现代 IAM 的全景地图——从认证协议、令牌体系、权限模型到身份治理与平台选型,给出 5 个贯穿全系列的核心问题。

2026-06-20 · architecture / security

【身份与访问控制工程】Keycloak 工程拆解:Realm、Client、Flow 与扩展机制

Keycloak 是 CNCF Incubating 项目中最成熟的 IAM 平台,也是自建身份系统的首选开源方案。但它不是'下个 JAR 跑起来就行'的简单软件——Realm 的隔离模型、Authentication Flow 的执行引擎、Client Scope 和 Protocol Mapper 的职责分离、自定义 SPI 扩展点——理解这些内部架构才能做好生产部署。本文从 Keycloak 的核心概念模型出发,拆解其内部执行路径和扩展机制。

2026-04-21 · architecture / security

身份与访问控制工程

从 OIDC、OAuth 2.1、SAML、SCIM 到多租户权限、CIAM、PAM 与身份平台选型——系统拆解现代身份与访问控制的协议、架构与工程实践。