我有一个Android应用程序,它使用云端点备份Google appengine上的数据。
我不会在用户的设备中使用Google帐户来唯一标识用户。我使用不同的用户名(用户在注册时最初选择)来识别用户。
我尝试使用OAuth身份验证来验证进行端点API调用的用户,但似乎我必须在调用端点API调用时在Android设备上使用Google帐户,以便OAuth身份验证正常工作。
所以我决定添加用户名和密码作为所有身份验证所需端点API调用的参数。当用户注册或登录时,我将用户名和密码存储为SharedPreference。然后,我使用此用户名和密码进行身份验证所需的API调用。
这种方法有安全问题吗?如果是的话,还有更好的方法吗?
答案 0 :(得分:0)
我认为安全方面的一个问题是:
我决定添加用户名和密码作为参数 身份验证需要端点API调用
如果您这样做,那么用户名和密码将成为URL请求的一部分。相反,使您的API方法POST并创建一个包装类,该类使用具有password
和$.ajax({
url: url,
data: {test: "test"},
post: "POST"
}).done(function(data) {
if (!data.error) {
alert("Test");
}
});
属性的简单POJO与getter和setter,并将该类作为参数传递。
仅供参考您只能将一个类作为参数传递到Cloud Endpoints API方法中,因此如果您要传入多个类/实体,则必须创建另一个包含类,这些类只包含这些类/实体作为属性与吸气剂/安装者。
此外,请确保在创建用户密码时对其进行哈希/加密,这样您就不会传递纯文本密码。如果你谷歌它有很多关于如何在Java中做到这一点的信息。