28. 安全

如果Spring Security在类路径上,那么web应用默认是安全的。Spring Boot依靠Spring Security的内容协商策略,决定是使用httpBasic,还是formLogin。为了给web应用添加方法级别(method-level)的保护,你可以添加@EnableGlobalMethodSecurity并使用想要的设置。其它信息参考Spring Security参考指南

默认的AuthenticationManager只有一个用户。用户名是user,密码随机,会在应用启动时以INFO日志级别打印出来。如下:

Using generated security password: 78fa095d-3f4c-48b1-ad50-e24c31d5cf35

如果你对日志配置进行微调,确保org.springframework.boot.autoconfigure.security类别记录日志级别为INFO,否则默认的密码不会打印出来。

你可以通过提供spring.security.user.namespring.security.user.password,改变用户名和密码。

在web应用中,你默认能得到如下的基本特性:

  • 一个UserDetailsService(如果是WebFlux应用的话,则是ReactiveUserDetailsService)bean,存储在内存中。还有一个用户,用户的密码是生成的(关于这个用户的属性,请查看SecurityProperties.User)。

  • 应用在整个应用上的基于表单的登录或是HTTP Basic security(取决于Content-Type)。如果执行器在类路径上,则包含执行器端点。

  • 一个DefaultAuthenticationEventPublisher,用来发布认证事件。

你可以通过添加一个bean,为它提供一个不同的AuthenticationEventPublisher