出于安全考虑,去年开发了一个 OTP 多因素认证插件,后面就一直想着开发通行密钥插件,这样就不需要输入密码了,点两下就能登录进来,于是就花了两个小时使用 GPT-5.3-Codx 写了这个插件,不得不说 AI 还是太好用了。
功能
- 支持多用户的 PassKey 插件(通行密钥、WebAuthn 说的都是它),
- 支持 Typecho 1.2.0 + 的版本。
- 支持自定义通行密钥名称
- 一个用户支持创建多个通行密钥
使用
- 安装插件后,去个人设置页面绑定一个通行密钥
![69ad3d80e7691.jpg 69ad3d80e7691.jpg]()
- 通行密钥绑定后 就可以在登录时使用
![69ad3dd1c9cb3.jpg 69ad3dd1c9cb3.jpg]()
下载
去 CNB 下载这个插件
https://cnb.cool/dbkuaizi/typecho/passkey/-/releases
或者直接下载代码仓库:
https://cnb.cool/dbkuaizi/typecho/passkey
注意:releases 发布版本 中的 zip 包已经包含 PassKey 插件目录,如果是直接下载的代码仓库,需要自行创建 usr/plugins/PassKey 目录


那个,建议你问一下其他 AI 就是,插件是否完整实现了 Webauthn 的后端验证以及 challenge 验证。这个相当于把公钥当密码了,只是验证你传输给服务器的公钥是否和数据库的公钥一致,没有用 Openssl 这些就行验证。
插件在登录阶段,有后端 challenge + OpenSSL 验签,不是简单的公钥对比(可参考 Action.php 文件中的 `verifyAssertionSignature` 函数)。
但在个人设置页的绑定阶段,后端并没有完整实现 WebAuthn 的注册校验流程,这是基于 “已登录的会话是可信的” 这一前提做的取舍。
总的来说:登录是的验证链路是完整的,绑定时的流程确实是有一些缺陷,但登录时的安全性还是有保障的。