【问题标题】:Appengine endpoint authentication with android client without using google accountAppengine端点身份验证与Android客户端不使用谷歌帐户
【发布时间】:2016-02-28 15:43:07
【问题描述】:

我有一个 android 应用程序,它使用云端点在 google appengine 上备份数据。

我不使用用户设备中的谷歌帐户来唯一标识用户。我使用不同的用户名(用户在注册时最初选择的用户名)来识别用户。

我尝试使用 OAuth 身份验证来对进行端点 API 调用的用户进行身份验证,但似乎在调用端点 API 调用时我必须使用 android 设备上的 google 帐户才能使 OAuth 身份验证起作用。

所以我决定将用户名和密码作为参数添加到所有需要身份验证的端点 API 调用。当用户注册或登录时,我将用户名和密码存储为 SharedPreference。然后,我使用此用户名和密码进行身份验证所需的 API 调用。

这种方法是否存在任何安全问题?如果有,有没有更好的方法?

【问题讨论】:

    标签: android google-app-engine google-cloud-endpoints


    【解决方案1】:

    我认为安全方面的一个问题是:

    我决定将用户名和密码作为参数添加到所有 身份验证所需的端点 API 调用

    如果您这样做,则用户名和密码将成为 URL 请求的一部分。相反,使您的 API 方法 POST 并创建一个包装器类,该包装器类使用一个简单的 POJO,该 POJO 具有带有 getter 和 setter 的 usernamepassword 属性,并将该类作为参数传递。

    仅供参考,您只能将一个类作为参数传递给 Cloud Endpoints API 方法,因此,如果您有多个要传递的类/实体,则必须创建另一个仅将这些类/实体作为属性的包装类与吸气剂/二传手。

    此外,请确保在创建用户密码时对其进行散列/加密,以免传递纯文本密码。如果你用谷歌搜索的话,有很多关于如何在 Java 中做到这一点的信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-09
      • 2016-07-09
      • 1970-01-01
      • 1970-01-01
      • 2013-06-06
      • 1970-01-01
      相关资源
      最近更新 更多