gae channel token作为通用访问令牌

时间:2013-07-29 12:29:08

标签: google-app-engine memcached token channel-api

我有一个Android应用程序,通过频道和REST与GAE服务器进行通信。我可以将通道令牌用作通用访问令牌,如下所示:

  1. 客户端向servlet提供凭据
  2. servlet创建频道并提供令牌
  3. 客户端执行REST调用,将通道令牌作为访问令牌
  4. 通过频道进行的其他通信
  5. 对于3我想保持免费会话。所以我需要从通道令牌解密客户端ID。客户端ID可能已加密到令牌中,但我没有找到任何API调用来提取它。

    是否有其他API可用于获取频道令牌的客户端ID?

    否则我需要维护通道令牌和客户端ID的映射,这会降低令牌的值。 memcache是​​否是维护此映射的适当机制?

    THX

1 个答案:

答案 0 :(得分:0)

这是一个有趣的概念。如果你小心的话,它可以工作。

对于初学者来说,只有通过HTTPS转移令牌才能安全。

令牌和频道超时,因此您必须经常重新创建频道。

频道对于糟糕的互联网连接有点不稳定。如果您丢失了互联网连接,有时频道仍可以使用,有时您需要重新创建它。

无法通过访问令牌验证或获取您的客户端ID。因此,要将其用作安全性,您不必将任何数据返回到原始请求,只需将数据发送到通道即可。此外,您还需要在服务器上的客户端ID和访问令牌之间存储您自己的映射。请记住,这将是不准确的,因为很难在服务器端告诉令牌是否超时。在大多数情况下,如果您确实需要数据,单独的内存缓存不是一种合适的机制,如果刷新了内存缓存,您将希望它由数据存储区支持。

我认为最大的麻烦是您需要手动将REST呼叫请求与稍后在频道上获得的数据相关联。您可以使用增量计数器作为id轻松地完成此操作,但是您必须处理没有得到回复并且必须重试等的情况。如果您使用会话ID,可能更容易。