2026 年重启 BrowserID
我正在构建 WKID(Wakamoleguy 的身份服务器),这是一个 [BrowserID](https://en.wikipedia.org/wiki/Mozilla_Persona) 风格的身份提供商(IdP),用于我为自己、朋友和家人开发的定制应用程序。下面来谈谈我为何要重拾这个已停用 10 年的协议。
大语言模型(LLMs)让开发者将想法转化为实用应用变得前所未有的容易。较低的入门门槛使得专为个人使用,或供少数亲朋好友使用的小型定制项目如雨后春笋般涌现。这类软件从定义上来说是自由的,因为用户即开发者,可以根据自己的意愿随意修改。我自己也参与过一些这样的项目,但用户管理一直是我头疼的问题。
即便一个应用是为满足我自己的需求而开发,我也常常想展示我正在做的东西(所以 [Tailnets](https://tailscale.com/docs/concepts/tailnet) 和 [forward-auth 网关](https://www.authelia.com/) 并不适用)。我不想为每个服务都重新开发用户管理功能,同时也不希望我那美国女孩玩偶鞋收藏伴侣应用依赖谷歌、Auth0 或其他可能会暂停我账户的公司的价值观。
事实证明,BrowserID 非常适合这种情况:
- 它基于电子邮件域名进行联合认证,而我可以控制自己的域名。这意味着在我的认证流程中无需他人参与。
- 它默认具有隐私性和抗审查性。身份提供商不会看到其用户登录的网站。
- 它使用电子邮件地址作为标识符,因此我无需单独收集电子邮件地址并将其映射到密码密钥、OIDC 标识符等。
- 对于依赖方来说,实现起来非常轻量级。无需像在 [Authentik](https://goauthentik.io/) 这样的集中式自托管服务器上那样,为每个应用在身份提供商处进行注册。
对于不熟悉的人来说,BrowserID 的流程与 OAuth 流程很相似:
- 网站显示“登录”按钮,启动 BrowserID 流程。
- BrowserID 提示用户输入电子邮件地址。根据该地址,用户会被引导至其身份提供商进行登录。
- 身份提供商向 BrowserID 对话框提供用户身份的加密签名断言,BrowserID 对话框对其进行签名并转发给原始网站。
- 网站接收经过验证的电子邮件地址,检查签名并创建会话。
如果你对 BrowserID 非常熟悉,可能会想知道 WKID 是否依赖第三方 cookie,而如今浏览器对第三方 cookie 的屏蔽越来越严格。为避免这个问题,我确实需要对规范进行一些调整,但我已经有了应对方案。
BrowserID 在 2016 年失败了,但 WKID 不会
Mozilla 在推广 BrowserID 时遇到了鸡和蛋的问题。除非有足够多的依赖方使用,否则身份提供商没有动力加入联盟;而依赖方在用户的身份提供商不支持的情况下,也不想使用它。Mozilla 试图通过托管 persona.org 作为备用身份提供商来解决这个问题,该提供商可以验证任何电子邮件地址,但最终仍未能获得足够的发展动力。我不会遇到这个问题,因为我改变了目标。
我并不想在全球身份提供商市场中获胜。WKID 本身就是为我自己使用而开发的定制应用。如果只有我自己的几个业余服务使用它,而且只供一个用户使用,那也算是成功。如果其他人觉得它有用并将其用于他们的项目,我们还能额外实现联合认证。出于这个原因,并且由于实际发送电子邮件会带来一系列问题(如可送达性、滥用、声誉等),我根本不打算提供备用身份提供商功能!
这意味着,除非用户的电子邮件域名提供商支持 WKID,否则他们将无法使用我的应用。而且像 gmail.com、outlook.com、yahoo.com、icloud.com 等大型提供商永远不会支持。对于任何企业来说,这都是不切实际的假设,但请记住,这些都是定制应用。我的用户是我和我的家人,我们使用的是我域名下的电子邮件。
WKID 当前的进展
WKID 仍在开发中,还不适合分享。端到端的流程已经可以正常运行并经过测试,但还需要进行一些样式优化、文档清理和简化自托管说明。
我从事这项工作的主要优势在于,自从事依赖电子邮件、XMPP 和 SIP 地址(均遵循 user@domain 格式)的统一通信应用开发以来,我就对 BrowserID 情有独钟,此外我还有一二十年构建 Web SaaS 的经验。
如果你在身份验证服务方面有经验并能提供建议,或者想在自己的项目中试用 WKID,请 @ 我。
干杯!
在 [Twitter](https://twitter.com/share?url=https://www.wakamoleguy.com/p/reviving-browserid-in-2026&text=Reviving%20BrowserID%20in%202026&via=wakamoleguy) 或 [Mastodon](https://toot.kytta.dev/?text=Reviving%20BrowserID%20in%202026%20https://www.wakamoleguy.com/p/reviving-browserid-in-2026) 上分享本文。
关于我
大家好,我叫 Will Mitchell,是一名软件工程师和工程经理,早在我还不能开车的时候就开始从事 Web 开发。我曾在从种子轮初创公司到 Dropbox 和 Asana 等各种规模的公司发布过软件。我住在新泽西州,在网上的昵称是 wakamoleguy。
找到 /wakamoleguy
[GitHub](//github.com/wakamoleguy)[Twitter](//twitter.com/wakamoleguy)[Mastodon](//mastodon.social/@wakamoleguy)[RSS](/feed.xml)