Spring 启动 HTTPS 和重定向
Spring Boot HTTPS and redirect
我正在使用 Spring STS 和 Pivotal 3.1 服务器(端口 8080 和 8443)
我在运行的盒子上还有一个单独的 tomcat 7 实例
在 80 和 443 上。
我使用 Spring Boot 1.2.4 版本。
我希望应用程序自动重定向所有请求
到 https - 我没有使用嵌入式 tomcat 实例。
以前使用 spring 我在 web.xml 中有标签
它工作得很好。
请问我如何使用 spring 引导实现相同的效果?
谢谢,
阿德里安
如果您使用的是 Spring 安全性,您可以通过将 security.require_ssl=true
添加到 application.properties 来实现,如 the Spring Boot reference 中所述。如果您自定义 Spring 安全配置,那么您将需要这样的配置:
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
// ...
.requiresChannel()
.anyRequest().requiresSecure();
}
}
因为您没有使用 Spring 安全性并且您使用的是 war 文件,最简单的方法是创建一个 web.xml,其中包含以下内容:
src/main/webapp/WEB-INF/web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
<security-constraint>
<web-resource-collection>
<web-resource-name>all</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
</web-app>
使用 web.xml 是必要的,因为无法以编程方式设置整个应用程序的安全约束。您可以在 How to programmatically setup a <security-constraint> in Servlets 3.x?
中找到一些详细信息
我正在使用 Spring STS 和 Pivotal 3.1 服务器(端口 8080 和 8443) 我在运行的盒子上还有一个单独的 tomcat 7 实例 在 80 和 443 上。
我使用 Spring Boot 1.2.4 版本。
我希望应用程序自动重定向所有请求 到 https - 我没有使用嵌入式 tomcat 实例。
以前使用 spring 我在 web.xml 中有标签 它工作得很好。
请问我如何使用 spring 引导实现相同的效果?
谢谢, 阿德里安
如果您使用的是 Spring 安全性,您可以通过将 security.require_ssl=true
添加到 application.properties 来实现,如 the Spring Boot reference 中所述。如果您自定义 Spring 安全配置,那么您将需要这样的配置:
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
// ...
.requiresChannel()
.anyRequest().requiresSecure();
}
}
因为您没有使用 Spring 安全性并且您使用的是 war 文件,最简单的方法是创建一个 web.xml,其中包含以下内容:
src/main/webapp/WEB-INF/web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
<security-constraint>
<web-resource-collection>
<web-resource-name>all</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
</web-app>
使用 web.xml 是必要的,因为无法以编程方式设置整个应用程序的安全约束。您可以在 How to programmatically setup a <security-constraint> in Servlets 3.x?
中找到一些详细信息