28. 安全
如果Spring Security位于类路径上,那么Web应用程序将默认使用所有HTTP端点上的’basic’身份验证。要向Web应用程序添加方法级安全性,还可以为你想要的设置添加“@EnableGlobalMethodSecurity”。通过点击Spring Security Reference能够找到更多的信息。
‘AuthenticationManager’ 有一个默认用户(用户名为’user’ ,密码随机,在应用程序启动时在INFO级别输出)
Using default security password: 78fa095d-3f4c-48b1-ad50-e24c31d5cf35
Note | |
如果您调整过日志配置,请确保将“org.springframework.boot.autoconfigure.security”日志级别设置为“INFO”,否则将不打印默认密码。 |
您可以通过配置“security.user.password”更改默认密码。更多的属性通过SecurityProperties来获取(属性前缀 “security”)。
默认安全配置在从(在用于Web安全的’SpringBootWebSecurityConfiguration’和非web应用程序中相关用于认证配置的“AuthenticationManagerConfiguration”)那里导入的类“SecurityAutoConfiguration”中实现。你可以添加一个@EnableWebSecurity注解的Bean来关闭默认Web应用程序安全性配置完全(这不会禁用身份验证管理器配置或执行器的安全性)。要定制它,通常使用外部属性和类型为’WebSecurityConfigurerAdapter’的bean(例如,添加基于表单的登录)。您也可以添加一个类型为“AuthenticationManager”的bean来关闭身份验证管理器配置,或者通过将“AuthenticationManagerBuilder”自动注入到“@Configuration”类中的方法来配置全局“AuthenticationManager”。在Spring Boot samples中有几个security应用的常见例子来开始你的旅程。
在web应用中能够开箱即用的基础功能:
- 具有内存存储和单一用户的类型为“AuthenticationManager”的Bean(请参阅为“SecurityProperties.User”的用户属性)。
- 忽略(不安全)带有公共静态资源地址(’/ css / **’,’/ js / **’,’/ images / **’,’/ webjars / **’和’** / favicon.ico) ‘)的路径。
- 其他所有端点的HTTP基础安全。
- 发布到Spring的ApplicationEventPublisher的Security事件(成功和失败的身份验证和拒绝访问)。
- Spring security在默认情况下提供常见的低级功能 (HSTS,XSS,CSRF,缓存)
上述所有的功能都可以通过修改外部属性(security.*)来打开和关闭。要在不更改任何其他自动配置功能的情况下覆盖访问规则,请添加“类型为“WebSecurityConfigurerAdapter”,注解@Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)的@Bean,并配置它以满足您的需要。
Note | |
默认情况下,’WebSecurityConfigurerAdapter’ 将匹配任何路径。如果你不想要完全覆盖Spring Boot自动配置访问规则,您的适配器必须显式配置要覆盖的路径。 |