Jersey

使用 Spring Security 保護 Jersey 端點

Spring Security 可用於保護基於 Jersey 的 Web 應用程式,其方式與保護基於 Spring MVC 的 Web 應用程式的方式大致相同。但是,如果你想將 Spring Security 的方法級安全性與 Jersey 一起使用,則必須將 Jersey 配置為使用 setStatus(int) 而不是 sendError(int)。這可以防止 Jersey 在 Spring Security 有機會向客戶端報告身份驗證或授權失敗之前提交響應。

應用程式的 ResourceConfig bean 上必須將 jersey.config.server.response.setStatusOverSendError 屬性設定為 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 框架一起使用

要將 Jersey 與另一個 Web 框架(例如 Spring MVC)一起使用,應將其配置為允許其他框架處理其無法處理的請求。首先,透過將 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);
	}

}
© . This site is unofficial and not affiliated with VMware.