You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android端FIDO2实现遇CredentialManager请求验证失败求助

Android FIDO2注册报错:The incoming request cannot be validated 排查方案

核心排查步骤

1. 核对依赖方ID与域名匹配度

  • 确保FIDO2注册请求里的**依赖方ID(relying party ID)**和ngrok分配的顶级域名完全一致,比如ngrok域名是xxxx.ngrok.io,依赖方ID就必须是xxxx.ngrok.io,不能加http/https前缀,也不能带任何路径。
  • 访问https://xxxx.ngrok.io/.well-known/assetlinks.json,确认返回的JSON中:
    • target.namespace值为android_app
    • target.package_name和测试应用的包名完全一致
    • target.sha256_cert_fingerprints是当前签名证书的指纹(别搞混debug和release证书)

2. 检查注册请求参数合法性

  • challenge必须是无填充的base64 URL编码随机字节,不能用普通base64或明文。
  • user.name、user.displayName等字段不能为空或包含非法特殊字符。
  • pubKeyCredParams要包含Android支持的算法,比如-7(ES256)、-257(RS256),避免使用小众算法。

3. 重新验证asset_statements配置

官方说仅用passkey无需配置,但如果是跨平台场景(同时支持Web和Android),可能还是需要添加。按以下步骤重新配置:
在AndroidManifest.xml中添加:

<meta-data
    android:name="asset_statements"
    android:resource="@string/asset_statements" />

在res/values/strings.xml中添加:

<string name="asset_statements" translatable="false">
    [{
        \"include\": \"https://xxxx.ngrok.io/.well-known/assetlinks.json\"
    }]
</string>

注意转义双引号,配置完成后重新打包安装应用(不要热更新)。

4. 确认证书签名一致性

  • 如果用debug证书测试,用命令keytool -list -v -keystore ~/.android/debug.keystore(默认密码android)获取指纹,确保和assetlinks里的sha256_cert_fingerprints完全一致。
  • 避免使用临时签名或自定义debug keystore,保证测试用签名与配置匹配。

5. 处理ngrok临时域名变动

ngrok重启后域名会变更,每次重启后需:

  • 更新FIDO2请求中的依赖方ID
  • 同步更新assetlinks.json的相关配置
  • 若修改了asset_statements,重新安装应用

内容的提问来源于stack exchange,提问作者lgdroid57

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 23:01:15