|
此版本仍在开发中,尚未视为稳定版。如需最新稳定版本,请使用 Spring Boot 4.0.4! |
Jersey
使用 Spring Security 保护 Jersey 端点
Spring Security 可以用于保护基于 Jersey 的 Web 应用程序,其方式与保护基于 Spring MVC 的 Web 应用程序非常相似。
然而,如果你想在 Jersey 中使用 Spring Security 的方法级安全功能,则必须将 Jersey 配置为使用 setStatus(int) 而不是 sendError(int)。
这样可以防止 Jersey 在 Spring Security 有机会向客户端报告身份验证或授权失败之前就提交响应。
jersey.config.server.response.setStatusOverSendError 属性必须在应用程序的 ResourceConfig Bean 上设置为 true,如下例所示:
import java.util.Collections;
import org.glassfish.jersey.server.ResourceConfig;
import org.springframework.stereotype.Component;
@Component
public class JerseySetStatusOverSendErrorConfig extends ResourceConfig {
public JerseySetStatusOverSendErrorConfig() {
register(Endpoint.class);
setProperties(Collections.singletonMap("jersey.config.server.response.setStatusOverSendError", true));
}
}
将 Jersey 与其他 Web 框架结合使用
要在另一个 Web 框架(例如 Spring MVC)旁边使用 Jersey,应对其进行配置,使其允许其他框架处理它无法处理的请求。
首先,通过将 spring.jersey.type 应用程序属性配置为值 filter,将 Jersey 配置为使用过滤器而非 Servlet。
其次,配置您的 ResourceConfig 以转发原本会导致 404 的请求,如下例所示。
import org.glassfish.jersey.server.ResourceConfig;
import org.glassfish.jersey.servlet.ServletProperties;
import org.springframework.stereotype.Component;
@Component
public class JerseyConfig extends ResourceConfig {
public JerseyConfig() {
register(Endpoint.class);
property(ServletProperties.FILTER_FORWARD_ON_404, true);
}
}