Java 具有容器安全性的Spring Boot
我最近在一些项目中使用SpringBoot,我非常喜欢它。对于一个新项目,我们希望使用tomcat-users.xml进行真正基本的身份验证,但如果没有web.xml文件,我想不出如何使用该机制。大多数使用SpringBoot的人似乎都在使用SpringSecurity 可以将tomcat容器安全性与spring boot java配置模型一起使用吗?我知道这打破了runnable jar范式,但我们计划无论如何都将其部署为一场战争。来自: WEB-INF/WEB.xml和WebApplicationInitializer的使用并不相互排斥;例如,web.xml可以注册一个servlet,而WebApplicationInitializer可以注册另一个servlet。初始值设定项甚至可以通过ServletContext.getServletRegistration(String)等方法修改在web.xml中执行的注册。但是,如果应用程序中存在WEB-INF/WEB.xml,则其版本属性必须设置为“3.0”或更高,否则servlet容器将忽略ServletContainerInitializer引导 因此,我用Java 具有容器安全性的Spring Boot,java,spring,tomcat,spring-boot,Java,Spring,Tomcat,Spring Boot,我最近在一些项目中使用SpringBoot,我非常喜欢它。对于一个新项目,我们希望使用tomcat-users.xml进行真正基本的身份验证,但如果没有web.xml文件,我想不出如何使用该机制。大多数使用SpringBoot的人似乎都在使用SpringSecurity 可以将tomcat容器安全性与spring boot java配置模型一起使用吗?我知道这打破了runnable jar范式,但我们计划无论如何都将其部署为一场战争。来自: WEB-INF/WEB.xml和WebApplicat
WebApplicationInitializer
(SpringBootServletInitializer
扩展WebApplicationInitializer
)和web.xml
解决了这个问题
Spring引导Java配置类:
@SpringBootApplication
public class MyApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(MyApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
//...
}
web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
metadata-complete="false" version="3.0">
<display-name>My Awesome Application</display-name>
<security-constraint>
<web-resource-collection>
<web-resource-name>My Awesome Resource Name</web-resource-name>
<url-pattern>/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
<http-method>PUT</http-method>
<http-method>DELETE</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>myawesomerole</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
</login-config>
</web-app>
我很棒的应用程序
我最棒的资源名
/*
得到
邮递
放
删除
看看哪里有一个以编程方式配置用户的示例。这是关于以编程方式设置用户的重要信息,但它不包括如何使用容器安全性保护url资源,这是我缺少的部分。