4.1 启用Spring Security

保护Spring应用的第一步就是将Spring Boot security starter依赖添加到构建文件中。在项目的pom.xml文件中,添加如下的<dependency>条目:

1
2
3
4
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>

如果你使用Spring Tool Suite,那么这个过程会更加简单。用鼠标右键点击pom.xml文件并在Spring弹出菜单中选择“Edit Starters”,将会出现“EditSpring Boot Starters”对话框,在“Core”分类中选择“Security”条目,如图4.1所示。

epub_29101559_30

图4.1 使用Spring Tool Suite添加security starter

不管你是否相信,要保护我们的应用,只需添加这项依赖就可以了。当应用启动的时候,自动配置功能会探测到Spring Security出现在了类路径中,因此它会初始化一些基本的安全配置。

如果你想试一下,可以启动应用并尝试访问主页(或者任意页面)。应用将会弹出一个HTTP basic认证对话框并提示你进行认证。要想通过这个认证,你需要一个用户名和密码。用户名为user,而密码则是随机生成的,它会被写入应用的日志文件中。日志条目大致如下所示:

1
Using default security password: 087cfc6a-027d-44bc-95d7-cbb3a798a1ea

假设输入了正确的用户名和密码,你就有权限访问应用了。

看上去保护Spring应用是一项非常简单的任务。现在,Taco Cloud应用已经安全了,我们可以结束本节并进入下一个话题了。但是,在继续下一步之前,我们回顾一下自动配置提供了什么类型的安全性。

通过将security starter添加到项目的构建文件中,我们得到了如下的安全特性:

通过将security starter添加到项目的构建文件中,我们得到了如下的安全特性:

  • 所有的HTTP请求路径都需要认证;
  • 不需要特定的角色和权限;
  • 没有登录页面;
  • 认证过程是通过HTTP basic认证对话框实现的;
  • 系统只有一个用户,用户名为user。

这是一个很好的开端,但是我相信大多数应用(包括Taco Cloud)的安全需求与这些基础的安全特性截然不同。

如果想要确保Taco Cloud应用的安全性,我们还有很多的工作要做。我们至少要配置Spring Security实现如下功能:

  • 通过登录页面来提示用户进行认证,而不是使用HTTP basic对话框;
  • 提供多个用户,并提供一个注册页面,这样Taco Cloud的新用户能够注册进来;
  • 对不同的请求路径,执行不同的安全规则。举例来说,主页和注册页面根本不需要进行认证。

为了满足Taco Cloud的安全需求,我们需要编写一些显式的配置,覆盖掉自动配置为我们提供的功能。我们首先配置一个合适的用户存储,这样就能有多个用户了。