我目前正在使用window.u2f API在我的网站上实现U2F双因素身份验证。它们在火狐中是原生可用的(当about:config标志被启用时),并通过Chromium与u2f-api.js库一起使用。
我的实现在密钥设置期间使用window.u2f.register(...),在登录时使用window.u2f.sign(...)。
我读到新的Web Authentication API是向后兼容的,也支持FIDO U2F,然而,我找不到任何关于如何实现它的信息。所有的示例似乎只是演示FIDO2无密码登录,这不是我想要做的。
如何使用网络身份验证API实现具有等效window.u2f.register和window.u2f.sign函数的FIDO U2F?
发布于 2018-12-28 07:41:45
问得好。在Yubico's Github Account中可以找到一些令人难以置信的U2F实现示例。更具体地说,如果你想要一个在客户端使用javascript注册密钥并对其进行身份验证的工作示例,请使用Flask API在后端实现加密,该示例为is located here。它同时支持FIDO2和传统的U2F。此外,如果您想要一个人一步一步地演示该实现如何工作的视频,that is located here.我希望这对您有所帮助:)
发布于 2019-05-27 20:19:42
要为您突出显示的内容
CBORCTAP1/U2F验证器返回命令错误或
响应格式不正确。对于任何故障,平台可能会回退到CTAP1/U2F协议。
如果验证器不支持FIDO2,验证器将返回错误码,然后WebAuthn将通过U2F原始消息与验证器通信。
你可以像你所读到的那样来实现WebAuthn。Web Authentication API
您可以将this用于您的实现
发布于 2020-05-27 18:10:13
@kspearrin,这是我得到的解决方案。
我有使用U2F (u2f-api.js)注册的用户。迁移到WebAuthn实际上很简单。所有新注册都将使用WebAuthn,所有验证都将使用带有扩展参数的WebAuthn。
U2F
Registration - window.u2f.register
Verification - window.u2f.signWebAuthn
Registration - navigator.credentials.create
Verification - navigator.credentials.getU2F注册用户的兼容性
使用navigator.credentials.get()时,请确保将extensions.appid设置为U2F appId参数。在我的例子中,我使用了origins.json URL。
https://developer.mozilla.org/en-US/docs/Web/API/PublicKeyCredentialRequestOptions/extensions
最后,您需要在客户端和服务器端实现WebAuthn函数。根据您的平台,有许多可用的库。来自WebAuthn的响应包含ArrayBuffer格式的数据。我需要弄清楚的唯一一件事就是在客户端和服务器之间正确地传输ArrayBuffer数据。我必须将它们转换为base64,然后才能将其发布到服务器上并返回。基本上,您必须调整数据格式才能使其正常工作。
https://stackoverflow.com/questions/53640407
复制相似问题