我目前正在检查JWT令牌值的所有传入Authorization
标头,以便我可以检查这些令牌是否已列入黑名单。我为此实现了自定义Filter
。
问题是此过滤器正在处理进入服务器的所有请求。我只想处理来到/oauth/token
端点的请求。
是否可以在Spring OAuth2 Auth Server中实现它?
答案 0 :(得分:6)
您的问题有两个方面,一个是筛选顺序,另外两个是仅筛选特定的URL路径。使用FilterRegistrationBean
注入过滤器可以解决这两个问题。见下面的例子。
@Bean
public FilterRegistrationBean securityFilter() {
Filter f = new MySecurityFilter();
FilterRegistrationBean frb = new FilterRegistrationBean(f);
frb.setOrder(SecurityProperties.ACCESS_OVERRIDE_ORDER);
frb.setUrlPatterns(Arrays.asList("/oauth/token"));
return frb;
}
答案 1 :(得分:1)
这是您的过滤器的优先级问题。 添加:
@Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)
对您的WebSecurityConfiguration应该有所帮助。
答案 2 :(得分:1)
如果您的自定义过滤器扩展了public class DraggablePage extends BaseExtendablePage {
@FindBy(xpath = "//a[@href= '#tabs-1']") WebElement defaultFunctionalityTableHeader;
@FindBy(xpath = "//a[@href= '#tabs-3']") WebElement constraintMovementTableHeader;
@FindBy(xpath = "//a[@href= '#tabs-4']") WebElement cursorStyleTableHeader;
...
,则可以覆盖OncePerRequestFilter
方法。
shouldNotFilter
来自Doc
可以在子类中重写以进行自定义过滤控制,返回true以避免过滤给定的请求。