前端知库

W3C WebAuthn 规范

W3C 制定的 Web Authentication 规范,定义浏览器、公钥凭证和认证器之间的注册与认证接口。

WebAuthn 规范定义了网页如何通过 navigator.credentials.create() 和 navigator.credentials.get() 使用公钥凭证。它说明了 RP ID、origin、challenge、用户验证、注册响应和认证响应等协议字段,适合在实现 Passkey、审查认证流程或排查浏览器与认证器差异时作为权威依据。

规范只定义浏览器与认证器接口及验证所需的协议数据,不提供完整的账号系统、会话管理、恢复流程或服务端数据库。实际项目仍需要服务端生成不可预测且一次性的 challenge,验证 origin、RP ID、签名和计数器,并建立自己的登录会话、撤销和恢复策略。不能把前端 API 调用成功当作用户已经被业务系统授权。

阅读规范时应结合目标浏览器、操作系统和认证器测试。平台凭证、跨设备同步凭证、硬件安全钥匙和用户验证方式可能不同;规范中的可选能力不代表每个环境都支持。二进制字段的编码、扩展和错误处理应优先使用经过维护的实现库,避免手写不完整的 CBOR、签名和凭证解析逻辑。

计数器不能简单写成“每次必须递增,否则拒绝登录”。部分认证器不实现签名计数器并持续返回 0,计数异常也需要结合凭证特征与规范的风险处理流程判断,不能直接证明凭证被克隆。具体实现应遵循规范的认证响应验证步骤和所用服务端库策略。

该规范和 W3C 仓库公开维护,可免费阅读;它不提供商业身份服务、托管账号、技术支持或认证审核。正式上线前应在 HTTPS、真实设备、跨设备恢复和拒绝授权场景下测试。WebAuthn 不会把用户指纹或面容原始数据返回给依赖方网站,网站获得的是认证结果和协议数据;不要把“前端需要避免记录生物数据”写成网页本来能读取它们。凭证标识、用户句柄和认证日志仍需按隐私要求保护。