如何在Spring Boot应用中配置Spring Security?

18-08-23 banq
         

为了使用Spring Security,我们需要将spring-boot-starter-security放入Maven或Gradle配置文件中,通过这样方法将Spring Security放入到了类路径classpath中后,Spring Boot Web应用会默认使用基本身份验证进行自动保护,服务器启动时将在控制台中显示的默认用户名为“user”和随机密码(注意翻滚查看),它们可用于登录和身份验证。密码是随机的,并在重新启动服务器时更改。默认情况下,spring使用名为“user”的单个用户进行内存中身份验证。

1.要在Spring Boot应用程序中启用Spring Security,只需使用以下Spring Boot启动程序:

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-security</artifactId>
</dependency> 
<p>

2. 更改默认密码,Spring Boot在application.properties提供security.user.password配置需要的属性,如下所示:

security.user.password= jdon
<p>

现在我们可以使用user / jdon登录应用程序了。其他安全属性可以在application.properties使用security.*前缀的配置来更改。

security.basic.enabled:启用基本身份验证。默认值为true。 
security.basic.path:它配置应用安全性的路径。我们需要提供逗号分隔的路径。 
security.enable-csrf:它启用CSRF。默认值为false。 
security.require-ssl:启用和禁用SSL。默认值为false。 
security.sessions:默认值为无状态。值可以always, never,if_required,无stateless。 
security.user.name:配置用户名。默认用户是user。 
security.user.password:配置密码。 
security.user.role:它配置角色。默认角色是USER。 
<p>

3.如果x想微调日志记录配置,然后打印默认的随机密码,需要配置application.properties中日志水平为INFO:

logging.level.org.springframework.boot.autoconfigure.security= INFO

4. 默认静态路径不加密,例如/css/**,/js/**,/images/**,/webjars/**和**/favicon.ico。

5. Spring Security中默认提供HSTS,XSS,CSRF,缓存等功能。

如果我们想使用数据库中用户名和密码,那么我们需要使用UserDetailsService;要控制与安全相关的配置,我们可以创建一个安全配置类WebSecurityConfigurerAdapter的实现,然后扩展重载其configure()方法。这个类要用@Configuration和注释@EnableWebSecurity;如果我们要启用方法级安全性,则需使用注释配置类@EnableGlobalMethodSecurity。