WebAuthn/Passkey凭证解析器

解析 WebAuthn(Passkey)注册(create)或登录(get)返回的凭证 JSON,解码 clientDataJSON、按 W3C 规范逐字节解析 authenticatorData(flags/signCount/公钥),辅助调试无密码登录集成。

免费在线工具
Loading…

使用说明

粘贴 navigator.credentials.create()(注册)或 navigator.credentials.get()(登录)返回结果序列化后的 JSON(需包含 base64url 编码的 clientDataJSON,以及 attestationObjectauthenticatorData),点击“解析”。

解析结果包括:clientDataJSON(解码后的 type/challenge/origin/crossOrigin);authenticatorData 按 offset 逐字段解析——rpIdHash(32字节)、flags(1字节,展示 UP/RFU1/UV/BE/BS/RFU2/AT/ED 共8个标志位及其含义)、signCount(4字节计数器);如果是注册流程(attestationObject存在)还会解析出 attestedCredentialData 里的 aaguid、credentialId 和 credentialPublicKey(COSE_Key 格式,展示 kty/alg/crv/x/y 或 RSA 的 n/e);如果是登录流程还会展示 signature 和 userHandle(UTF-8解码)。点击“加载注册示例(create)”或“加载登录示例(get)”可以查看两种典型场景的解析效果。

功能介绍

WebAuthn 是 W3C 制定的无密码身份认证标准,Passkey 是其典型应用场景。前端调用 navigator.credentials.create()/get() 得到的凭证对象里,authenticatorData 是一段紧凑的二进制数据,包含了认证器返回的关键信息,直接调试时不易读懂其内部结构。

本工具按 W3C WebAuthn 规范里 authenticatorData 的准确字节布局解析:rpIdHash 位于偏移0长度32字节,flags 位于偏移32长度1字节(8个标志位:bit0 UP用户在场、bit2 UV用户验证、bit3 BE可备份、bit4 BS已备份、bit6 AT含证明凭证数据、bit7 ED含扩展数据,bit1/bit5为保留位),signCount 位于偏移33长度4字节(大端序)。若 AT 标志位为1,会继续解析 attestedCredentialData(aaguid 16字节 + credentialIdLength 2字节 + credentialId + CBOR编码的COSE_Key公钥),内置了一个精简的CBOR解码器专门用于解析COSE_Key结构。

所有解析都在浏览器本地完成,粘贴的凭证数据不会上传。公钥、签名等内容本身不敏感可以安全展示,但请勿粘贴涉及真实用户隐私的完整生产环境凭证数据到不受信任的工具中。

使用场景

调试Passkey/WebAuthn注册登录流程
在前后端联调无密码登录功能时,把浏览器返回的凭证JSON粘贴进来,直观查看clientData的challenge/origin是否符合预期,flags标志位是否正确。
排查WebAuthn认证失败问题
当服务端校验WebAuthn凭证失败时,先用本工具解析出的字段(如origin、signCount、AT/UV标志位)辅助判断是格式问题还是业务逻辑问题。
学习WebAuthn/CBOR/COSE二进制格式
通过实际解析注册和登录两种示例数据,直观理解authenticatorData的字节布局、CBOR编码的attestationObject结构、COSE_Key公钥格式。
验证认证器返回的能力标志位
查看BE(可备份)/BS(已备份)标志位判断该Passkey是否是可跨设备同步的凭证(如iCloud钥匙串/Google密码管理器同步的Passkey)。

常见问题

这个工具支持哪些格式的输入?
支持完整的 credential 响应对象JSON,顶层需要有 id/type 字段,response 里需要有 clientDataJSON,再加上 attestationObject(注册场景)或 authenticatorData(登录场景)。这些字段通常是浏览器 WebAuthn API 返回的 ArrayBuffer 经过 base64url 编码后的字符串形式,常见于后端调试日志或抓包数据。
flags 里的 RFU1/RFU2 是什么意思?
RFU 是 Reserved for Future Use(保留供未来使用)的缩写,是 W3C WebAuthn 规范里 flags 字节的 bit1 和 bit5,目前没有定义具体含义,本工具按规范原样展示这两位的当前取值但不做特殊解读。
为什么有的解析结果没有 attestedCredentialData?
只有当 flags 的 AT(bit6)标志位为1时,authenticatorData 才会包含 attestedCredentialData 区块。这通常只出现在注册(create)阶段的首次响应中;登录(get)阶段返回的 authenticatorData 一般不包含这部分数据,因为设备已经注册过,不需要再次下发凭证信息。
解析出的公钥可以直接用来验证签名吗?
本工具只做展示解析,把COSE_Key格式的公钥转换为可读的kty/alg/crv/x/y(或RSA的n/e)十六进制字符串,不提供签名验证功能。如果需要验证signature字段对authenticatorData+clientDataHash的签名,需要用对应的密码学库(如Web Crypto API的verify方法)结合解析出的公钥自行实现。