2017-10-16 108 views
0

我正在使用Spring Boot 1.5.7,沒有 Spring Security。我的目標是試驗嵌入式tomcat容器並啓用基本的authn。使用基本身份驗證配置Spring Boot的嵌入式tomcat容器

以下是我有:

@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 Boot以編程方式實現,還是隻能通過web.xml之類的東西來完成? PS:在Stackoverflow上有許多帖子詳細說明涉及Spring Security項目的各種解決方案和替代方案。我應該在這裏再次強調,我想知道是否有辦法解決這個問題,而不涉及該圖書館。

回答

0

你的配置還是不錯的,但你需要一個基本的認證閥添加到工廠:

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

精彩。非常感謝您的洞察力。 –

相關問題