安全
本节讨论使用 Spring Boot 时的安全问题,包括使用 Spring Boot 时产生的问题。
想了解更多关于 Spring Security 的信息,请参见 Spring Security 项目页面。
关闭Spring Boot安全配置
如果你定义一个@Configuration其中安全滤网链在你的应用中,这个作会关闭 Spring Boot 中的默认网页应用安全设置。
在代理服务器后运行时启用 HTTPS
确保所有主要端点只能通过HTTPS访问,是任何应用的重要任务。
如果你把Tomcat当作servlet容器,那么Spring Boot会添加Tomcat自己的容器远程IpValve如果检测到某些环境设置,会自动检测到,这使你可以依赖HttpServletRequest用于报告其安全性(即使是在处理真实SSL终止的代理服务器的下游)。
标准行为由某些请求头的存在与否决定(x-转发-for和x-forwarded-proto),其名称是惯用的,因此应该能支持大多数前端代理。
你可以通过添加一些输入来打开阀门application.properties如下例所示:
-
Properties
-
YAML
server.tomcat.remoteip.remote-ip-header=x-forwarded-for
server.tomcat.remoteip.protocol-header=x-forwarded-proto
server:
tomcat:
remoteip:
remote-ip-header: "x-forwarded-for"
protocol-header: "x-forwarded-proto"
(这些属性的存在会触发阀门。
或者,你也可以添加远程IpValve通过定制TomcatServletWebServerFactory使用WebServerFactoryCustomizer豆子。)
要配置 Spring Security 要求所有(或部分)请求都有一个安全通道,可以考虑添加自己的通道安全滤网链豆子添加以下内容HttpSecurity配置:
-
Java
-
Kotlin
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.Customizer;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.web.SecurityFilterChain;
@Configuration
public class MySecurityConfig {
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) {
// Customize the application security ...
http.redirectToHttps(Customizer.withDefaults());
return http.build();
}
}
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import org.springframework.security.config.annotation.web.builders.HttpSecurity
import org.springframework.security.web.SecurityFilterChain
@Configuration
class MySecurityConfig {
@Bean
fun securityFilterChain(http: HttpSecurity): SecurityFilterChain {
// Customize the application security ...
http.redirectToHttps { }
return http.build()
}
}