我试图保护Actuators
项目中的端点Spring Boot
。但是,使用Spring Security
的准备运行Actuators
配置:
management:
security:
enabled: true
role: ADMINISTRATOR
太简单了我需要使用我们的自定义安全性{Actuators
SSO)插入CAS
。
首先尝试为context-path
添加Actuators
:
management:
security:
enabled: true
role: ADMINISTRATOR
context-path: /management
并更新我的WebSecurityConfigurerAdapter
配置
@Override
protected void configure(HttpSecurity http) throws Exception {
...
http.authorizeRequests()..antMatchers("/management/**").hasRole(Role.ADMINISTRATOR.toString());
...
}
虽然有效,但我必须对Actuators
context-path
进行硬编码,因此当我想要更新management.context-path
时,我必须更新我的安全性。
我知道可以检索management.context-path
的值,但是当值等于""
时如何管理它?
您可以回答我@Autowired
EndpointHandlerMapping
并检索Actuators
个端点的列表...最后,我将复制过去与ManagementSecurityAutoConfiguration.ManagementWebSecurityConfigurerAdapter
相同的逻辑。
此外ManagementSecurityAutoConfiguration.ManagementWebSecurityConfigurerAdapter
@ConditionalOnMissingBean
指向自身但ManagementSecurityAutoConfiguration.ManagementWebSecurityConfigurerAdapter
是内部静态受保护的类,因此无法在不传递参数management.security.enabled=false
的情况下禁用它,这可能很奇怪,因为您的配置说management.security.enabled=false
但实际上端点是安全的......
结论
Actuators
安全答案 0 :(得分:1)
Github上已有待处理的问题。目前Dave Syer proposes:
我认为那里所有代码的复制粘贴实际上是最好的 现在的解决方案(并设置management.security.enabled = false让 引导知道你想自己做。)
我还没有测试是否会抛出运行时异常,但我认为您可以重用NSLog(@"testObject2: %@", testObject2);
并保存大量的复制粘贴操作。至少编译器没有抱怨。
将您的配置类放在项目中的包ManagementWebSecurityConfigurerAdapter
下,并从org.springframework.boot.actuate.autoconfigure
扩展。不要错过ManagementWebSecurityAutoConfiguration.ManagementWebSecurityConfigurerAdapter
的所有注释。这是唯一的复制粘贴操作,因为类注释不能由子类继承。
ManagementWebSecurityConfigurerAdapter
请勿忘记package org.springframework.boot.actuate.autoconfigure;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.annotation.Order;
@Configuration
@ConditionalOnProperty(prefix = "management.security", name = "enabled", matchIfMissing = true)
@Order(ManagementServerProperties.BASIC_AUTH_ORDER)
public class SsoManagementWebSecurityConfigurerAdapter extends ManagementWebSecurityAutoConfiguration.ManagementWebSecurityConfigurerAdapter {
//TODO your SSO configuration
}
中@Import
的配置。