本部分解决有关使用Spring Boot时的安全性的问题,包括因将Spring Security与Spring Boot一起使用而引起的问题。
有关Spring Security的更多信息,请参见Spring Security项目页面。
14.1. 关闭Spring Boot安全性配置
如果在应用程序中@Configuration
使用WebSecurityConfigurerAdapter
或SecurityFilterChain
Bean定义a ,它将关闭Spring Boot中的默认webapp安全设置。
14.2. 更改UserDetailsService并添加用户帐户
如果你提供了一个@Bean
类型的AuthenticationManager
,AuthenticationProvider
或者UserDetailsService
,默认@Bean
为InMemoryUserDetailsManager
不创建。这意味着您拥有完整的Spring Security功能集(例如各种身份验证选项)。
添加用户帐户的最简单方法是提供您自己的UserDetailsService
bean。
14.3. 在代理服务器上运行时启用HTTPS
确保所有主要端点仅可通过HTTPS进行访问对于任何应用程序来说都是一项重要的工作。如果您将Tomcat用作servlet容器,则Spring BootRemoteIpValve
如果检测到某些环境设置,则会自动添加Tomcat自己的Tomcat ,并且您应该能够依靠TomcatHttpServletRequest
报告其是否安全(甚至在处理代理服务器的下游)。真正的SSL终止)。标准行为由某些请求标头(x-forwarded-for
和x-forwarded-proto
)的存在或不存在决定,它们的名称是常规名称,因此它应适用于大多数前端代理。您可以通过向中添加一些条目来打开阀门application.properties
,如以下示例所示:
物产
Yaml
server.tomcat.remoteip.remote-ip-header=x-forwarded-for
server.tomcat.remoteip.protocol-header=x-forwarded-proto
(这些属性中的任何一个都会在阀上切换。或者,可以RemoteIpValve
通过添加一个TomcatServletWebServerFactory
bean来添加。)
要将Spring Security配置为要求所有(或某些)请求都使用安全通道,请考虑添加自己的WebSecurityConfigurerAdapter
添加以下HttpSecurity
配置:
@Configuration(proxyBeanMethods = false)
public class SslWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
// Customize the application security
http.requiresChannel().anyRequest().requiresSecure();
}
}