3

我使用 FIDO android SDK https://developers.google.com/android/reference/com/google/android/gms/fido/package-summary和 web FIDO lib https://github.com/lbuchs/WebAuthn作为服务器

为了完成身份验证,我向服务器发送以下有效负载:

{"authenticatorData":"uGLTOEtQtBsB4wjhEvR0ZVayRWn/3mhUyp6dqFFY0a8BAAABDQ==","clientDataJSON":"eyJ0eXBlIjoid2ViYXV0aG4uZ2V0IiwiY2hhbGxlbmdlIjoiLW9zc3JiYXY3SmhmUWlQY1ZlMzFkdDQxMG5ZWHVvWW9kM1FYdHc5VmlIUSIsIm9yaWdpbiI6ImFuZHJvaWQ6YXBrLWtleS1oYXNoOmZiRU5UdkNTZVItQXdKVjVycnJCc2I5OHAtakV3MGM1U1NPTXVsX0t3YUkiLCJhbmRyb2lkUGFja2FnZU5hbWUiOiJjb20uYWZ0ZXJsb2dpYy5hdXJvcmEubWFpbCIsInRva2VuQmluZGluZyI6eyJzdGF0dXMiOiJwcmVzZW50IiwiaWQiOiJodHRwczpcL1wvdGVzdC5hZnRlcmxvZ2ljLmNvbSJ9fQ==","id":"LEBlQOlamqsmKzRBPQe9y0BFN5IaQ5BBB1ByiDH85HulzCYQTffqeK0RQDoZqUO7syGZY+hkfWf9P2FiQQ3eVA==","signature":"MEUCICFf8qFGiXxGTBokpstfUsCwbd7JTsLlDrFZoGMi3tZzAiEA0zAXxFDeqA7gF6YahudK+LD2gDUPtAnXqgAvvhVc/vE="}

字段 clientDataJSON 包含一个 base64 加密的 JSON 对象,该对象具有属性"origin":"android:apk-key-hash:fbENTvCSeR-AwJV5rrrBsb98p-jEw0c5SSOMul_KwaI"

但服务器响应错误“无效来源”。

同时,我的网络 FIDO 身份验证实现发送clientDataJSON"origin":"https://test.afterlogic.com"在这种情况下一切正常。

如何在网络服务器上使用 android:apk-key-hash 验证来源?我将不胜感激有关如何处理此问题的任何其他想法。

4

1 回答 1

0

我认为 Android 的 FIDO sdk 是一个模仿 WebAuthn API 的客户端。

Other specifications mimicking the WebAuthn API to enable WebAuthn public key credentials on non-Web platforms (e.g. native mobile applications), MAY define different rules for binding a caller to a Relying Party Identifier. 

参考:https ://www.w3.org/TR/webauthn-3/#relying-party-identifier

也有人将这个问题提交给 W3C:https ://github.com/w3c/webauthn/issues/1297

https://github.com/lbuchs/WebAuthn可能遵循 WebAuthn 规范,但不支持具有不同方式将调用者绑定到 RPID 的此类客户端。

于 2021-12-07T04:34:25.007 回答