我们可以在Fido2设备(yubikey)中存储和读取密钥吗

问题描述 投票:0回答:3

我正在开发一个 Android 和 iOS 应用程序,需要有一个无密码的登录解决方案。我们正在尝试实现 WebAuthn/Fido2 设备。

问题是 Fido 仍然是新的,并且没有 React-Native 库来实现它。所以我有几个问题。

我们可以在Fido2设备中读写自己的密钥吗? => 在我们获得合适的库之前,我想在 fido2 设备上存储一个加密密码作为密钥,每次登录时读取它,然后解密它。听起来好实施吗?有可能实现吗?

react-native webauthn fido fido-u2f yubikey
3个回答
1
投票

@DevPy

要从 React Native iOS 应用程序支持 WebAuthn/FIDO2,建议的解决方案是集成两个支持 WebAuthn API 的 Apple iOS 系统浏览器(ASWebAuthenticationSessionSFSafariViewController)之一。 ASWebAuthenticationSession 将是我的第一选择,因为该浏览器用于通过 Web 服务(特别是 OAuth 2 流程)进行身份验证。这提供了用于与 FIDO2 身份验证器(如 YubiKey)交互的接口和内置 API,并为开发人员提供了对会话和身份验证令牌的回调的控制权。集成 WebAuthn 的另一种方法是利用第三方 SDK 与 OAuth 2 提供商进行通信。例如,AppAuth for iOS 有一个 React Native 桥,可以在这里找到。我相信 AppAuth SDK 使用 ASWebAuthenticationSession。

对于写入/读取您自己的自定义密钥的最初问题,FIDO2 设备的存储空间有限,但 YubiKey 提供了两种可能适合您的选项。一种是创建静态密码(未加密)或利用Yubico OTP的选项。这两个选项都使用系统键盘将密码或 OTP 输入到应用程序内的任何文本/密码字段中。无需 SDK 或系统浏览器。


0
投票

FIDO2/WebAuthn 是专门的浏览器 API。既然您正在谈论(React)本机应用程序中的身份验证,那么您可能会想回退到等效的本机操作系统 API。

对于 Android,您可以使用

Fido2ApiClient
,它可以让您利用服务器上现有的 FIDO2 凭证进行应用内身份验证:

我认为 iOS 端原生应用程序开发的等效项是身份验证服务。他们有一个专门关于在您的应用程序中利用“密码”的页面,这可能会帮助您入门:


0
投票

我正在针对我自己的服务器运行 Fido2ApiClient,但我收到“无法验证传入请求”。我检查了各种网站/论坛,提到 assetlinks.json 是造成的,但我已经检查并验证了https://developers.google.com/digital-asset-links/tools/generator

有什么想法吗?

© www.soinside.com 2019 - 2024. All rights reserved.