我尝试创建一个基本的webauthn实现,使用"Web身份验证API“来使用用户的生物特征。
有一件事我没有在网上找到答案,那就是:为什么在默认情况下,我要得到一个格式设置为“packed”的认证,而不是 'fido-u2f‘?我做错什么了?
当用户请求注册时,我返回给他的“挑战”如下:
{
challenge: randomBase64URLBuffer(32),
rp: {
name: "Fido"
},
user: {
id: id,
name: username,
displayName: displayName
},
attestation: 'direct',
pubKeyCredParams: [
{ type: "public-key", alg: -7 },
{ type: "public-key", alg: -257 }
]
}然后,在格式化响应客户端之后,我将其作为navigator.credentials.create({ publicKey })传递给publicKey。
一旦它被发送回api以确认注册,我就用cbor.decodeAllSync(myAttestationBuffer)对它进行解码,但是我得到的只是一个fmt设置为packed的凭证响应。
我是这个问题的初学者,所以请随时纠正我:)有方法来指定我想要的认证格式吗?我可能遗漏了什么..。
谢谢你的帮助!
发布于 2022-06-10 17:25:29
认证格式由浏览器和身份验证器支持的内容决定--您不能请求特定的格式。
在编写本文时,Firefox101.0.1在与我的FIDO2 2兼容的Yubikey一起使用时会返回fido-u2f认证,因为它使用较旧的U2F协议进行通信。火狐在引擎盖下使用https://github.com/mozilla/authenticator-rs。同样的键返回具有Chrome102.0.5005.115的更新的packed认证格式。
https://stackoverflow.com/questions/72576580
复制相似问题