弹簧启动执行器/关闭端点禁止

时间:2018-06-04 21:28:16

标签: spring-boot curl spring-boot-actuator

我的第一次使用Spring Boot应用程序时执行器没有安全保护,因此很容易通过/执行器/关闭端点远程关闭。最近,我使用Spring安全保护了我的执行器,它已经工作了。现在我需要提供http基本凭据来访问端点,但现在curl对/ actuator / shutdown端点的调用失败并出现Forbidden错误。我必须在某处配置不正确。

我的卷曲命令:

  

curl -XPOST -u执行器:密码http://host:port/actuator/shutdown -k

我能够调用其他端点,似乎只禁止关闭端点。

我的配置:

management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=always
management.info.git.mode=full
management.endpoint.shutdown.enabled=true
management.server.port=8081
spring.security.user.name=actuator
spring.security.user.roles=ACTUATOR
spring.security.user.password=password

编辑:

    @Configuration
public static class ActuatorWebSecurityConfigurationAdapter extends WebSecurityConfigurerAdapter {
    protected void configure(HttpSecurity http) throws Exception {
        http.requestMatcher(EndpointRequest.toAnyEndpoint()).authorizeRequests()
                .anyRequest().hasRole("ACTUATOR")
                .and()
                .httpBasic();
    }
}

2 个答案:

答案 0 :(得分:2)

解决方案是在WebSecurityConfigureAdapter配置方法中禁用csrf。

http.csrf().disable();

答案 1 :(得分:0)

我有同样的问题。无论我做什么,执行器/停机都将被禁止返回。上面带有http.csrf().disable();的答案是唯一有效的方法。请找到参考:https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-security-csrf

package com.broadridge.services.calendar2.security;

import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.boot.actuate.autoconfigure.security.servlet.EndpointRequest;

@Configuration
public class ApiSecurity extends WebSecurityConfigurerAdapter {

@Override
protected void configure(HttpSecurity http) throws Exception {
    http.csrf().disable().
        requestMatcher(EndpointRequest.toAnyEndpoint()).authorizeRequests().anyRequest().permitAll();
}

}
相关问题