FIDO是否必须托管assetlinks.json文件?

时间:2020-05-28 14:16:00

标签: android google-identity webauthn yubico fido

我对FIDO2有疑问。

小背景: 我公司已决定使用FIDO2进行用户帐户管理。因此,我们创建了一个FIDO Server包装器,该包装器主要使用yubico webauthn库。 在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文件? 没有托管此文件的人有成功吗?

2 个答案:

答案 0 :(得分:1)

是的,来自Google Play服务本机库的Fido2ApiClient需要assetlinks.json。

答案 1 :(得分:1)

TL;DR:不,资产链接是一个单独的规范,不是 FIDO2 的一部分。

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

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

资产链接由 Google 管理,从 .wellknown registry 可以看到。规范本身可在 github herehere 上访问。

相关问题