RESTful令牌认证澄清

时间:2014-05-27 21:17:54

标签: angularjs rest authentication jersey token

我几乎阅读了关于SO的所有答案和一些博客帖子,但我无法弄清楚一件简单的事情。在简单的令牌身份验证方案中,服务器生成令牌并在验证凭据后将其发送回用户,客户端如何在每个请求中存储然后重新发送该令牌?我看过两个cookie示例和标题示例。如果可能的话,我想使用HTTP Headers,但我无法弄清楚如何将令牌发送到客户端的机制,它将在哪里,然后在请求REST资源时将其发送回头部。

我在前端使用带有AngularJS的Jersey / Guice。以下是我开始使用的资源:

http://porterhead.blogspot.co.uk/2013/01/writing-rest-services-in-java-part-6.html

Session management : How to generate Authentication token for REST service ? (Jersey)

2 个答案:

答案 0 :(得分:1)

这取决于您的需求。如果适合您,您可以使用HTTP基本或摘要身份验证。如果没有,那么如果您不需要永久存储,则可以将凭证存储在内存中。如果您需要永久存储,则可以将它们存储在localstorage或任何其他客户端存储中,但要注意它们是considered not secure

无论如何,我认为如果您的客户或服务以某种方式与xss妥协,那么您就输了,而且您对此做了什么并不重要。否则,只要您使用具有适当设置的HTTPS,就可以安全地以纯文本形式发送凭据。 (但这只是一个意见,我不是安全专家,至少不是这个主题。)所以我认为你应该专注于不被xss弱化。例如,您应该使用proper headers并针对js注入过滤输入(以及通过firefox数据URI注入)。并且尽可能在客户端使用TextNode而不是innerHTML。

答案 1 :(得分:0)

例如,如果您使用的是Javascript,则可以将令牌存储在localstorage中,例如客户端的window.localStorage [" token_id"]。