【发布时间】:2018-01-30 21:38:25
【问题描述】:
我们的配置如下所示:
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
public static final String LOGIN_PATH_EXPRESSION = "/login";
public static final String API_PATH_EXPRESSION = "/api/**/*";
public static final String GLOBAL_PATH_EXPRESSION = "/**/*";
@Autowired
@Qualifier("ssoFilter")
private Filter ssoFilter;
@Autowired
private VerifyingProcessingFilter verifyingProcessingFilter;
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.userDetailsService(username -> new User(username, "", Collections.emptyList()))
.sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and()
.authorizeRequests()
.antMatchers(LOGIN_PATH_EXPRESSION)
.authenticated()
.and()
.httpBasic()
.and()
.authenticationProvider(new SimpleAuthenticationProvider())
.authorizeRequests()
.antMatchers(API_PATH_EXPRESSION).authenticated()
.and()
.addFilterBefore(ssoFilter, BasicAuthenticationFilter.class)
.addFilterAfter(verifyingProcessingFilter, FilteredOAuth2AuthenticationProcessingFilter.class)
.authorizeRequests()
.antMatchers(GLOBAL_PATH_EXPRESSION)
.permitAll()
.and()
.csrf()
.disable();
}
并认识到我们在/logincall 内结束于FilteredOAuth2AuthenticationProcessingFilter,并问自己为什么会发生这种情况。
目标是让ssoFilter 和verifyingProcessingFilter 仅在到达路径api/**/* 的端点时应用。
现在我们必须在过滤器中添加一个 AntMatching 检查,因此它只应用于正确的请求,但我认为应该可以只将它添加到匹配的请求。
有人可以提供一个示例,说明如何将过滤器添加到一个特定的 Ant 匹配路径请求中吗?
【问题讨论】:
标签: java spring web-services security spring-security