news 2026/4/26 17:08:27

2026 年重启 BrowserID:开发者为定制应用打造 WKID 身份服务器

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
2026 年重启 BrowserID:开发者为定制应用打造 WKID 身份服务器

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 流程很相似:

  1. 网站显示“登录”按钮,启动 BrowserID 流程。
  2. BrowserID 提示用户输入电子邮件地址。根据该地址,用户会被引导至其身份提供商进行登录。
  3. 身份提供商向 BrowserID 对话框提供用户身份的加密签名断言,BrowserID 对话框对其进行签名并转发给原始网站。
  4. 网站接收经过验证的电子邮件地址,检查签名并创建会话。

如果你对 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)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/26 17:06:26

如何在5分钟内完成BepInEx插件框架的完整安装指南

如何在5分钟内完成BepInEx插件框架的完整安装指南 【免费下载链接】BepInEx Unity / XNA game patcher and plugin framework 项目地址: https://gitcode.com/GitHub_Trending/be/BepInEx BepInEx是一款功能强大的游戏插件框架,专为Unity Mono、IL2CPP和.NET…

作者头像 李华
网站建设 2026/4/26 16:59:43

USBCopyer:当U盘插入电脑时,文件自动备份的秘密武器

USBCopyer:当U盘插入电脑时,文件自动备份的秘密武器 【免费下载链接】USBCopyer 😉 用于在插上U盘后自动按需复制该U盘的文件。”备份&偷U盘文件的神器”(写作USBCopyer,读作USBCopier) 项目地址: ht…

作者头像 李华
网站建设 2026/4/26 16:58:38

Redis键失效时间怎么判断?键值生命周期怎么管理?

Redis 键失效时间主要通过过期字典(expires dict)进行判断,该字典保存了键的过期时间戳(毫秒级 Unix 时间戳)。当访问键时,Redis 会检查当前时间是否超过过期时间戳。键值生命周期管理通过设置过期时间命令…

作者头像 李华
网站建设 2026/4/26 16:57:10

TensorFlow Dataset API超流畅

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 TensorFlow Dataset API的高效流水线设计:实现数据处理的零瓶颈目录TensorFlow Dataset API的高效流水线设计&#x…

作者头像 李华
网站建设 2026/4/26 16:56:02

玄机靶场-Httpd(ssi-rce) WP

玄机靶场-Httpd(ssi-rce) WP 简单级渗透题,1个步骤,考察 Apache HTTP Server 在开启 SSI(Server-Side Includes)和 CGI 支持时,通过上传 .shtml 文件实现任意命令执行,读取 /flag 文件。 1. 漏洞背景与原理…

作者头像 李华
网站建设 2026/4/26 16:55:28

探索Fay:构建智能数字人Agent的优雅框架

探索Fay:构建智能数字人Agent的优雅框架 【免费下载链接】Fay fay是一个帮助数字人(2.5d、3d、移动、pc、网页)或大语言模型(openai兼容、deepseek)连通业务系统的agent框架。 项目地址: https://gitcode.com/GitHub…

作者头像 李华