使用 Jersey 和 Spring Security 实现 RESTful Web 服务

Posted

技术标签:

【中文标题】使用 Jersey 和 Spring Security 实现 RESTful Web 服务【英文标题】:Implment RESTful webservice with Jersey and spring security 【发布时间】:2011-07-19 23:35:19 【问题描述】:

这些天,我正在使用 Jersey 实现 RESTful Web 服务。 为了安全,我们正在考虑使用spring security。

在集成 jersey & spring security 期间,我们发现了一些问题。

    重定向到 8080 端口(由 servlet 容器使用)。 我们在apache中使用代理模块只支持80、443。 当请求重定向到登录页面时,请求 url 更改为使用 servlet 容器(tomcat)使用的 8080 端口。 如何防止重定向到 8080? 如果我们只想显示消息(错误消息)什么是好的选择?

    保持会话的好方法是什么? 我发现使用不支持 cookie 的客户端工具存在问题。 (我发现 Jersey 客户端不支持 cookie,所以 session 没有继续使用它。) 保持会话的好方法是什么?

【问题讨论】:

【参考方案1】:

    我在使用反向代理时遇到了类似的端口号/协议问题。我还没有想出如何解决我的问题(可能在这里问另一个问题),但你可能想看看 spring-security 配置的“端口映射”设置:http://static.springsource.org/spring-security/site/docs/3.0.x/reference/ns-config.html#ns-requires-channel

    我不确定这是否完全符合您的要求,但值得一试。

    我建议您保持 RESTful Web 服务无状态。不要在服务器上维护任何会话。对于身份验证,您可以使用 OAuth 之类的方式单独对每个请求进行身份验证。

【讨论】:

以上是关于使用 Jersey 和 Spring Security 实现 RESTful Web 服务的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot + Jersey

Spring-Boot Jersey:允许 Jersey 提供静态内容

jersey 2.2 和 Spring Security 3 依赖项?

使用 Spring Security 和 Jersey Restful Web 服务进行登录身份验证

Jersey+Spring+Maven(转)

同一应用程序中的 Spring 和 Jersey State 完整和无状态方法