相关疑难解决方法(0)

Spring webSecurity.ignoring()不会忽略自定义过滤器

我在Spring 4 MVC + Security + Boot项目中设置了一个自定义身份验证过滤器.过滤器做得很好,现在我想禁用某些URI的安全性(比如/api/**).这是我的配置

@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter{
    @Override
    public void configure(WebSecurity webSecurity) throws Exception {
        webSecurity.ignoring().antMatchers("/api/**");
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
       http.authorizeRequests()
                 .anyRequest().authenticated()
              .and()
                 .addFilterBefore(filter, BasicAuthenticationFilter.class);
    }
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,当我在/ api/...下调用资源时,过滤器仍然被链接.我在我的过滤器中添加了println,并在每次调用时将其写入控制台.你知道我的配置有什么问题吗?

UPDATE

过滤代码:

@Component
public class EAccessAuthenticationFilter extends RequestHeaderAuthenticationFilter {

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        System.out.println("FILTER");
        if(SecurityContextHolder.getContext().getAuthentication() == null){
            //Do my authentication stuff
            PreAuthenticatedAuthenticationToken authentication = new PreAuthenticatedAuthenticationToken(user, credential, authorities); …
Run Code Online (Sandbox Code Playgroud)

java spring spring-mvc spring-security

8
推荐指数
3
解决办法
9609
查看次数

如何仅为一个特殊路径WebSecurityConfigurerAdapter添加过滤器

我们有一个如下所示的配置:

@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();
    }
Run Code Online (Sandbox Code Playgroud)

并且认识到我们FilteredOAuth2AuthenticationProcessingFilter …

java security spring web-services spring-security

7
推荐指数
1
解决办法
2万
查看次数

使用 Spring Actuator 时无法排除 /info 和 /health/{*path}

我正在使用 Spring Actuator(版本 2.2.4.RELEASE)来生成可以正常工作的运行状况检查端点/localhost:8080/my-app/actuator/health

这会生成访问时显示的 3 个端点,/actuator并显示在 Swagger(版本 2)中:

  1. /actuator/health
  2. /actuator/health/{*path}(在我的招摇页面中,这显示为/actuator/health/**
  3. /actuator/info

由于 AWS 的原因,我遇到了问题,health/**想将其删除(我/info也想删除,因为我不需要它)。

我尝试将以下内容添加到我的application.properties文件中:

management.endpoints.web.exposure.exclude=health,info
Run Code Online (Sandbox Code Playgroud)

management.endpoints.jmx.exposure.exclude=health,info
Run Code Online (Sandbox Code Playgroud)

但这没有任何区别(它们仍然会生成)。我曾尝试使用它*来查看是否会强制所有端点消失,但它也不会改变任何内容。

知道如何解决这个问题吗?

编辑1

我发现一个属性文件被另一个文件覆盖。因此,使用以下命令:

management.endpoints.enabled-by-default=false
management.endpoint.health.enabled=true
Run Code Online (Sandbox Code Playgroud)

摆脱/actuator/info端点。但是,我仍然需要摆脱 the/actuator/health/{*path}并保留/actuator/health端点。

swagger spring-boot spring-boot-actuator

5
推荐指数
1
解决办法
6110
查看次数