Spring Boot将HTTP重定向到HTTPS

对于基于Spring Boot" title="Spring Boot">Spring Boot的应用程序,我在application.properties上配置了ssl属性,请在此处查看我的配置:

server.port=8443

server.ssl.key-alias=tomcat

server.ssl.key-password=123456

server.ssl.key-store=classpath:key.p12

server.ssl.key-store-provider=SunJSSE

server.ssl.key-store-type=pkcs12

我在Application.class上添加了连接,例如

@Bean

public EmbeddedServletContainerFactory tomcatEmbeddedServletContainerFactory() {

final TomcatEmbeddedServletContainerFactory factory = new TomcatEmbeddedServletContainerFactory();

factory.addAdditionalTomcatConnectors(this.createConnection());

return factory;

}

private Connector createConnection() {

final String protocol = "org.apache.coyote.http11.Http11NioProtocol";

final Connector connector = new Connector(protocol);

connector.setScheme("http");

connector.setPort(9090);

connector.setRedirectPort(8443);

return connector;

}

但是当我尝试以下方法时

http://127.0.0.1:9090/

重定向到

https://127.0.0.1:8443/

不执行。谁遇到过类似的问题?

回答:

为了使Tomcat执行重定向,您需要使用一个或多个安全约束对其进行配置。您可以通过Context使用TomcatEmbeddedServletContainerFactory子类对进行后期处理来实现。

例如:

TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory() {

@Override

protected void postProcessContext(Context context) {

SecurityConstraint securityConstraint = new SecurityConstraint();

securityConstraint.setUserConstraint("CONFIDENTIAL");

SecurityCollection collection = new SecurityCollection();

collection.addPattern("/*");

securityConstraint.addCollection(collection);

context.addConstraint(securityConstraint);

}

};

由于CONFIDENTIAL/*,这将导致Tomcat将每个请求重定向到HTTPS。如果需要对什么是重定向和不重定向进行更多控制,则可以配置多个模式和多个约束。

以上是 Spring Boot将HTTP重定向到HTTPS 的全部内容, 来源链接: utcz.com/qa/423417.html

回到顶部