我使用的是Spring Boot 1.5.7, 没有 Spring Security。我的目标是试验嵌入式tomcat容器并启用基本的authn。
这就是我所拥有的:
@Bean
public EmbeddedServletContainerFactory servletContainer() {
final TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory();
tomcat.addContextCustomizers(ctx -> {
String AUTH_ROLE = "admin";
LoginConfig config = new LoginConfig();
config.setAuthMethod("BASIC");
ctx.setLoginConfig(config);
ctx.addSecurityRole(AUTH_ROLE);
SecurityConstraint constraint = new SecurityConstraint();
constraint.addAuthRole(AUTH_ROLE);
SecurityCollection collection = new SecurityCollection();
collection.addPattern("/*");
constraint.addCollection(collection);
ctx.addConstraint(constraint);
});
return tomcat;
}
这似乎没有任何效果。 Spring编程是否可以使用Spring Boot,或者只能通过web.xml这样做?
PS:Stackoverflow上有许多帖子详细介绍了涉及Spring Security项目的各种解决方案和替代方案。我应该在这里再次强调,我想知道是否有办法在不涉及该库的情况下解决这个问题。
答案 0 :(得分:0)
您的配置很好,但您需要向工厂添加Basic验证器阀门:
final TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory();
tomcat.addContextValves(new BasicAuthenticator());
tomcat.addContextCustomizers(....