如果Spring Security位于类路径上,则默认情况下Web应用程序将在所有HTTP端点上使用“基本”身份验证。要向一个Web应用程序添加方法级的安全性,您还可以添加带有您预期设置的@EnableGlobalMethodSecurity。其他信息可以在Spring Security指南中找到。
默认的AuthenticationManager有一个用户(用户名“user”以及随机密码,密码在应用程序启动时以INFO级别打印)
Using default security password: 78fa095d-3f4c-48b1-ad50-e24c31d5cf35
如果您对日志配置进行了微调,请确保将
org.springframework.boot.autoconfigure.security类别设置为记录INFO级信息,否则不会打印默认密码。
您可以通过提供security.user.password来更改密码。该属性和其他有用的属性通过SecurityProperties(以“security”为前缀的属性)外部化。
默认的安全配置在SecurityAutoConfiguration和从那里导入的类(用于Web安全的SpringBootWebSecurityConfiguration和用于身份验证配置的AuthenticationManagerConfiguration,后者也和非Web程序有关)中实现。要完全关闭默认Web应用程序的安全配置,您可以添加一个带有@EnableWebSecurity的bean(这不会使身份验证管理器配置或Actuator的安全性失效)。要对它进行自定义,通常使用外部属性和WebSecurityConfigurerAdapter类型的bean(例如,增加基于表单的登录)。
如果添加
@EnableWebSecurity并禁用Actuator安全性,除非添加了自定义的WebSecurityConfigurerAdapter,不然整个应用程序会获得一个默认的基于表单的登录。
要同时关闭身份验证管理器的配置,您可以添加一个AuthenticationManager类型的Bean,或者通过将AuthenticationManagerBuilder自动装配到一个@Configuration类中的方法来配置全局AuthenticationManager。Spring Boot示例中有几个安全相关的应用程序可以帮助您开始使用常见的用例。
Web应用程序中开箱即用的基本功能包括:
- 具有内存存储和单一用户的
AuthenticationManagerbean(用户的属性请参阅SecurityProperties.User) - 忽略到公共静态资源位置的(不安全)路径(
/css/**、/js/**、/images/**、/webjars/**以及**/favicon.ico) - 对所有其他端点的HTTP基本身份验证
- 安全事件被发布到Spring的
ApplicationEventPublisher(成功和不成功的身份验证及被拒绝的访问) - 默认情况下,Spring Security提供的常见低级别功能(HSTS、XSS、缓存)处于启用状态
- 默认情况下禁用跨站点请求伪造(CSRF)检查
以上所有功能都可以使用外部属性(security.*)打开、关闭或修改。要在不更改其他任何自动配置功能的情况下覆盖访问规则,请添加一个带有@Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)类型为WebSecurityConfigurerAdapter的@Bean,并对其进行配置以满足您的需要。
默认情况下,
WebSecurityConfigurerAdapter将匹配任何路径。如果您不想完全覆盖Spring Boot的自动配置访问规则,那么您的适配器必须显式配置您想要覆盖的路径。