Spring boot Spring boot 2.1.x如何使用basic auth固定致动器端点

Spring boot Spring boot 2.1.x如何使用basic auth固定致动器端点,spring-boot,spring-security,spring-boot-actuator,Spring Boot,Spring Security,Spring Boot Actuator,我正在尝试构建一个spring boot应用程序,并希望利用执行器功能,但我希望确保执行器/健康/关机等的端点。我有以下配置,但似乎不起作用。也就是说,应用程序从不提示输入凭据,或者当PostMan点击时,不会给出403。我尝试了各种方法,甚至是spring文档中的方法。谁能帮我一下吗。这也是SpringBoot2.1.x。我知道在以前版本的spring中,可以在application.yml中进行配置 @Configuration public class ActuatorSecurity e

我正在尝试构建一个spring boot应用程序,并希望利用执行器功能,但我希望确保执行器/健康/关机等的端点。我有以下配置,但似乎不起作用。也就是说,应用程序从不提示输入凭据,或者当PostMan点击时,不会给出403。我尝试了各种方法,甚至是spring文档中的方法。谁能帮我一下吗。这也是SpringBoot2.1.x。我知道在以前版本的spring中,可以在application.yml中进行配置

@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

这段代码可以作为实现SpringBoot2.X执行器端点的BasicAuth的参考。这不是确切的代码。在扩展WebSecurity配置适配器时,您必须配置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后,现在通过禁用csrf配置HttpSecurity。下面的代码要求仅使用任何角色对度量进行身份验证。您可以根据需要进行身份验证的端点进行自定义。确保从该身份验证中排除Rest控制器的基本url。您可以在下面的配置代码中插入
authorizeRequests().antMatchers(“/baseurl”).permitAll()和()。下面是一个配置HttpSecurity的示例

protected void configure(Httpsecurity http) {
    http.csrf().authorizeRequests().requestMatchers(EndpointRequest.to(MetricsEndpoint.class))
    .hasANyRole("ADMIN","USER").and().authorizeRequests().and().httpBasic();
}