在Authorization Server中,由于对客户端ID的某些操作,需要添加自定义BasicAuthenticationFilter . 大多数实现与 BasicAuthenticationFilter
相同 . 以下是相同的片段,
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) {
...
...
String username = someDecoder(tokens[0]); // Kind of something
...
...
}
我的自定义过滤器放在过滤器链中 BasicAuthenticationFilter
之前 .
http.addFilterBefore(new CustomBasicAuthenticationFilter(authenticationManager(), authenticationEntryPoint()),
BasicAuthenticationFilter.class);
此自定义筛选器非常棒,用户也可以成功进行身份验证 . 但由于BasicAuthenticationFilter仍然存在于链中,此过滤器也会被执行并尝试再次对用户进行身份验证,但由于未操作客户端凭据而失败 . 见BasicAuthenticationFilter-GitHub
所以要从过滤器链中删除/禁用 BasicAuthenticationFilter
,然后按SOQ,建议使用 BeanPostProcessor
. 但是在Spring Boot过滤器链中注册了bean名称 springSecurityFilterChain 和类 FilterChainProxy . 作为FilterChainProxy-GitHub返回 SecurityFilterChain
的不可修改列表 . 所以它的下一个不可能改变 FilterChainProxy
bean .
那么如何实现从Spring Security Filter链中删除/禁用 BasicAuthenticationFilter
或任何其他过滤器的相同或任何其他方式 .
使用Spring Boot 1.5.1和Spring Security OAuth2 2.0.12
1 回答
我想你可以用另外一个答案:https://stackoverflow.com/a/28428154/2648577
---- >>>这是一个复制/粘贴(更改过滤器名称) .