2013-12-16 28 views
2

我正在用Phonegap构建一个应用程序。它只是读取xml提要,以显示学校上传的最新文章,供家长阅读。从Phonegap应用程序到REST服务器的认证

会有一个选项,应用程序的每个用户都可以决定是否要接收推送通知。我有一个简单的数据库表,其中设备的注册i.d.从Google云端控制台存储。当用户点击“是”时,注册i.d.被生成并存储在服务器上。如果他们点击“否”,则会被删除。我想通过基本的HTTP认证来保证这些调用到服务器。

我在基本身份验证中看到的任何文档都描述了发送用户名和密码。但是用我的应用程序,没有用户名或密码,因为用户不需要注册。我发送什么来验证客户端?在客户端是否会有一个硬编码密钥并随每个请求一起发送?可以通过解压缩.apk文件轻松揭示它吗?

回答

2

由于您有权访问服务器端,因此您可以控制整个过程。所以,为了处理这个问题,你可以考虑一些类似于会话cookie的事情,即在正常认证的情况下,Web服务器创建的会话cookie。

我做了类似的事情,我所做的是生成一种令牌服务器端存储在设备或localStorage的cookie中。

所以流程应该是这样的:

  • 生成令牌并将其存储设备(Cookie或本地存储)上。
  • 对于每个请求,请在http标头中发送此值
  • 从服务器端,您可以从该标记中识别用户。
    例如:您维护一个标识设备/令牌的表。

就是这样

3

我反对这个问题的前提。实际上,我认为这不是一个安全问题,而是一个偏好问题。了解这种区别使得功能的开发变得更加容易。

只需修改您的应用程序以允许用户配置他或她希望在设置中看到的内容,然后在客户端(如本地存储)上随意存储所需的任何位置。服务器可以像以前一样推送,但应用程序应该拒绝呈现用户不想看到的推送。

如果您想简单地向想要查看它的用户发布非敏感内容,这是一个偏好问题和/或发布/订阅问题。但这不是一个安全问题。

0

除了其他答案,你可以传递一个自定义的useragent字符串作为请求的一部分,并验证它与你所期望的一致。这不是一个确保'安全'请求的方法,而是一个(简单)令牌系统和HTTPS,这足以满足您的需求。

相关问题