在REST应用程序中维护会话的方法

时间:2010-03-23 19:07:34

标签: rest

我们有一个REST应用程序,主要由不需要维护其状态的应用程序使用,所以直到最近我们一直保持“RESTFUL”而不保持状态。我们使用私有/公共(类似于亚马逊)进行身份验证。目前,客户端会传递每个请求的凭据

现在我们有一个新的要求,我们必须维持状态(或对话)。客户端可以是Rich应用程序或手持设备。我正在努力想出最好的方法来实现状态。我们应该传递会话ID并维护该ID ..这是最好也是唯一的解决方案吗?

1 个答案:

答案 0 :(得分:3)

传递会话ID不是唯一的方法,也不是维持会话状态的最佳方式。如果您有RIA,最好的方法是维护客户端本身的状态,就像它的一些评论所暗示的那样。这意味着仍然会在每次请求时发送凭据。

对每个请求重新进行身份验证是唯一的方法,如果您认为服务器上有性能损失,服务器可以(按照建议)缓存身份验证请求的结果一段的时间。 Digest authentication可以帮助避免通过密码签署通过网络传输的令牌来缓存响应。

如果这还不够好,您可以使用类似于Google ClientLogin的内容,并为客户端提供加密令牌,无需询问授权即可对其进行验证,并且无需通过线路传递用户的真实凭据。谷歌自己通过https登录,然后使用生成的令牌通过http。它对于令牌的生命周期内的重放攻击是开放的。