使用基本身份验证配置Spring Boot的嵌入式tomcat容器

时间:2017-10-16 16:21:45

标签: java tomcat spring-boot

我使用的是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项目的各种解决方案和替代方案。我应该在这里再次强调,我想知道是否有办法在不涉及该库的情况下解决这个问题。

1 个答案:

答案 0 :(得分:0)

您的配置很好,但您需要向工厂添加Basic验证器阀门:

 final TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory();
    tomcat.addContextValves(new BasicAuthenticator());
    tomcat.addContextCustomizers(....