我需要一些有关如何保护我的应用程序的建议:
我使用Spring MVC 3构建了一个REST服务。
我有一个使用Ext GWT 2.2的客户端应用程序。
用户凭据只在服务器端可用。
SSL可用。
REST服务应仅由已认证的用户使用。
我已阅读有关HTTP摘要,基于令牌的授权,oAuth等方面的信息,但我需要一些澄清和关于如何保护我的应用程序以及在我的情况下哪种方法最好的建议。
我需要一些有关如何保护我的应用程序的建议:
我使用Spring MVC 3构建了一个REST服务。
我有一个使用Ext GWT 2.2的客户端应用程序。
用户凭据只在服务器端可用。
SSL可用。
REST服务应仅由已认证的用户使用。
我已阅读有关HTTP摘要,基于令牌的授权,oAuth等方面的信息,但我需要一些澄清和关于如何保护我的应用程序以及在我的情况下哪种方法最好的建议。
这是我们为应用程序创建的方法论,非常有效且非常安全。
这是一个非常概念性的解释,有很多代码来支持这一点,请注意。
当用户验证或创建帐户时,服务器将返回一个x.509证书,经过base64编码,该证书对于该用户是唯一的。服务器存储一份拷贝。
每次客户端需要访问REST API时,客户端创建一个JSON字符串,包括以下内容:
用户唯一ID(UserID)
然后我们使用x.509公钥加密该字符串,并将其编码回base64字符串,并将此加密值添加到我们称之为token的json对象中的UserID项中。
然后我们把token放到每个调用的header中,例如:X-Auth-UserToken。
在每个调用上,服务器获取令牌,根据userID查找用户证书,然后验证令牌的加密部分是否可以使用服务器持有的用户私钥进行解密。
解密后,服务器接受CallID并根据自己的调用日志数据库验证其是否唯一。
如果验证通过,则用户通过身份验证。
一旦用户经过身份验证,您可以根据用户的唯一ID应用自己的授权规则。
当然,以上全部都是在SSL上进行的。
如果您需要我深入了解任何部分,请告诉我。