<!-- title: 给应用装门禁：8个开源认证神器 -->

# 给应用装门禁：8个开源认证神器

## 本期发掘思路

每一个应用，无论炫不炫，最终都要回答同一个问题：你是谁？凭什么进来？这一期我们不挖新奇的玩具，专挖「门禁」——身份认证与授权这个所有软件都绕不开、 commercial 产品（Auth0、Clerk、Okta）按月收重税的地带。老牌王者 Keycloak 功能全但重得像一头大象，本期刻意绕开它，选了 8 个更锋利的替代品：从代码级框架、完整 IdP 平台、网关轻量方案到授权策略引擎，覆盖「门禁」的四个层级，其中半数都自带清晰的商业闭环。

> 数据说明：本期撰写环境未能联网实时核对，文中 Star 数一律用「量级」表述（万级≈1万以上，数千≈2000–9999），最近更新以「长期活跃」等定性描述代替，精确数字请以仓库页面为准。

---

## 1. Better Auth — 把认证写成一行 import

**仓库**： [better-auth/better-auth](https://github.com/better-auth/better-auth) | Star 量级：万级（TypeScript 圈近一年增速最快的认证库之一）| 状态：长期活跃

**一句话定位**：TypeScript 全栈开发者的「自带数据库」认证框架，专治 Auth0 的账单和 NextAuth 的配置地狱。

Better Auth 的切入点很毒：Clerk 好用但数据在别人手里，NextAuth 灵活但每接一个登录方式都要重读一遍文档。它选择中间路线——框架无关（Next.js、Nuxt、SvelteKit、SolidStart 通吃），但数据落在你自己的数据库里（Drizzle、Prisma、Kysely、MongoDB 都能接），核心只暴露一个 `auth` 实例。两步验证、Passkey、邮箱魔法链接、组织与成员管理、管理员后台，全部以官方插件形式即插即用，插件 API 是公开的，社区插件生态已经滚起来了。

最聪明的设计是数据库即真相源：会话、用户、组织全是普通表，你可以直接写 SQL 关联业务数据，不用钻 SDK 的黑盒。这对要做数据报表和风控的团队是决定性优势。

- **上手难度**：⭐⭐
- **适用人群**：全栈/独立开发者、正在被 Clerk 订阅费刺痛的 SaaS 团队
- **变现思路**：基于它做「认证模板 + 部署脚手架」出售；或开发付费官方插件（企业级 SAML、审计日志合规包），插件市场是现成的生意入口

## 2. Authentik — 自托管世界的 Okta

**仓库**： [goauthentik/authentik](https://github.com/goauthentik/authentik) | Star 量级：万级 | 状态：长期活跃，商业公司全职维护

**一句话定位**：开箱即用的完整身份平台——一个顶 Keycloak 七成功能、却轻好几个量级的自托管 IdP。

Authentik 的核心抽象是 Provider（OIDC / SAML / LDAP / RADIUS / 代理）和 Flow（可编排的登录流程）。前者意味着它不只给自己的 Web 应用发凭证：老系统只会说 LDAP？起一个 LDAP Provider 挂上去。某商业软件只认 SAML？点几下配置完事。后者意味着登录页的行为——要不要二次验证、哪些用户组跳过、失败几次锁定——全部可以在 Web 界面里用拖拽式策略编排出来，不用改代码。

杀手锏是 Forward Auth 模式：配合 Traefik、nginx、Caddy，给任何没有登录功能的老应用「外挂」一整套认证。内网那台裸奔了五年的打印机管理后台，五分钟就能套上门禁。商业公司出企业版，托管、支持、SCIM 都收费，社区版功能完整，这条路径已被验证。

- **上手难度**：⭐⭐⭐
- **适用人群**：自托管玩家、需要统一 SSO 的中小企业（50–500 人规模最舒服）
- **变现思路**：面向中小企业的「IdP 托管 + 迁移」服务；给集成商做交付模板，一次建模多次复用

## 3. Zitadel — 为多租户而生的 Auth0 平替

**仓库**： [zitadel/zitadel](https://github.com/zitadel/zitadel) | Star 量级：万级 | 状态：长期活跃

**一句话定位**：Go 写的云原生身份平台，把「多租户」做成了第一公民——做 B2B SaaS 的团队看一眼就会心动。

大多数开源 IdP 谈多租户都要靠命名约定和强拗的目录结构硬凑，Zitadel 从数据模型层面就把 Organization（组织）做成了顶层的隔离单元：每个客户组织有自己的用户、策略、品牌登录页和自定义域名。你的 SaaS 接入一百个企业客户，每个客户想用自己的 Logo、自己的密码策略、自己管理员，原生支持，不用写一行胶水代码。

工程底子也硬：Go 单二进制部署，资源占用克制；内置操作审计日志，出了安全事故能完整回放「谁在什么时候改了什么」；Actions 机制允许用 JavaScript 片段在认证流程里挂钩子做定制。官方同时提供云托管版，开源版与商业版功能边界清晰，属于「自用免费、做大付费」的典型。

- **上手难度**：⭐⭐⭐
- **适用人群**：做多租户 B2B SaaS 的团队、Auth0 账单焦虑症患者
- **变现思路**：直接以它为底座做行业 SaaS（白标登录页天然适合给客户贴牌）；或承接「Auth0 迁移到自托管」的工程服务

## 4. Authelia — 反向代理的最佳门童

**仓库**： [authelia/authelia](https://github.com/authelia/authelia) | Star 量级：万级 | 状态：长期活跃

**一句话定位**：一个 Go 单二进制的认证网关，让任何躲在反向代理后面的应用瞬间拥有 2FA。

Authelia 不想做完整的 IdP，它只想做好一件事：站在 Traefik / nginx / Caddy 后面，对每个请求做 forward-auth 验证。没有登录页的应用？它补登录页。应用分不清谁能进哪个路径？它的规则引擎可以按域名、路径、用户组、IP 网段精细放行——`/admin` 只许管理员组进，家里内网段免登录，外部访问强制二次验证，全在一个 YAML 里说清楚。

双因素支持 TOTP 和 WebAuthn 硬件密钥，会话可放 Redis 做集群。它自己不管用户目录，可以直接对接 LDAP（和本期第 8 位的 lldap 是社区公认的经典组合拳：lldap 管用户，Authelia 管验证），也可以用最简单的 YAML 文件起步。整个项目没有数据库依赖的包袱，备份就是备份一个目录。

- **上手难度**：⭐⭐⭐
- **适用人群**：homelab 玩家、给老系统加门禁的后端工程师
- **变现思路**：打包「NAS 全家桶安全模板」在应用商店分发引流；面向小微企业输出「内网零改造加固」方案

## 5. Pocket ID — 小而美①：五分钟上线的极简 SSO

**仓库**： [pocket-id/pocket-id](https://github.com/pocket-id/pocket-id) | Star 量级：数千（自托管社区口碑发酵极快）| 状态：活跃

**一句话定位**：只支持 Passkey 的 OIDC Provider，一个二进制 + SQLite，可能是世界上最省心的自托管 SSO。

homelab 玩家的经典困境：家里二十个自托管应用（Jellyfin、Grafana、Uptime Kuma……），每个都有独立账号，而 Authentik、Keycloak 对这个场景来说重得离谱。Pocket ID 的产品哲学是做减法做到极致——登录方式只有 Passkey（生物识别/硬件密钥），协议只说 OIDC，存储只用 SQLite，部署只有一个容器。没有 LDAP、没有 SAML、没有复杂 Flow，就意味着没有学习曲线：五分钟从拉镜像到给第一个应用接上「用指纹登录」。

它把「够用」两个字打磨到了工业级：Web 界面管理用户和 OIDC 客户端、一键生成应用接入配置、支持多管理员。在 r/selfhosted 社区被反复安利，是近年「小工具吃掉大平台边角市场」的标准样本——大平台做加法，它靠减法立足。

- **上手难度**：⭐
- **适用人群**：自托管玩家、想要极简内部 SSO 的小团队
- **变现思路**：以「家庭数字门禁盒」形态打包进 NAS 应用市场；或做成开箱即用的一体机镜像售卖

## 6. Ory Kratos — 拆开卖的认证发动机

**仓库**： [ory/kratos](https://github.com/ory/kratos) | Star 量级：万级（Ory 全家桶合计声势更大）| 状态：长期活跃

**一句话定位**：无头（headless）身份服务器——不给界面、不绑框架，把注册、登录、找回密码全部变成干净 API。

前面几个项目都自带登录页，Kratos 偏不。它把身份生命周期拆成一组 REST API：注册流、登录流、资料修改、邮箱验证、账号恢复、会话管理，每个 Flow 都返回结构化的 UI 节点，前端爱用什么渲染就用什么渲染——React 也好、Flutter 也好、小程序也好，认证体验完全由你的设计师说了算。社交登录（OIDC 联合登录）、WebAuthn、多因素全部内建。

这条路注定不如一体化方案亲民，但天花板高得多：当你的产品有 App、有小程序、有开放 API，任何「自带页面」的方案都会变成妥协，Kratos 这类 headless 组件才是正解。它背后是 Ory 全家桶：Hydra 管 OAuth2、Keto 管授权、Oathkeeper 管网关，官方提供商业云服务。适合把它当「认证中台」的地基。

- **上手难度**：⭐⭐⭐⭐
- **适用人群**：多端产品团队、要做统一账号体系的平台型公司
- **变现思路**：以 Kratos 为核心给客户搭「自研认证中台」；或封装成行业认证 SaaS（医疗、教育等有合规刚需的垂直领域）

## 7. OpenFGA — 把「谁能干什么」写成数学

**仓库**： [openfga/openfga](https://github.com/openfga/openfga) | Star 量级：万级边缘、数千级增长 | 状态：长期活跃，已进入 CNCF 沙箱孵化

**一句话定位**：源自 Google Zanzibar 论文的细粒度授权引擎，专治「权限系统写成了意大利面」。

前面七个解决「你是谁」（认证），OpenFGA 解决「你能干什么」（授权）——这是被绝大多数项目欠债最多的地方。传统 RBAC 在「文档所有者可以分享、分享对象可以转发、组织管理员可以撤销」这种关系嵌套面前土崩瓦解，最后 everyone 都在业务代码里写满 `if user.role == ...`。OpenFGA 用关系元组（tuple）+ 一门专用 DSL 来建模：授权关系变成可以查询的数据，`check(user:anne, viewer, doc:1)` 一次调用出结论，继承、传递、嵌套全部由引擎在图上推导。

它出身名门——Auth0（现 Okta）把自己的 FGA 引擎开源而成，Go 实现，横向可扩展，是少数经受过大规模生产检验的开源授权方案。审计能力是隐藏彩蛋：任何一次授权决策都能展开成完整的关系路径，给合规检查留了活口。

- **上手难度**：⭐⭐⭐⭐
- **适用人群**：被权限逻辑拖垮的中大型产品团队、做多租户平台的架构师
- **变现思路**：「权限建模咨询」是天然的高毛利生意——帮客户把业务权限翻译成 FGA 模型；或在其上封装行业权限中台

## 8. lldap — 小而美②：给老应用一个用户目录

**仓库**： [lldap/lldap](https://github.com/lldap/lldap) | Star 量级：数千 | 状态：活跃

**一句话定位**：Rust 写的轻量 LDAP 服务器，自带 Web 管理界面，是 homelab 认证拼图的最后一块。

大量软件至今只会一种语言：LDAP。Jellyfin、Gitea、Nextcloud、部分 NAS 和打印机都支持「LDAP 登录」，但正经 LDAP 服务器（OpenLDAP）的配置复杂度劝退了无数人。lldap 的思路是：把 LDAP 协议做薄，底下用 SQLite 存数据，上面挂一个现代 Web UI——建用户、拉分组、改密码全在浏览器里点两下完成，同时完整说 LDAP 方言，让那些老应用无缝接入。

它不追求成为 IdP：没有 SAML，OIDC 也只做有限支持，安心当一个「用户目录」。与 Authelia 组成社区经典搭档：lldap 管账号，Authelia 管验证和 2FA，反向代理管入口，三件套凑齐了整个内网门禁，内存占用低到树莓派都能跑。Rust 实现带来极小的攻击面和部署体积，单容器即起。

- **上手难度**：⭐⭐
- **适用人群**：homelab 玩家、需要给遗留软件补用户体系的运维
- **变现思路**：集成进私有化交付包出售——几乎所有「本地部署一套内网系统」的外包项目都需要它

---

## 横向对比

| 仓库 | 层级 | 语言 | Star 量级 | 上手难度 | 典型场景 |
|------|------|------|-----------|----------|----------|
| Better Auth | 代码框架 | TypeScript | 万级 | ⭐⭐ | TS 全栈 SaaS |
| Authentik | 完整平台 | Python/Go | 万级 | ⭐⭐⭐ | 中企业统一 SSO |
| Zitadel | 完整平台 | Go/Angular | 万级 | ⭐⭐⭐ | 多租户 B2B SaaS |
| Authelia | 网关门禁 | Go | 万级 | ⭐⭐⭐ | 反代后 2FA |
| Pocket ID | 网关轻量 | Go/SQLite | 数千 | ⭐ | homelab 极简 SSO |
| Ory Kratos | 无头组件 | Go | 万级 | ⭐⭐⭐⭐ | 多端账号中台 |
| OpenFGA | 授权引擎 | Go | 数千–万级 | ⭐⭐⭐⭐ | 细粒度权限 |
| lldap | 用户目录 | Rust | 数千 | ⭐⭐ | 遗留系统接 LDAP |

## 全景图

```mermaid
mindmap
  root((开源身份门禁))
    代码框架
      Better Auth
      Ory Kratos
    完整平台
      Authentik
      Zitadel
    轻量网关
      Authelia
      Pocket ID
      lldap
    授权引擎
      OpenFGA
```

## 本期之最

- **最值得立即尝试：Pocket ID** —— 五分钟、一个容器、指纹登录，回报/成本比高到不像话。任何自托管玩家今晚就能给它接上第一个应用。
- **最有商业潜力：Zitadel** —— 多租户是 B2B SaaS 的刚需底座，把「每个客户一套品牌登录页」产品化，直接对标 Auth0 的收费项，白标与迁移服务都是现成的生意。
- **最被低估：lldap** —— 它解决的老应用 LDAP 接入是个又脏又普遍的痛点，没有它，Authelia 们的门禁体系就是缺了一角的拼图。做私有化交付的团队早晚会在项目里遇见它。

## 参考来源

1. [better-auth/better-auth](https://github.com/better-auth/better-auth) — Better Auth 官方仓库，README 含框架支持与插件列表
2. [goauthentik/authentik](https://github.com/goauthentik/authentik) — Authentik 官方仓库，Provider 与 Flow 架构说明
3. [zitadel/zitadel](https://github.com/zitadel/zitadel) — Zitadel 官方仓库，多租户与 Actions 机制
4. [openfga/openfga](https://github.com/openfga/openfga) — OpenFGA 官方仓库，Zanzibar 模型与 DSL 文档
5. [pocket-id/pocket-id](https://github.com/pocket-id/pocket-id) — Pocket ID 官方仓库，Passkey-only 设计说明

> 再次提醒：本期所有 Star 数为量级估算、未联网实时核对，具体数字以各仓库页面当日显示为准。

> [!tip] 51学通信知识星球
> **星主：爱卫生**（微信：gprshome201101）——公众号「51学通信」创办者，19 年通信行业运维与讲师经验，著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书（各大电商平台有售）。
> **星球定位**：深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域，主打运维岗位与信令分析。
> **当前规模**：5200 篇主题 / 990 个回答，198 元/年。
> **加入福利**：加入星球后请加爱卫生微信，拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题，另有群内分享。
> **AI 加持**：51学通信知识星球已作为 skill 接入 WorkBuddy，使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例，做总结、找文档和 PPT 等场景全覆盖。

![51学通信知识星球海报-扫码加入](https://wiki.500nian.com/images/zhixingqiu_qrcode.png)
