安卓应用中实现无密码便捷登录的最佳方法?(客户端-服务器架构)

问题描述 投票:1回答:2

我正在编写一个安卓应用,它是一个多人游戏的客户端,我需要一个可靠的方式来验证用户的身份,以便连接用户的游戏账户,存储他们在游戏中的进度,并允许他们以后重新登录,并在他们离开的地方继续游戏。

我需要一种可靠的方式来验证用户的身份,以便将用户与他们的游戏账户连接起来,存储他们在游戏中的进度,并允许他们稍后重新登录并继续玩他们离开的地方。

一个简单的解决方案是实现基于密码的登录,并管理所有 "自己 "的密码(在我的应用和游戏服务器中)。然而,在移动设备上输入密码是相当不方便的。在阅读了这个话题之后,他们说最好的登录方式是无密码提示的登录(一般情况下尽量减少用户交互)。

我希望在android应用中实现无密码登录的最佳方式是基于google账号的登录。每个android设备都已经连接了google账号了吧?

在网上和stackoverflow上搜索,我非常惊讶地发现,我无法找到关于我的问题的好文档,我以为这是一个标准的问题,在我之前一定有很多人遇到过。

在我看来,有些事情是浮夸的。

  1. 谷歌登录Api
  2. 使用谷歌智能锁用谷歌账号登录 (这比签到api好在哪里?)
  3. 使用谷歌智能锁自动创建我自己的登录密码凭证,并在 "幕后 "使用。

那么,什么是实现无密码便捷登录的最佳方式呢?

在这种情况下,我对 "最佳 "的定义是。

  1. 对用户最方便的方式 尽可能少的交互。
  2. 合理安全,防止账号被劫持。
android authentication login google-signin google-smartlockpasswords
2个回答
1
投票

取决于你需要如何识别你的用户。如果电子邮件地址就够了,你可能正在寻找OpenID Connect。你会得到一个签名的ID令牌,如果签名通过,你可以相信里面的信息,其中包括Gmail地址。谷歌有库让这一切变得简单,Android设备已经有了令牌,所以用户不必输入密码。更多信息在这里。

https:/developers.google.comidentityprotocolsoauth2native-app。

谷歌游戏登录 可能更适合你,而且 火力基地 使得管理用户数据更容易,而不需要运行自己的服务器。


1
投票

我的应用也有类似的问题,我发现最好的解决方案是实现了 FIDO协议 允许用户使用安全存储在其移动设备中的私钥进行登录。

在注册在线服务时,用户的客户端设备会创建一个新的密钥对。它保留了私钥,并在在线服务中注册了公钥。认证是由客户端设备通过签署一份挑战书来证明拥有服务的私钥。

为了直观地体现出来。这里有一张图解释FIDO的工作原理。.

为什么说这是最好的解决方案?

  1. 这是非常方便的,因为你的用户不需要做任何交互就可以登录,只要你的应用程序是从持有私钥的设备上访问的。你可以从应用中默默地对他们进行认证。如果用户从不同的手机访问应用程序,你可以发送一个推送通知,并在你的应用程序中显示一个提示来批准登录请求。
  2. 这种方法是安全的,因为。
    • 它可以避免用户输入错误的密码。
    • 私钥永远不会离开设备。这意味着您永远不需要在数据库中存储密码。
    • 非对称加密技术确保只有持有私钥的设备才能进行有效签名。

如何在Android中实现它。

对于安卓应用来说,最简单的方法就是使用... 卡特是一个类似于Firebase的认证服务,但专注于无密码登录。你可以建立一个免费账户来获取你的API密钥。

文档。 这是Android系统实现上述FIDO协议的指南。.

如果你想自己做,你可以检查出的 安卓钥匙店系统.

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