如何为 Android 和 IOS 实现 FIDO2 (WebAuthn)



我开发了一个Web应用程序,它使用WebAuthn API使用硬件安全密钥进行身份验证。它工作正常。

我正在尝试使用兼容IOS和Android的Flutter在本地实现它。这些平台是否有任何库或起点?我不想使用ChromeTabs或SFSafariViewController。

请指教。

对于Android,你有他们的FIDO2 API。一些示例 Codelab 和实现已经存在:

  1. 博德实验室
  2. Kotlin 示例
  3. Java 示例。

但是,在iOS上,FIDO2仅在Safari浏览器中受支持(不确定其他浏览器(,并且仅在iOS 13.3(链接(中受支持。

您可以考虑在 Android 上使用原生 FIDO2 API,并在 iOS 上打开 Safari,直到添加底层平台支持。

但是,正如@mackie指出的那样,如果您在 OAuth 流的身份验证部分中使用 FIDO2,建议的路径是使用带有 ASWebAuthenticationSession 或 Chrome 自定义选项卡的 Web 浏览器。

您应该打开一个浏览器窗口以使用户进行身份验证,并在成功登录时使用 my-app://myapp/auth/succeed=true&token=xyz 作为重定向 URL(专用 URI 方案重定向(,在此之前,将应用程序的 url 模式"my-app"注册为协议。浏览器将自动打开具有给定重定向 URL 的应用程序,您必须处理该 URL 才能将应用程序置于适当的状态......

iOS/MacOS 的新选项是 Passkeys。 但它依赖于iCloud。

密钥使用 iCloud 钥匙串公钥凭据,消除了 需要密码。相反,他们依赖于生物识别, 例如 iOS 中的触控 ID 和面容 ID,或 用于生成和验证帐户的 macOS。

作为身份验证器,您的 Apple 设备会生成一个唯一的 在服务上创建的每个帐户的公钥-私钥对。这 身份验证器保留私钥并与 服务器,称为信赖方。

最新更新