我希望用户通过使用私钥签署挑战来登录我的网站。显然,我不希望我的网站自己管理私钥。 WebAuthn 似乎是我正在寻找的,但是在我见过的基本上每个实现中,由于某种原因它都需要物理密钥(没有软件身份验证选项)。让用户弄乱浏览器标志来启用软件密钥是不可能的。
我知道以太坊钱包(例如Metamask)支持这样的签名。私钥由钱包管理,因此您只需使用钱包的 API 向其发送可以签名的质询。这里唯一的问题是(1)用户必须安装此浏览器扩展才能访问该网站,并且(2)该网站与以太坊(或任何加密货币)无关,因此看起来很奇怪(并且让用户感到困惑)让他们下载与以太坊相关的浏览器扩展。我正在寻找类似于 Metamask 的东西,除了仅签名而不与加密货币相关,并且具有标准化的开源 API。
WebAuthn 不需要物理外部验证器(尽管可以使用它们)。当今推出的每台主流设备都有一个内置的 WebAuthn 身份验证器,可以创建密钥,并且每个主要浏览器都支持 WebAuthn API。
https://passkeys.dev可能是有用的资源。