本部分解决有关使用Spring Boot时的安全性的问题,包括因将Spring Security与Spring Boot一起使用而引起的问题。
有关Spring Security的更多信息,请参见Spring Security项目页面

14.1. 关闭Spring Boot安全性配置

如果在应用程序中@Configuration使用WebSecurityConfigurerAdapterSecurityFilterChainBean定义a ,它将关闭Spring Boot中的默认webapp安全设置。

14.2. 更改UserDetailsService并添加用户帐户

如果你提供了一个@Bean类型的AuthenticationManagerAuthenticationProvider或者UserDetailsService,默认@BeanInMemoryUserDetailsManager不创建。这意味着您拥有完整的Spring Security功能集(例如各种身份验证选项)。
添加用户帐户的最简单方法是提供您自己的UserDetailsServicebean。

14.3. 在代理服务器上运行时启用HTTPS

确保所有主要端点仅可通过HTTPS进行访问对于任何应用程序来说都是一项重要的工作。如果您将Tomcat用作servlet容器,则Spring BootRemoteIpValve如果检测到某些环境设置,则会自动添加Tomcat自己的Tomcat ,并且您应该能够依靠TomcatHttpServletRequest报告其是否安全(甚至在处理代理服务器的下游)。真正的SSL终止)。标准行为由某些请求标头(x-forwarded-forx-forwarded-proto)的存在或不存在决定,它们的名称是常规名称,因此它应适用于大多数前端代理。您可以通过向中添加一些条目来打开阀门application.properties,如以下示例所示:
物产
Yaml

  1. server.tomcat.remoteip.remote-ip-header=x-forwarded-for
  2. server.tomcat.remoteip.protocol-header=x-forwarded-proto

(这些属性中的任何一个都会在阀上切换。或者,可以RemoteIpValve通过添加一个TomcatServletWebServerFactorybean来添加。)
要将Spring Security配置为要求所有(或某些)请求都使用安全通道,请考虑添加自己的WebSecurityConfigurerAdapter添加以下HttpSecurity配置:

  1. @Configuration(proxyBeanMethods = false)
  2. public class SslWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdapter {
  3. @Override
  4. protected void configure(HttpSecurity http) throws Exception {
  5. // Customize the application security
  6. http.requiresChannel().anyRequest().requiresSecure();
  7. }
  8. }