首页 > 解决方案 > 无服务器指纹身份验证

问题描述

在 Android 之类的东西中,可以简单地检查是否有有效的指纹扫描,并根据是否发生匹配来确定能力。据我通过 webauthn 可以看出,看起来任何指纹扫描都需要服务器。真的吗?除非发生操作系统认为有效的指纹扫描,否则有没有办法简单地拥有一行不会执行的代码?

我不需要存储凭据,我只想在指纹扫描有效时触发 AJAX 请求,就像“是的,我确定我想这样做,并且操作系统说我已登录”用户”——即使它只是一个客户端检查。在这种情况下,我可以接受。

标签: javascriptwebauthn

解决方案


因此,首先让我们将在 FIDO2/Webauthn 中执行的两个不同操作分开。

  1. 用户验证 - 是验证用户真实性的操作。真的是Richie还是其他人?这是“生物识别”发生的地方,但它可能是例如密码。指纹生物识别技术只是用户验证方法之一。用户验证由设备在设备上进行。服务器永远不会也永远不会收到任何用户验证信息,因为这将严重侵犯隐私和安全。

  2. 身份验证 - 是证明您的真实性的行为。在 FIDO2/Webauthn 的情况下,这是通过对挑战执行加密签名来完成的。

正在对某人进行身份验证。与您前往银行并通过向银行出示您的护照向银行验证自己的方式相同,与您前往 FIDO 服务器并使用您的设备对其进行身份验证的方式完全相同。

您无法在没有 FIDO 服务器的情况下进行身份验证,原因与您无法向银行验证自己的身份相同,并且未经银行批准即可获得 100,000 美元的贷款。

从更深入的技术来看:FIDO 认证者有一个私钥,而服务器有一个公钥和一个凭证 id。服务器生成一个随机的每个会话质询,并且设备的相应签名包含该质询。服务器保证挑战没有被修改,因为服务器会做这些事情。如果您尝试实现客户端(浏览器)端验证,那就像在浏览器端实现密码验证一样,根本不安全。

如果您在实现方面遇到困难,我建议您选择许多现有的开源服务器之一:https ://github.com/herrjemand/awesome-webauthn ,或者这里有一篇关于如何验证断言的好文章https:/ /medium.com/webauthnworks/verifying-fido2-responses-4691288c8770(PS你不需要证明)


推荐阅读