java - 不使用 Http-Authentication 在 Apache Jersey 中进行身份验证?

标签 java authentication rest jersey restful-authentication

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

最佳答案

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

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

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

关于java - 不使用 Http-Authentication 在 Apache Jersey 中进行身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6568885/

相关文章:

html - 如果 HTTP Basic Auth 失败,则中止加载脚本

php - 如何使用另一个 API 的用户群在 Laravel 中设置身份验证?

django - django restframework 中用于身份验证的自定义模型而不是默认用户模型

java - Spring MVC REST 中的 ETag 处理

jquery - 使用 JQuery PATCH 进行部分更新

java - 如何顺序连接到BluetoothGatt设备的正确方法

java - 如何获取有关 Java 文件中表达式的类型信息?

java - 通过 HTTPS 发送帖子 - 不工作

java - 如何生成一个随机的五位数Java

javascript - REST 对 SharePoint 值求和,无需 else if