将多个公钥与 webauthn 用户关联

Tob*_*bbe 4 webauthn

我正在实施 webauthn 作为概念验证。

我希望我的用户能够使用多个不同的“平台”身份验证器登录。例如,桌面计算机上的 Windows Hello 和 iPhone 上的 Face ID。每个身份验证器都有自己的公钥,将其发送到 RP,并将其存储在数据库中。

当用户登录(调用navigator.credentials.get())时,我如何知道服务器(RP)上要使用什么公钥?或者我应该全部尝试一下?

根据https://www.w3.org/TR/webauthn/#usecase-new-device-registration ,单个用户拥有多个设备似乎是受支持的方案,所以我猜测有某种官方或最佳方案- 实践实现这一点的方法。

那么,如果用户有多个与之关联的公钥,我如何知道在验证登录/断言签名时使用哪一个呢?

Nin*_*gno 7

当用户登录(调用 navigator.credentials.get())时,我如何知道服务器(RP)上要使用什么公钥?或者我应该全部尝试一下?

你说得对,你应该同时尝试所有这些。这就是为什么allowCredentials是一个列表,你可以包含多个ID。响应会告诉您选择了哪一个。