2011-07-04 95 views
4

我正在使用Apache Jersey构建一个RESTful Webservice。现在我希望你需要对它的一些请求进行认证。使用典型的REST方法,认证应该通过HTTP认证完成。但是一个帖子here提到了一个更好的方法是如何使用cookie。我认为讨论中有一些有用的观点。 (如何)我可以使用Cookie来进行Jersey验证吗?我需要另一个框架吗?在Apache Jersey中进行身份验证而不使用Http身份验证?

回答

6

Jersey使用封装的Web应用程序的web.xml中声明的身份验证机制,实际上是HTTP身份验证(通过SSL)或基于窗体的Cookie身份验证。

如果要使用基于cookie的会话认证,用户必须首先使用Web服务进行认证,以创建一个会话,该会话可用于检查未来呼叫的身份。该servlet规范提供了一种标准化的方式来使用cookie和使用web表单进行会话进行身份验证,但是这与web服务类型的应用程序不兼容。因此,您可能需要制作一些自定义解决方案,以便用户通过发布XML或JSON文档来提交凭据。这种方法的一个问题是,如果用户在没有首先进行身份验证的情况下或者在会话过期之后执行了对资源的调用,他们将需要重定向或接收某种类型的错误代码。不是不可能的,但它增加了您的Web服务的复杂性。

此时您不得不怀疑,使用HTTP身份验证不是Web服务样式应用程序的更好选择。我们最近使用Jersey和HTTP Auth作为身份验证机制构建了一个Web服务。然后我们在它上面建立一个Javascript前端。 Javascript客户端总是向Web服务提交Authentication标头,以便用户永远不会遇到来自浏览器的HTTP Auth认证窗口。也许是两全其美。

相关问题