在不使用Http-Authentication的情况下在Apache Jersey中进行身份验证?

Que*_*uy7 4 java authentication rest restful-authentication jersey

我正在使用Apache Jersey构建RESTful Web服务.现在我希望你需要对它的一些请求进行身份验证.使用典型的REST方法,身份验证应通过HTTP身份验证完成.但是这里的帖子 提到,如何做到这一点的更好方法是使用cookies.我认为讨论中有一些有效的观点.(如何)我可以使用Cookie验证泽西岛身份验证吗?我需要另一个框架吗?

小智 6

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

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

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