Проверка работоспособности Consul проходит через фильтр безопасности Spring

Я создал облачное приложение Spring, используя консул в качестве службы обнаружения/реестра. Я настроил свою весеннюю безопасность следующим образом:

@Override
protected void configure(HttpSecurity http) throws Exception {
    http
            .exceptionHandling()
            .authenticationEntryPoint(myEntryPoint());
    http
            .authorizeRequests()
            .antMatchers("/images/**").permitAll()
            .antMatchers("/modules/**").permitAll()         
            .antMatchers("/vendor/**").permitAll()
            .antMatchers("/views/**").permitAll()
            .antMatchers("/index.html").permitAll()
            .regexMatchers("/health").permitAll()// consul check health
            .antMatchers("/api/**").authenticated()
            .antMatchers("/**").permitAll();

    http    // login configuration
            .addFilterAfter(springSecurityFilter(), BasicAuthenticationFilter.class);

    http    //logout configuration
            .logout()
            .logoutSuccessHandler(logoutHandler());

    http.csrf().disable();

}

Обычно при использовании этого фильтра проверка работоспособности spring consul не проходит мимо этого фильтра (публичный доступ).

Но проверка консула на здоровье консула проходит мимо фильтра.

Если я использую следующий URL-адрес, меня перенаправляют на страницу аутентификации:

 https://localhost:8181/health

person youssef Liouene    schedule 29.01.2016    source источник
comment
Любая причина, почему именно этот Matcher является средством сопоставления регулярных выражений, а не средством сопоставления муравьев?   -  person Ralph    schedule 29.01.2016
comment
И добавить, почему сложность? Только использование antMatchers("/api/**).authenticated().antMatchers("/**").permitAll() даст тот же результат (/** — это все, что также будет охватывать все ранее упомянутые URL-адреса, такие как /images/** и т. д.).   -  person M. Deinum    schedule 29.01.2016
comment
когда я снял .antMatchers(/**).permitAll() у меня тот же результат   -  person youssef Liouene    schedule 29.01.2016
comment
Вы установили порт управления? В Spring boot есть документация по отключению безопасности проверки работоспособности.   -  person spencergibb    schedule 29.01.2016
comment
RTM docs.spring.io/spring-boot/docs/current/reference/html/   -  person spencergibb    schedule 31.01.2016
comment
Endpoints.health.sens уже имеет значение false.   -  person youssef Liouene    schedule 03.02.2016
comment
management.port установлен с ведьмовским портом? порт-приложение или порт-консул-сервис?   -  person youssef Liouene    schedule 03.02.2016


Ответы (1)


По умолчанию консул из spring-cloud-starter-consul-discovery использует /actuator/health для проверки работоспособности.
Когда используется spring-security, следует указать и разрешить этот путь.

Шаги:

  • Разрешите /actuator/health в spring-security, тогда консул сможет выполнить проверку работоспособности.

    e.g

    httpSecurity.csrf().disable() 
        .authorizeRequests().antMatchers("/hello", "/authenticate", "/actuator/health")
        .permitAll().
    
  • Добавьте зависимость исполнительного механизма, если это еще не сделано.

  • Показать конечные точки

    e.g

    management:
      endpoints:
        web:
          exposure:
            include: "*"
    
person user218867    schedule 24.03.2021