我正在尝试将Tomcat容器安全性添加到Spring Boot应用程序(以利用一些传统的自定义阀门)。使用下面的代码段(从https://github.com/spring-guides/gs-rest-service.git处的示例开始)我预计基本身份验证会启动,但事实并非如此。尝试使用Spring Boot 1.1.6和1.1.7。
“手动”启动嵌入式Tomcat时的相同配置(完全不涉及Boot)按预期工作。
@Bean
public EmbeddedServletContainerCustomizer containerCustomizer(){
return new EmbeddedServletContainerCustomizer() {
@Override
public void customize(ConfigurableEmbeddedServletContainer factory) {
if(factory instanceof TomcatEmbeddedServletContainerFactory){
TomcatEmbeddedServletContainerFactory containerFactory = (TomcatEmbeddedServletContainerFactory) factory;
containerFactory.addContextCustomizers(new TomcatContextCustomizer() {
@Override
public void customize(Context context) {
LoginConfig config = new LoginConfig();
config.setAuthMethod("BASIC");
context.setLoginConfig(config);
context.addSecurityRole("admin");
SecurityConstraint constraint = new SecurityConstraint();
constraint.addAuthRole("admin");
SecurityCollection collection = new SecurityCollection();
collection.addPattern("/*");
constraint.addCollection(collection);
context.addConstraint(constraint);
}
});
}
}
};
}