【问题标题】:Google App Engine as Authentication Server for Mobile ApplicationGoogle App Engine 作为移动应用程序的身份验证服务器
【发布时间】:2011-06-02 16:58:28
【问题描述】:
我正在尝试将 Google App Engine 作为身份验证服务器,用于在原生 android 上运行的移动应用程序。用户名和密码将存储在 GAE 中,我的目标是能够使用 GAE 存储和验证来自移动应用程序的凭据。这可能吗?我研究过 OAuth 和 JSON,但我认为我没有合适的设置。
另外,如果我走错了路,请指出正确的路径。
【问题讨论】:
标签:
python
google-app-engine
oauth
titanium
【解决方案1】:
如果“存储凭据”是指存储用户名和密码,那么我想你会以错误的方式解决这个问题。无论您是在谈论 OAuth 还是 OpenID,其想法是您永远不会看到或无法访问委托身份验证机制的密码(也可能不是用户名)。相反,您会收到一个身份验证或授权令牌来完成您的工作(在 OpeniD 的情况下,一些有关此人的元信息,例如名字/姓氏和电子邮件地址)。
对了,有没有考虑过第三者,比如Janrain?
【解决方案2】:
如果您有兴趣在您的 GAE 实例中实现更类似于 API 的实现,我肯定会更多地研究 OAuth。但是,如果您只对验证这一移动应用程序的凭据感兴趣,那么您无需走那么远。
幸运的是,您可以通过 SSL 调用您的 GAE 实例,这意味着您可以卸载所有的握手和加密业务。然后我会简单地使用http-basic authentication,或者简单地将用户ID和加密密码作为请求中的参数发送。
在 iPhone 上有一个用于密码存储的 KeyChain,也许有一个 Android 对应项?无论如何,请确保将加密的密码存储在设备上和 GAE 数据存储中。验证凭据时发送加密密码。您永远不应该知道您的用户的明文密码。这将提供一定程度的模糊性,我认为这已经足够(通过 SSL 发送时肯定如此)。
然后您可以简单地返回帐户凭据是否经过验证。