-1

我有一个关于 FIDO2 的问题。

小背景: 我的公司决定使用 FIDO2 进行用户帐户管理。所以我们创建了一个主要使用 yubico webauthn 库的 FIDO 服务器包装器。在 Android 端,我们使用 Fido2ApiClient 谷歌播放服务原生库来支持 FIDO

implementation 'com.google.android.gms:play-services-fido:18.1.0'

根据 Fido 文档, https://developers.google.com/identity/fido/android/native-apps#interoperability_with_your_website 允许用户在您的网站和 Android 应用程序之间无缝共享凭据很简单。但是,我们没有使用任何网站,仅在 API 端点(AWS-ALB)中使用 FIDO 服务器

在没有托管assetlinks.json 文件的情况下,Android FIDO Authenticator 始终返回以下错误消息。

code: SECURITY_ERR
message: The incoming request cannot be validated

FIDO 是否必须托管assetlinks.json 文件?有没有人在不托管此文件的情况下取得成功?

4

2 回答 2

2

TL;DR:不,assetlinks 是一个单独的规范,不是 FIDO2 的一部分。

Asset Links 是一个单独的规范。
FIDO2 不要求身份验证服务器公开/.well-known/assetlinks.json端点。
但是,它是由 Android FIDO2 api 强制执行的,因为它是一种验证您是否同时拥有应用程序和要通过它访问的服务器的方法。

进一步详细说明 Asset Links 的作用以及它在 Android 用例中为何有用:
通过让您将用于签署移动应用程序的证书指纹包含在服务器上的文件中,Asset Link 会创建您拥有的有形证明服务器和客户端应用程序的签名密钥-assetlinks.json文件-。
如果不是这样,我可能会创建您的应用程序的恶意版本并将您的服务器用作身份验证服务器。然后,我可能会欺骗用户使用我的应用程序注册/登录,并且 - 虽然我无法看到他们存储在安全硬件上的私钥 - 我可以轻松获取 sessionIds/tokens 并代表他们发出经过身份验证的请求。
为了防止这种情况(可能还有我不知道的其他情况),FIDO2 api在授予对相关凭据的访问权限之前,Android 公开检查客户端是否已被服务器授权。它执行此检查的方式是使用资产链接,但同样,这本身就是一个规范。

资产链接由 Google 管理,从.wellknown 注册表中可见。规范本身可在 github此处此处访问

于 2021-05-03T21:32:03.237 回答
1

是的,来自谷歌播放服务原生库的 Fido2ApiClient 需要assetlinks.json。

于 2020-07-07T18:12:32.413 回答