gpt4 book ai didi

android - 如何在 Android 应用中实现 WebAuthn?

转载 作者:行者123 更新时间:2023-12-04 23:43:44 28 4
gpt4 key购买 nike

我打算使用 WebAuthn 进行身份验证,如演示站点 https://webauthn.io 所示

事实证明,Android 的 WebView(和它的 iOS 对应物)没有实现这一点,并且明确指出这不会发生。一个是被提及使用 Chrome 选项卡。

但我想做的是在移动设备上,即在应用程序内部,不要为此使用任何 HTML/JavaScript。在应用程序中,我想使用类似于 Firebase 的 Java 库,但它确实提供了使用通过 WebAuthn 设置的相同帐户的方法,或者通过应用程序上的库设置帐户,然后可以稍后访问在浏览器中使用 WebAuthn。

我遇到过 AppAuth https://github.com/openid/AppAuth-Android并且不确定这是否与 WebAuthn 有关。

我的目标是使用无密码和无电子邮件的身份验证系统,以便用户通过 WebAuthn 在 Web 上使用它,并让他们的应用程序代表他们通过库访问后端。不需要某人在 Facebook、Google 或任何其他提供商拥有用户帐户的系统。

我想避免在 Android 应用程序中使用 Chrome 选项卡之类的解决方法,它应该全部用 Java 处理,并通过 Fragments 进行用户交互。

我有哪些选择? FIDO2 是否能够提供所需的一切?它与 OAuth 2.0 有何关系?

最佳答案

WebAuthn 是浏览器的标准,这意味着它只能在今天的浏览器中实现。在 Android 上,它确实仅限于 ChromeCustomTabs 的浏览器。在 iOS 上,它可能在内部 web View 中被允许 - 但仍然在 web 组件中。

无法让它与 native UI 一起使用,尤其是因为 WebAuthn 身份验证绑定(bind)到一个 URI( native 移动应用程序 UI 中没有该 URI)。

WebAuthn 和 OAuth2 不相关。 OAuth2 是一种 API 访问控制协议(protocol):您首先使用 Web 流(某些特殊情况除外)在授权服务器上获取 token ,这通常涉及身份验证和授权过程,然后在验证它们的 API 上使用这些访问 token 。 WebAuthn 是一种身份验证方案:在初始注册后,用户无需提供密码即可使用身份验证器进行身份验证。

这两件事相关的唯一方式是 WebAuthn 可以用作 OAuth2 身份验证过程中的身份验证方案(而不是密码,通过电子邮件或 SMS 发送的 OTP,推送通知......)。

如果您想在同一移动设备上的 native 应用程序和某些 Web 应用程序之间进行单一身份验证过程,那么最好的方法是拥有一个独特的中央身份验证服务,该服务将处理身份验证和 SSO(单点登录) .它可以防止用户拥有多个帐户、注册和身份验证过程。

为此,您的 native 移动应用程序也必须使用它 - 因此使用 Web 身份验证。 AppAuth 是一个允许执行此类操作的库,并使用 OAuth2 协议(protocol)(因此提供 OAuth2 访问 token 以访问 API)。由于您的 native 应用程序本身没有数据,但需要在某处检索数据(可能是 API),这可能就是您想要的。但据我所知,您无法使用 fragment 实现 SSO,因为任何非 ChromeCustomeTab 组件都会 不是 在应用程序之外共享 cookie。

关于android - 如何在 Android 应用中实现 WebAuthn?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57674215/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com