Clerk、Auth0、NextAuth 对比:独立开发者该选哪个?
上周二,一个创始人在我们的 Slack 里说,他花了 11 天给 Google、GitHub 和 Magic Link 写 OAuth 流程。11 天。这 11 天他没写功能、没跟用户聊、没发布任何东西。他用的是 Auth0。
一个残酷的事实:认证是基础设施,不是创新。 你在登录页上花的每一个小时,都是从用户真正在意的产品上偷来的时间。选错了,你要么为用不上的功能多付钱,要么省了钱但凌晨两点还在维护 auth 代码。
过去四年里,我为 12 个 SaaS 产品交付过生产环境的认证系统。其中 3 个用 Clerk,4 个用 Auth0,5 个用 NextAuth(现 Auth.js)。以下是独立开发者在三者之间做选择时,真正需要考虑的因素。
什么是 SaaS 认证?
认证是验证用户身份(「你是谁」)并管理会话的系统。对 SaaS 产品来说,这意味着注册流程、登录页面、密码重置、社交登录(Google、GitHub 等),以及多因素认证(MFA)。
定义: Auth 提供商 = 帮你管理用户身份的服务,省去你从零构建的麻烦。
目前市场主要有三类选择。托管服务(Clerk 和 Auth0)由第三方运行基础设施。库(NextAuth)在你自己的代码里运行。权衡很明显:托管 = 少控制、快交付;库 = 多控制、多责任。
快速对比:Clerk vs Auth0 vs NextAuth
| 维度 | Clerk | Auth0 | NextAuth (Auth.js) |
|---|---|---|---|
| 类型 | 托管服务 | 托管服务 | 自托管库 |
| 免费额度 | 10,000 MAU | 7,500 次登录/月 | 无限制 |
| 付费起步价 | $25/月 | $35/月 | $0(仅服务器成本) |
| 典型搭建时间 | 30-60 分钟 | 2-4 小时 | 4-8 小时 |
| 社交登录 | 免费版全含 | 免费版全含 | 需逐个配置 |
| MFA 支持 | 内置,免费 | 内置,付费附加 | 需 DIY 或第三方插件 |
| 最适合 | 最快上线 | 企业级合规 | 完全控制、零成本 |
| 框架支持 | Next.js、React、Expo | 任意(REST API) | 任意(限 JS/TS) |
Clerk:最快上线的路径
Clerk 专为 Next.js 和 React 应用设计。你拿到一个预构建的 <SignIn /> 组件,放进去,五分钟就有了登录页。不是夸张——我计时过。
Clerk 做得好的地方: - 预构建 UI 组件(登录、注册、用户资料、组织管理) - 会话管理全自动 - Webhook 支持用户事件(订阅变更、角色更新) - MFA 所有版本免费包含 - 开箱即用的组织和团队管理
Clerk 的短板: - 锁定效应真实存在。迁移意味着重写整个 auth 层。 - 超过 10,000 MAU 后,价格爬升很快。5 万用户的 SaaS 大约付 $250/月。 - 限于 JavaScript/TypeScript 生态。不支持 Python、Go 或 Rust。
我之前交付的一个项目用 Clerk + Next.js + Stripe。三个 sprint 就把付费功能串起来了。认证本身花了半天。
Auth0:你现在不需要的企业级选择
Auth0 是企业认证的行业标准。支持所有协议(OIDC、SAML、WS-Federation),所有语言,所有部署模式。如果你的 B2B 产品需要对接大厂的 SSO,Auth0 是正解。
Auth0 做得好的地方: - 协议覆盖全面:OIDC、SAML、WS-Federation、LDAP - 65+ 预建集成(社交和企业连接器) - 高级安全功能:泄露密码检测、机器人检测、攻击防护 - SOC 2 Type II 和 HIPAA 合规内置
Auth0 的短板: - 对 90% 的独立开发者来说是杀鸡用牛刀。你在为用不上的功能买单。 - 免费版上限是每月 7,500 次「登录」——注意是登录次数,不是 MAU。一个活跃用户产生 10 次登录就吃掉 10 次额度。这个限制消失得很快。 - Dashboard 复杂度不低。我见过非技术联创在规则、Actions 和 Hooks 里迷路。 - Auth0 2024 年 10 月的定价调整把基础付费版推到 $35/月,「机器对机器」定价也让不少团队吃了一惊。
一个真实的例子: Auth0 的泄露密码检测会对照 haveibeenpwned.com 上超过 10 亿条泄露密码来验证凭据。这确实有用——但前提是你有足够的用户量来支撑成本。
NextAuth(Auth.js):免费、强大,责任全是你的
NextAuth 是开源的,永久免费,运行在你自己的应用里。现在已更名为 Auth.js,支持范围从 Next.js 扩展到了 SvelteKit、Astro 和 Express。
NextAuth 做得好的地方: - 零授权费。你只付自己的服务器成本。 - 完全的数据所有权。用户记录存在你自己的数据库里。 - 80+ 个 OAuth 提供商,通过社区 adapter 支持 - 高度可定制:自定义页面、回调、会话逻辑
NextAuth 的短板:
- 没有预构建 UI。每个页面都要自己写。
- MFA 需要 DIY。你需要 otplib 之类的库自己接。
- 安全是你的责任。Callback URL 配错或 Secret 泄露,后果自负。
- 凌晨三点出问题,没有客服热线。只有你和 GitHub Issues。
这是一个基础的 NextAuth GitHub OAuth 配置:
import NextAuth from "next-auth"
import GitHub from "next-auth/providers/github"
export const { handlers, signIn, signOut, auth } = NextAuth({
providers: [GitHub],
callbacks: {
authorized({ auth }) {
return !!auth?.user
}
}
})
代码简洁。但加上社交提供方、角色检查和会话持久化,复杂度会成倍增长。
独立开发者排名:我的个人判断
1. Clerk——综合最优。 30 分钟搭建、预构建组件、内置 MFA,这是通往生产就绪认证系统的最快路径。免费版覆盖前 10,000 个 MAU。如果你在做 B2C SaaS,快速上线比省 $25/月更重要,从这里开始。
2. NextAuth——适合讨厌厂商锁定的技术型创始人。 如果你能写代码、想完全控制数据和成本,NextAuth 在 $0 价位上无敌。代价是时间:多预留 2-3 天来搭建、写自定义 UI 和接 MFA。
3. Auth0——适合有企业客户的产品。 如果你的买家是 IT 部门,要求 SAML SSO 和 SOC 2 合规,Auth0 是安全牌。对其他人来说,这是在本田思域里装劳斯莱斯引擎。
真正重要的安全考量
无论你选哪个,生产环境里有两件事不可商量:
- 全量加密。 静态数据 AES-256,传输 TLS 1.3。这是基线,不是高级功能。
- 不存不需要的东西。 密码、Token 和个人信息应该最小化。因为多记了几个字段导致 5 万条用户记录泄露,那是在等一场官司。
我们的团队在 Trove Deck Solution 为客户交付 SaaS 时,从第一天起就把认证写进架构,客户数据严格保密——不卖、不共享、不多存。这不是卖点,这是标准。
下一步怎么走
根据你的真实约束来选,别跟着愿景跑。如果你还没收入、正在发 MVP,Clerk 几天就能上线。如果你是技术型、对成本敏感,NextAuth 给你控制权。如果你在卖给企业客户,Auth0 是稳当的选择。
但如果你卡住了——如果你对着 auth 文档看了一周还没发布——也许你需要一个已经做过十二次的团队。在 Trove Deck Solution,我们从第一天就把认证写进定制 SaaS 的架构。来聊聊你的想法。