REST身份验证/授权

时间:2011-04-27 21:54:53

标签: authentication rest authorization

我需要一些关于如何保护我的应用程序的建议:

我有一个REST服务,使用Spring MVC 3

我有我的客户端应用程序,使用Ext GWT 2.2

用户凭据仅在服务器端可用。

SSL可用

REST服务只应由经过身份验证的用户使用。

我已经阅读了有关HTTP摘要,基于令牌的授权,oAuth等的内容,但我需要对如何保护我的应用程序以及哪些方法在我的情况下最好的方面做一些澄清和建议。

1 个答案:

答案 0 :(得分:26)

这是我们为应用程序创建的方法,效果非常好,而且非常安全。

这是一个非常概念性的解释,有很多代码支持这个,仅供参考

  • 当用户验证或创建帐户时,服务器返回x.509证书,base64编码,对用户而言是唯一的。服务器存储副本。

  • 每次客户端需要访问REST API时,客户端都会创建一个由以下内容组成的JSON字符串。

  • 用户唯一ID(用户ID)

  • GUID或UUID,保证此调用是唯一的(CallID)(防止重放攻击)
  • 其余调用的每个参数的字典(键/值的集合)
然后我们用x.509公钥加密该字符串,并将其编码回base64字符串,并获取此加密值并将UserID添加到我们称之为令牌的json对象。

然后我们将令牌放入每个调用的标头中,并将其称为:X-Auth-UserToken

在每次调用时,服务器获取令牌,根据userID查找用户证书,然后验证令牌的加密部分是否可以使用服务器为用户保存的私钥进行解密。

解密后,服务器获取CallID,并根据自己的calllog db验证它是唯一的。

如果签出,则用户已通过身份验证。

用户通过身份验证后,您可以根据用户uniqueID应用自己的授权规则。

当然,以上所有都是通过SSL。

如果您需要我深入研究任何部件,请告诉我。