Spring Boot Actuator-无法禁用/ info端点
我尝试在application.yml
配置文件中为生产环境禁用所有执行器端点:
endpoints.enabled: false
它适用于/ info以外的所有端点。如何关闭给定环境的所有端点?
我正在从事的项目也担任Eureka客户。在Spring Cloud Netflix的文档的“ 状态页和运行状况指示器”部分
(http://cloud.spring.io/spring-cloud-netflix/spring-cloud-
netflix.html)中,它说“ Eureka实例默认为” / info”和“ /健康”分别。
有什么解决方案可以禁用这些端点吗?
我可以使用禁用 / health 端点endpoints.enabled: false
,但不能禁用 / info 端点。
回答:
最后,我设法解决了我的问题。我仅在执行器中启用了/ info和/ health端点。为了只允许具有ADMIN角色的用户访问/
info端点,我需要混合执行器管理安全性和spring安全性配置。
所以我的 application.yml 看起来像这样:
endpoints.enabled: falseendpoints:
info.enabled: true
health.enabled: true
management.security.role: ADMIN
像这样的spring安全配置(我需要更改 ManagementSecurityConfig的 顺序以具有更高的优先级):
@Configuration@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConfiguration {
@Configuration
protected static class AuthenticationSecurity extends GlobalAuthenticationConfigurerAdapter {
@Autowired
private AuthenticationProvider authenticationProvider;
public AuthenticationSecurity() {
super();
}
@Override
public void init(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication().withUser("admin").password("secret").roles("ADMIN");
}
}
@Configuration
@Order(Ordered.HIGHEST_PRECEDENCE + 2)
public static class ManagementSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable()
.requestMatchers()
.antMatchers("/info/**")
.and()
.authorizeRequests()
.anyRequest().hasRole("ADMIN")
.and()
.httpBasic();
}
}
@Configuration
public static class ApiWebSecurityConfigurationAdapter extends WebSecurityConfigurerAdapter {
protected void configure(HttpSecurity http) throws Exception {
// API security configuration
}
}
}
以上是 Spring Boot Actuator-无法禁用/ info端点 的全部内容, 来源链接: utcz.com/qa/435378.html