使用安卓客户端进行Appengine端点身份验证,而无需使用谷歌帐户



我有一个Android应用程序,它使用云端点备份Google Appengine上的数据。

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

我尝试使用 OAuth 身份验证

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

因此,我决定将用户名和密码作为参数添加到所有需要身份验证的终结点 API 调用中。我在用户注册或登录时将用户名和密码存储为共享首选项。然后,我使用此用户名和密码进行身份验证所需的 API 调用。

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

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

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

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

仅供参考,您只能将一个类作为参数传递到 Cloud Endpoint API 方法中,因此,如果要传入多个类/实体,则必须创建另一个包装类,该包装类仅将这些类/实体作为具有 getter/setter 的属性。

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

最新更新