Spring boot 2.1.x как защитить конечные точки привода с помощью базовой аутентификации - PullRequest
0 голосов
/ 15 февраля 2019

Я пытаюсь создать приложение с пружинной загрузкой и хотел использовать функции Actuator, но я хочу защитить конечные точки Actuator / health, / shutdown и т. Д. У меня есть следующие конфигурации, которые, похоже, не работают.То есть, приложение никогда не запрашивает учетные данные, или когда сообщение от человека почты не дает 403. Я пробовал различные способы, даже тот, который из весенней документации.Может ли кто-нибудь, пожалуйста, помогите с этим.Опять же, это весенняя загрузка 2.1.x.Я знаю, что есть конфигурация, которая может быть сделана в application.yml в предыдущей версии spring

@Configuration
public class ActuatorSecurity extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {

        http.authorizeRequests()
                .requestMatchers(EndpointRequest.to(ShutdownEndpoint.class, InfoEndpoint.class, HealthEndpoint.class,
                        MetricsEndpoint.class))
                .hasRole("ENDPOINT_ADMIN").requestMatchers(PathRequest.toStaticResources().atCommonLocations())
                .authenticated().and().httpBasic();
    }

application.yml

spring:
  security:
    user:
      name: admin
      password: admin
      roles:
      - ENDPOINT_ADMIN

management:   
  endpoints:  
    web:
      exposure:
        include: "*"
  endpoint:
    shutdown:
      enabled: true
    health:
      show-details: when-authorized
      roles:
      - ENDPOINT_ADMIN
    mappings:
      enabled: true

1 Ответ

0 голосов
/ 15 февраля 2019

Этот код может служить вам ориентиром для достижения BasicAuth для конечных точек привода Spring Boot 2.X.Это не точный код.При расширении WebSecurityConfigurerAdapter необходимо настроить AuthenticationManagerBuilder для назначения ролей и паролей для ролей.Здесь я использую кодировщик паролей «noop», вы можете использовать другой для обеспечения большей безопасности.

protected void configure(AuthenticationManagerBuilder auth) throws Exception {

                auth.inMemoryAuthentication().withUser("ROLE_USER").password("{noop}" + "USER_PWD).roles("USER").and()
                .withUser("ROLE_ADMIN").password("{noop}" + "ADMIN").roles("ADMIN", "USER");
    }

После настройки AuthenticationManagerBuilder настройте HttpSecurity, отключив csrf.Приведенный ниже код требует аутентификации только для метрик с использованием любой роли.Вы можете настроить в соответствии с конечными точками, которые вам нужны для аутентификации.Убедитесь, что вы исключаете базовый URL Rest Controller из этой аутентификации.Вы можете вставить authorizeRequests (). AntMatchers ("/ baseurl"). AllowAll (). И () в приведенный ниже код конфигурации для достижения этой цели.Ниже приведен пример настройки HttpSecurity.

protected void configure(Httpsecurity http){

http.csrf().authorizeRequests().
requestMatchers(EndpointRequest.to(MetricsEndpoint.class))
.hasANyRole("ADMIN","USER").and().authorizeRequests().and().httpBasic();

}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...