Jetpack Compose安卓Passkeys PoC中rpId验证失败求助
Android Jetpack Compose Passkeys PoC: rpId验证失败问题
我正在用Jetpack Compose开发Android应用的Passkeys概念验证(PoC),已经完成了应用与Web认证所需的数字资产链接(assetlinks.json)配置及域名验证步骤,但在尝试使用Passkeys时遇到了rpId验证失败的错误。具体场景是通过浏览器创建Passkey后,在原生应用中无法调用它。
已完成的配置与验证操作
- 执行
adb shell pm get-app-links my.package.example验证域名关联状态,返回结果:
my.package.example: ID: 09699a58-4970-4dd8-8f30-323c5c792297 Signatures: [CF:BF:CC:4C:AF:28:CF:82:35:F9:9D:D0:F5:C6:14:1A:AC:CF:E9:50:AA:12:25:80:E5:1D:BD:60:1E:04:21:53] Domain verification state: my.domain.com: 1024
- 部署了
/.well-known/assetlinks.json文件,内容如下:
[ { "relation": [ "delegate_permission/common.get_login_creds", "delegate_permission/common.handle_all_urls" ], "target": { "namespace": "android_app", "package_name": "my.package.example", "sha256_cert_fingerprints": [ "CF:BF:CC:4C:AF:28:CF:82:35:F9:9D:D0:F5:C6:14:1A:AC:CF:E9:50:AA:12:25:80:E5:1D:BD:60:1E:04:21:53" ] } }, { "relation": [ "delegate_permission/common.handle_all_urls", "delegate_permission/common.get_login_creds" ], "target": { "namespace": "web", "site": "https://my.domain.com" } } ]
- AndroidManifest.xml中配置了带
android:autoVerify="true"的intent-filter:
<intent-filter android:autoVerify="true"> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="https" /> <data android:host="my.domain.com" /> </intent-filter>
- 字符串资源中正确配置了资产声明:
<string name="asset_statements" translatable="false"> [{"include": "https://my.domain.com/.well-known/assetlinks.json"}] </string>
- Passkeys认证请求中已明确传入rpId参数:
val requestJson = JSONObject().apply { put("challenge", authorizationResponse.metadata.challenge) put("rpId", "my.domain.com") put("allowCredentials", JSONArray()) put("timeout", 18000) put("userVerification", "required") }
当前遇到的问题
尽管完成了所有上述配置,仍然收到错误提示:rpId validation failed,且pm get-app-links命令返回的域名验证状态为my.domain.com: 1024,始终无法完成验证。
内容的提问来源于stack exchange,提问作者Nicolas Osorio
相关产品推荐
相关产品推荐

