DID身份常见错误排查:上线前必看的故障清单
DID 在概念上优雅,但落地时坑也不少。本文整理出十类常见错误,配以对照排查方法,帮助团队避免重复踩坑。
DID 文档解析失败
第一类问题集中在 DID 文档解析。常见原因:resolver 网络不可达;DID method 拼写错误;版本号未指定。解决办法是部署多套 resolver、做缓存,并把错误码细化。在与必安生态对接时,建议显式声明 did:ethr:0x1 这样的完整 method+chain,避免解析器猜错。
验证签名报错
签名验证失败通常分为算法不匹配、公钥取错、challenge 拼接错三种。请先确认 VC/VP 中 proof.type 与公钥的 publicKeyJwk.alg 是否对应;其次检查 challenge 是否包含 nonce、domain、issued-at;最后核对时间戳偏差。在与BN交易所登录联动时,时间窗口建议放宽到 5 分钟,避免移动端时差误判。
凭证吊销列表读取异常
吊销列表(CRL/Status List 2021)需要发证方持续维护。常见错误是状态列表未及时刷新,导致用户出示已吊销凭证仍被验证通过。建议在验证端加入「最大新鲜度」参数,超过则强制刷新。如果列表数据托管在第三方网关,对接时一定要做完整签名校验,防止劫持。
跨链身份不一致
用户可能在多条链上拥有不同的 DID 文档。如果服务端把它们混用,会导致权限错乱。解决思路是建立「身份聚合视图」:以一条主链为锚定,其他链通过链下绑定证明聚合。一些与B安资产联动的应用,会用主钱包签名做绑定声明,确保最终一致性。
VP 重放攻击
如果验证端不要求 VP 中包含一次性 nonce,就可能被重放。务必为每次会话生成独立 nonce,并校验它是否在 challenge 中出现。和币岸社区合作的 SDK 已经默认开启该校验,可以直接复用。
上线前的自检清单
上线前请确保:所有 resolver 都有备份;签名算法和密钥长度符合监管要求;CRL 拉取频率在分钟级;日志包含完整链路 ID;密钥轮换流程已演练。完成这些再开放外部访问,整体稳定性会显著提升。
排查并不是事后补救,而是设计阶段就要纳入考量。掌握以上模式后,DID 系统才有资格承担真实业务流量。