1

我正在尝试使用 Android PoC 应用程序测试我的 Galaxy S6 设备的 FIDO ( https://fidoalliance.org ) 功能。到目前为止,我已经设法使用 DISCOVER Intent 检索可用的 FIDO 身份验证器,并成功返回了指纹身份验证器。

但是,当我尝试通过 REGISTER FIDO 操作注册身份验证器时,我总是收到错误代码 UNKNOWN (0xFF),我不知道是什么原因。FIDO 文档指出,当其他1-7 错误代码未描述此代码时,将返回此代码。我收到了错误代码 5(没有合适的身份验证器)、6(协议错误)和 7(不受信任的 Facet ID),同时进行了反复试验,但最后,在解决了这些原因之后,我只剩下了未知错误。

我已经检查了多次,但 FIDO 文档的语法没问题;也将其留在这里:

Intent intent = new Intent();
intent.setAction("org.fidoalliance.intent.FIDO_OPERATION");
intent.setType("application/fido.uaf_client+json");
intent.putExtra("UAFIntentType", "UAF_OPERATION");
intent.putExtra("message", "{"additionalData":"Registration","uafProtocolMessage":"[{\"header\":{\"upv\":{\"major\":1,\"minor\":0},\"op\":\"Reg\",\"appID\":\"android:apk-key-hash:AcX+251ZfGFOzVVk1uQzgP16e2I\",\"serverData\":\"063de11c-153c-4cbe-ac74-fbe282feffac\"},\"challenge\":\"H9iW9yA9aAXF_lelQoi_DhUk514Ad8Tqv0zCnCqKDpo\",\"username\":\"joe\",\"policy\":{\"accepted\": [[{\"userVerification\": 2,\"keyProtection\": 6,\"tcDisplay\": 2,\"authenticationAlgorithms\":[1],\"assertionSchemes\":[\"UAFV1TLV\"]}]]}}]"}");
intent.putExtra("channelBindings", "{\"serverEndPoint\":null,\"tlsServerCertificate\":null,\"tlsUnique\":null,\"cid_pubkey\":null}");

该组件试图解决的意图是:ComponentInfo{com.sec.android.fido.uaf.client/com.sec.android.fido.uaf.client.OxygenActivity},它似乎在其清单中导出:

<activity android:exported="true" android:label="@string/title_activity_oxygen" android:name="com.sec.android.fido.uaf.client.OxygenActivity" android:permission="org.fidoalliance.uaf.permissions.FIDO_CLIENT" android:screenOrientation="portrait" android:theme="@style/AppTheme">
<intent-filter>
<action android:name="org.fidoalliance.intent.FIDO_OPERATION"/>
<data android:mimeType="application/fido.uaf_client+json"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>

有没有其他人遇到过并找到解决方案?

注意:在 Xperia Z5 上进行了相同的测试,组件试图解析 Intent 是“com.noknok.android.mfac.service”。但是,在 Z5 上,我总是收到错误代码 6(协议错误),而不是未知。

4

1 回答 1

0

我想根据规范,您的应用程序是 Fido 客户端。

事实上,galaxy S6 中已经存在 ASM + Authenticator,但无法从您的应用程序中调用它。创建 ASM + Authenticator 时,您可以决定只回答特定的 Fido 客户端。这就是三星实现他们的 Galaxy s6 身份验证器的方式。(Xperia 可能也是一样)。

于 2018-07-27T13:19:02.500 回答