2011-04-27 115 views
13

我需要就如何确保我的应用提出了一些建议:使用Spring MVCREST认证/授权

我有一个REST服务,3

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

用户凭证仅在服务器端提供。

SSL提供

REST服务只能由authentificated用户使用。

我看了一下HTTP摘要,基于令牌的授权,OAuth的等等,但我需要一些澄清,并就如何确保我的使用建议,以及哪些方法是在我的情况是最好的。

回答

26

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

这是一个非常概念化的解释,有很多的代码实现此起来,FYI

  • 当用户进行身份验证或创建帐户,服务器返回的X.509证书,base64编码,即对用户来说是独一无二的。服务器存储一份副本。

  • 每次客户端需要访问的REST API,客户端创建由以下的JSON字符串。

  • 的用户唯一ID(用户名)

  • 一个GUID或UUID,即保证这个通话是独一无二的,(呼叫标识)(防止重放攻击)
  • 词典(键/值的集合)其余的通话

的每个参数我们再加密与X.509公钥字符串,并对其进行编码回的base64字符串,并借此加密值和用户ID添加到一个JSON对象我们称之为令牌。

然后我们把令牌到每个通话的头,并调用它是这样的:X-AUTH-UserToken

在每次调用服务器取令牌,查找基于用户ID的用户证书,然后验证令牌的加密部分可以用服务器为用户保存的私钥解密。

一旦解密,该服务器采用呼叫标识并验证它是独一无二的,对自己的calllog分贝。

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

一旦用户通过验证后,就可以根据用户的应用UNIQUEID自己的授权规则。

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

让我知道如果你需要我深入的任何部分。

+0

太棒了!我一直在寻找这个。 – Mikecito 2011-04-27 22:29:30

+0

您可能想要查看WebID http://www.w3。org/wiki/WebID这是一种标准化的方式来完成你似乎正在描述的内容。 – 2011-04-28 11:16:56

+0

服务器在用户认证时通过SSL发送回临时令牌时,会话是不是充分安全?如果连接已通过ssl保护,额外证书有什么好处? – 2012-05-31 10:50:05