GitHub推荐:自托管 Okta 替代:authentik 7 年 24K stars,把企业 IAM 做成可视化拖拽
一句话总结
Authentik Security 公司用四语言(Python + Go + Rust + TypeScript)打造的自托管开源 IdP,把传统 Java 重型企业 IAM(Okta/Entra/Keycloak 的世界)做成了「Flow 可视化拖拽 + 声明式 Blueprint」的现代开源形态,是当下自托管身份中枢赛道最值得复用的架构范本。
值得关注的理由
- 架构层面是教科书级的 polyglot monorepo:Rust(axum) 接管 HTTP 入口 + Python(Django) 跑业务 + Go 跑远程 outpost + TypeScript(Lit) 跑 Web,单仓 63 万行代码 + 7 年 9 个月仍能 17.8 commit/天稳定推进
- Flow & Stage 是 IdP 行业里少见的「可编程身份流程」抽象:登录、MFA、邀请、密码恢复都能拖拽编排,决策算法(policy engine)独立成 Stage + Binding + Marker 的状态机,比 Keycloak 的 SPI 友好一个数量级
- 用 OCI 分发 YAML 配置(Blueprint OCI Registry):把 Docker 镜像的签名/缓存基础设施白嫖来分发声明式 IaC,是 Helm/Terraform 都没想到的解法
- 生产背书过硬:自述 100+ 万安装,公开点名 Cloudflare、CoreWeave、Anduril、T-Systems、Der Spiegel、Gopuff、Austrian Red Cross 在用,2026-07 单月 655 commit 创历史新高
项目展示
Admin 后台(浅色主题)— 三套独立 SPA 之一,用 Lit 3 + PatternFly 4 写就
Admin 后台(深色主题)— 双主题完备
用户端 App 列表(浅色主题)— 用户视角的「我的应用」门户
用户端 App 列表(深色主题)— 用户态独立 UI
官网 Hero 登录卡 — 3D glassmorphism 风格是项目视觉差异化武器
无公网 hosted demo(项目定位「自托管」决定),视频教程见官网 https://goauthentik.io
项目画像
| 维度 | 数据 |
|---|---|
| GitHub | https://github.com/goauthentik/authentik |
| Star / Fork | 23,958 / 1,800+ |
| 代码行数 | 631,108(不含注释) + 161,891 行注释 = 79.3 万行 |
| 语言分布 | TypeScript 36.1% / Python 25.5% / YAML 17.2% / JSON 7.9% / Go 6.8% / Rust 2.8% / CSS 2.0% |
| 项目年龄 | 7 年 9 个月(2018-11-11 ~ 2026-08-08) |
| 开发阶段 | 密集开发期(2026-07 单月 655 commit 创历史新高) |
| 贡献模式 | 商业开源公司 + 596 名贡献者;创始人 BeryJu 占人工 commit 40% |
| 热度定位 | 大众热门(与 Keycloak ~28k 同量级,自托管 IdP 第一梯队) |
| 质量评级 | 代码 优秀 / 文档 优秀 / 测试 充分 / CI 完善 |
作者视角:为什么存在这个项目
创始人/作者背景
主体不是个人开发者,是 Authentik Security 这家欧洲公司(创始人为 Jens Langhammer aka BeryJu)的商业开源组织账号。bio 一句话「Making authentication simple」—— 一句话就把项目定位讲透了:把传统「又重又黑盒」的身份基础设施做简单。
公司化组织账号(2021-04 至今 5.3 年)+ 596 名社区贡献者 + 创始人单人 40% 人工 commit + 5 个 GitHub Team(backend/frontend/infrastructure/release/docs)分权 —— 是典型的「商业开源公司 + 创始人主导 + 制度化分权」组合。
问题判断
作者看到三个别人没重视的问题:
- 数据出境焦虑:Okta/Auth0/Entra ID 把鉴权流量过境 SaaS,企业自托管需求被低估,欧洲尤其敏感(GDPR 加成)
- 企业 IAM 协议碎片化:OAuth2/OIDC + SAML2 + SCIM + LDAP + RADIUS + Proxy Forward Auth 共存,每个协议一个产品,运维噩梦
- 复杂登录流的工程门槛高:Keycloak 要写 Java SPI + Theme 模板才能改登录流,作者用 Flow/Stage/Marker 把这件事变成「拖拽 + YAML」
解法哲学
作者明确选择:
- Flow/Stage/Marker 状态机代替「写 Java SPI」 —— 这是最值钱的抽象选择
- 声明式 YAML(Blueprint)代替 SQL seed —— 自带
!Find/!KeyOf/!Format自定义 YAML Tag + 自家 OCI media type 走 Docker 镜像同款分发 - fork 子进程跑 Policy 表达式 + exec() + 受限 globals —— 沙箱策略选择上偏「可信管理员扩展点」,不维护 DSL
- 明确不做什么:不做 SaaS、不做云控制面、不做联邦 IDaaS 拼盘 —— 商业版只卖 on-prem 增强(FIPS、SSO 报告、合规审计、专属支持)
战略意图
Open-core 商业策略 与 GitLab CE/EE 一脉相承:旗舰本体(authentik 24K stars)+ 19 个卫星仓库(helm-chart、terraform-provider、outpost-deploy 等)构成完整 self-hosted IAM 生态;商业层(Enterprise)卖 FIPS、SSO 报告、合规审计、专属支持,License 校验在运行时(EnterprisePolicyAccessView.check_license)。
100+ 万安装基数 + Cloudflare/CoreWeave/Anduril 等大客户背书 + 商业化路径清晰 = 项目长期存活的强信号。
核心价值提炼
创新之处(按新颖度×实用性排序)
- Flow Planner + Stage Marker(Decorator-style Plan Mutation):
FlowPlan.bindings与markers双数组,ReevaluateMarker在 password stage 后强制重评 MFA 策略,实现「执行后决策下一步」。任何多步业务(审批、KYC、运维 Runbook)都能借鉴。【新颖 4/5、实用 5/5、可迁移 4/5】 - Blueprint OCI Registry:自定义 media type
application/vnd.goauthentik.blueprint.v1+yaml让 YAML 配置走 Docker 镜像同款签名/缓存基础设施,Helm/Terraform/policy bundle 都能白嫖。【新颖 5/5、实用 4/5、可迁移 4/5】 - fork 子进程跑 Policy 表达式:可信管理员扩展点用
exec()+ 受限_globals(ak_call_policy/ak_send_email/ak_create_jwt)+ 独立 fork 子进程 + Pipe 通信 + 超时 kill —— 规避 RCE 风险同时保留无限扩展性。【新颖 4/5、实用 4/5、可迁移 4/5】 - Mirror Actor 策略继承:
engine.py:_get_mirror_parent让 service account 镜像父账号策略结果,frozenset类型白名单做 hot path 短路 +user.__dict__备忘录避免冗余查询。【新颖 4/5、实用 4/5】 - Rust + Go + Python 三层入口:Rust 接 HTTP、Python 跑业务、Go 跑远端 outpost,每层用 axum/hyper/reqwest/aws-lc-rs 串,启动期不死 + FIPS 兼容。【新颖 3/5、实用 5/5、可迁移 4/5】
可复用的模式与技巧
- 「Flow/Stage/Binding/Policy」状态机分层:任何需要策略门控的多步业务直接套用
- 「API schema → 全语言 generated client」强制契约:
schema.yml由 drf-spectacular 从运行 Django 提取,make gen一键重生成 Go/Rust/TS 客户端,AGENTS.md 红字禁止手编(多语言 monorepo 防漂移) - 「声明式 YAML + reconcile 循环 + OCI 分发」:YAML 自带
!Find/!KeyOf/!Format自定义构造器,entries 之间互相引用,import 时建图 topological 排序(GitOps 友好) - 「fork 子进程 + 受限 globals + exec()」沙箱:适合可信管理员扩展点(Airflow 同款思路)
- 「mirror / inherit / shadow」 actor 抽象:service account 继承主账号权限的 RBAC 子类场景
- LazyLock + 启动期不死:Rust 端
STARTUP_RESPONSE_JSON/HTML/PLAIN预先缓存 503 + Retry-After,启动期任何请求都能立刻响应
关键设计决策与 trade-off
| 决策 | Trade-off | 迁移性 |
|---|---|---|
| Flow 状态机代替 Django 视图函数 | 失去直接可读性,换「改 YAML 就能改登录流程」 | 高 |
| Python 表达式 + exec() + 子进程隔离 | 任意 Python 执行必然 RCE 风险(限定管理员可写),换无限扩展性 | 高 |
| Outposts 独立 Go 进程 | 多语言构建复杂,换「崩溃不拖死核心」「贴近 LDAP 域部署」 | 中 |
| Rust 前置代理接管 HTTP 入口 | 多一个二进制,换 I/O 性能 + 启动期不死 | 高 |
| API 永远从代码生成 | 每次字段变更要 make gen + 提交生成文件,换四端类型一致 | 高 |
| Blueprint = YAML + 自家 YAML Tag | 要学自家方言,比 Helm template 简单 | 高 |
| Dramatiq on Postgres 而非 Celery + Redis | 吞吐不如 Redis broker,少一个组件 + 任务状态天然 SQL 可查 | 高 |
CalVer YYYY.M.0-rcN | semver 生态不适配,契合「持续演进 + 强契约生成」节奏 | 中 |
竞品格局与定位
竞品对比矩阵
| 维度 | authentik | Keycloak | Authelia | Auth0/Okta |
|---|---|---|---|---|
| 定位 | 自托管现代 IdP | Java 企业级 IdP | 轻量认证网关 | 商业 SaaS IDaaS |
| Stars | 24k | ~28k | ~25k | n/a(商业) |
| 语言栈 | Python+Go+Rust+TS | Java | Go | n/a |
| OAuth2/OIDC | ✅ | ✅ | ✅ | ✅ |
| SAML2 | ✅ | ✅ | ❌ | ✅ |
| SCIM | ✅ | ✅ | ❌ | ✅ |
| LDAP | ✅(Outpost) | ✅ | ❌ | ✅ |
| RADIUS | ✅(Outpost) | ❌ | ❌ | ❌ |
| Proxy Forward Auth | ✅ | ✅ | ✅ | ❌ |
| Flow 可视化 | ✅ | ❌(要写 SPI) | ❌ | ✅(Actions) |
| 声明式 IaC | ✅ Blueprint | ✅ Realm JSON | ❌ | ❌ |
| 自托管 | ✅ | ✅ | ✅ | ❌ |
| 数据本地 | ✅ | ✅ | ✅ | ❌ |
| per-MAU 计费 | ❌ | ❌ | ❌ | ✅ |
| 部署复杂度 | 中(多进程) | 高(Java + DB) | 低(单二进制) | 无(SaaS) |
| 适合场景 | 中型企业 / homelab / 数据本地需求 | 大型企业 / Java 团队 | 个人/小团队单 Web 应用加 MFA | 数据出境可接受 + 快速上线 |
差异化护城河
- 技术护城河:Flow + Blueprint 可编程抽象 + Outpost 多协议拆解 + Rust 入口工程化。竞品 Keycloak 想要复制 Flow 抽象需重写大部分内核,Authelia 想要补 SAML/SCIM 要重新设计协议层
- 生态护城河:1M+ 安装 + 100+ 官方 integration(每服务一文件在
website/integrations/)+ helm-chart + terraform-provider + 5 个 GitHub Team 制度化维护 - 信任护城河:商业公司 + 双许可(MIT 核心永远开源)+ Cloudflare/CoreWeave/Anduril 大客户背书 —— 用户敢用于生产
竞争风险
- 最大威胁是 Keycloak(生态最大、企业认知最熟),尤其 Java 阵营 + 合规认证客户群;Keycloak 的 Realm/Client/Role 概念对 LDAP/AD 老管理员更熟悉
- Auth0/Okta 在 SaaS 偏好场景不可替代:99.99% SLA + 高级 MFA(push、risk-based)+ 5000+ 应用 SSO 模板库
- 新兴 cloud-native IDaaS(WorkOS、Stytch、Clerk)在开发者体验上更顺滑,适合 SaaS 初创
生态定位
开源自托管 IdP 中 **「最开发者友好 + 可编程 + 多协议」**版本,坐稳 homelab 到中型企业 之间最大公约数位置。不下沉 SaaS(Okta 守门)、不上探大型企业(含 Okta 的合规白手套服务)的合规白手套业务。
Keycloak 守的是「企业大客户 + Java 生态」; Authelia 守的是「个人/小团队单 Web 应用加 MFA」; Authentik 守的是「自托管 + 多协议 + 可编程」的中间地带。
套利机会分析
- 信息差:不是被低估股(已进入主流自托管 IdP 第一梯队),但 架构范式仍被严重低估 —— Flow/Stage/Marker 状态机 + Blueprint OCI Registry + fork 子进程跑策略 这三套抽象对其他领域(审批引擎、KYC、运维 Runbook、policy bundle 分发)有强复用价值
- 技术借鉴:
- 多语言 monorepo 强制契约模式(
drf-spectacular→ Go/Rust/TS 全语言生成 + AGENTS.md 红字禁止手编)—— 任何想多语言协作的项目直接抄 - Rust + Go + Python 三层入口 + LazyLock 启动期不死 —— 任何希望「启动期能响应 + 业务层可任意重」的项目都可借鉴
- Blueprint YAML + 自家 YAML Tag + OCI 分发 —— IaC 工具的下一代形态参考
- 多语言 monorepo 强制契约模式(
- 生态位:在 Keycloak(Java 重) 和 Authelia(仅网关)之间精准卡位,填补了「自托管 + 多协议 + 可编程」的空白
- 趋势判断:
- 隐私 + 数据本地 趋势持续利好(GDPR / 中国数据安全法 / 美国州隐私法)
- AI 基础设施需求 利好(CoreWeave 案例 —— AI infra 厂商用 2 周部署全套身份)
- CalVer + 月度 minor + 持续推进 节奏契合现代 CI/CD 文化,不存在「老版本僵化」风险
- 后发优势 vs Keycloak:更现代技术栈 + 更好 DX,胜在用户体验,输在生态广度
风险与不足
- 创始人 bus factor 偏高:BeryJu 占 40% 人工 commit,单人主导色彩明显;身份系统对维护者连续性极敏感 —— 正面信号是 5 个 GitHub Team 制度化分权已在进行
- 高频发版节奏下回归控制有压力:活跃回归 Issue #19552(仍开放)命中「安全核心 2FA 场景」,说明月度 minor 发版模式下稳定性挑战存在
- Python 3.14 only:
requires-python = "==3.14.*"兼容性窗口极窄,主流发行版尚未默认 3.14 - 多语言构建复杂度:Python+Go+Rust+TS 同时维护,新 contributor 上手陡;AGENTS.md 12.9KB(异常大)部分说明需要详细 AI 辅助
- open-core gate 不透明:enterprise 模块同仓,但 License 校验在运行时(
EnterprisePolicyAccessView.check_license),新人会误以为代码免费 - Flow 调试体验:flow plan 状态机靠 session + flow_token 反序列化,目前缺调试工具(
inspector.py仅 admin 用)
行动建议
-
如果你要用它:
- ✅ 数据本地刚需 + 多协议(OIDC/SAML/SCIM/LDAP) 的中小型企业首选
- ✅ homelab / 自托管爱好者的旗舰 IdP,与 Keycloak 并列首选
- ✅ 不想被 per-MAU 计费绑架 + 长期 TCO 敏感的团队
- ❌ 仅需单 Web 应用加 MFA → 用 Authelia(更轻)
- ❌ 大型企业合规白手套服务 → 用 Okta(更熟)
- ❌ Java 技术栈主导 → 用 Keycloak(更顺手)
-
如果你要学它(按推荐阅读顺序):
authentik/flows/stage.py+authentik/flows/planner.py—— 理解 Flow 状态机核心抽象authentik/blueprints/v1/—— 理解 Blueprint YAML + OCI 分发设计authentik/policies/process.py—— 理解 fork 子进程 + Pipe 通信 + Prometheus 直方图三件套authentik/core/api/schema.py+drf-spectacular配置 —— 理解多语言契约生成src/server/core.rs—— 理解 Rust 入口 + LazyLock 启动期不死cmd/server/server.go+internal/outpost/—— 理解 Go outpost 远程协调web/src/admin/—— 理解 Lit 3 + PatternFly 4 的现代 SPA 架构
-
如果你要 fork 它:
- 把 Flow/Stage/Marker 抽成独立库(
flow-engine),可用于审批、KYC、运维 Runbook - 把 Blueprint YAML + 自家 YAML Tag + OCI 分发抽成独立库,替代部分 Helm template 场景
- fork 子进程跑策略的模式可抽成「Trusted Admin Extension」库,Airflow 同款思路
- 把 Flow/Stage/Marker 抽成独立库(
知识入口
| 资源 | 链接 |
|---|---|
| DeepWiki | 未收录(可手动 https://deepwiki.com/goauthentik/authentik 触发) |
| Zread.ai | 未收录 |
| 关联论文 | 无(项目以工程实现为主,无学术产出) |
| 在线 Demo | 无(项目定位「自托管」,需自行部署;官方提供 docker-compose 一键启动) |
| 官方文档 | https://docs.goauthentik.io |
| 官网案例 | https://goauthentik.io(Cloudflare / CoreWeave / Anduril 等客户背书) |