安全

本节讨论使用 Spring Boot 时的安全问题,包括使用 Spring Boot 时产生的问题。spring-doc.cadn.net.cn

想了解更多关于 Spring Security 的信息,请参见 Spring Security 项目页面spring-doc.cadn.net.cn

关闭Spring Boot安全配置

如果你定义一个@Configuration其中安全滤网链在你的应用中,这个作会关闭 Spring Boot 中的默认网页应用安全设置。spring-doc.cadn.net.cn

更改 UserDetailsService 并添加用户账户

如果你提供@Bean类型认证管理器,认证提供者用户详情服务,默认@BeanInMemoryUserDetailsManager没有被创造出来。 这意味着你可以使用Spring Security的完整功能集(比如各种认证选项)。spring-doc.cadn.net.cn

添加用户账户最简单的方法是提供你自己的账户用户详情服务豆。spring-doc.cadn.net.cn

在代理服务器后运行时启用 HTTPS

确保所有主要端点只能通过HTTPS访问,是任何应用的重要任务。 如果你把Tomcat当作servlet容器,那么Spring Boot会添加Tomcat自己的容器远程IpValve如果检测到某些环境设置,会自动检测到,这使你可以依赖HttpServletRequest用于报告其安全性(即使是在处理真实SSL终止的代理服务器的下游)。 标准行为由某些请求头的存在与否决定(x-转发-forx-forwarded-proto),其名称是惯用的,因此应该能支持大多数前端代理。 你可以通过添加一些输入来打开阀门application.properties如下例所示:spring-doc.cadn.net.cn

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-doc.cadn.net.cn

要配置 Spring Security 要求所有(或部分)请求都有一个安全通道,可以考虑添加自己的通道安全滤网链豆子添加以下内容HttpSecurity配置:spring-doc.cadn.net.cn

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()
	}

}