WebAuthn初探

WebAuthn,也就是Web Authentication的简称。通过这一新出炉的一组API,可以在网页使用用户的硬件设备进行公钥认证,例如指纹或者其他硬件秘钥设备(如Yubikey)。

这个东西今年三月份才进入标准,Chrome67+才支持,确实很新,几乎没有中文资料可以参考,于是这两天闲来无事给Eventing加了个利用WebAuthn登录的功能。

使用的后端语言是PHP(Laravel)。强烈推荐webauthn-framework这个库,文档很详细,只要注意一些问题。

文档很详细,里面写到 Public Key Credential Source Repository 这个东西需要自己实现,然而虽然给了 Interface 却没有给出每个方法具体要实现什么功能。

实际上这个东西就相当于把公钥内容持久化的一个东西,推荐参考
https://github.com/asbiin/laravel-webauthn/blob/e26999da8d3b18ecc96bcd7d331f91a94e8d0575/src/Services/Webauthn/CredentialRepository.php

这里的实现,你就秒懂了。

前端方面,如果想使用WebAuthn,首先有几个要求

  1. 必须是HTTPS连接
  2. 不能使用IP作为Host(Chrome不行,Firefox可以,按照标准应该是不允许的)

此外,Chrome的报错很弱智,在Console只会打印一个DOMException,要么手动捕获error打印error.message,要么换FireFox,错误信息会友好很多。

“WebAuthn初探”的一个回复

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注