SpringBoot教程-实现使用Spring Security进行基本认证
在之前的步骤中,我们创建了一些资源,但是这些资源还没有被安全保护起来。还没有用户ID和密码来访问这些资源。在这一部分中,我们将实现基本认证。
有多种方法可以对我们的RESTful Web服务进行身份验证。最基本的方法是使用基本认证。在基本认证中,我们在请求中发送用户名和密码。当我们提供用户名和密码时,它允许我们访问资源。
还有其他高级的身份验证形式,如摘要认证,其中会创建密码摘要,并将摘要发送过去,而不会将实际密码发送到服务器。另一种高级的身份验证形式是OAuth(开放授权)或OAuth2身份验证。
让我们看看如何在Web服务中实现基本认证。
步骤1:*打开*pom.xml并添加spring-boot-starter-security。它会自动为我们配置基本安全性。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
步骤2:*重新启动服务器,我们会在日志中得到一个*password。每次服务器启动时,密码都会不同。
步骤3:从日志中复制密码。
步骤4:*打开REST客户端*Postman,发送一个POST请求。我们发送一个POST请求来创建一个用户。
- 提供URI http://localhost:8080/users。
- 点击Body选项卡,选择raw单选按钮。
- 选择媒体类型JSON(application/json)。
- 提供姓名和出生日期。
- 点击Send按钮。
它会返回状态:401 未授权。
步骤5:*在REST客户端*Postman中,点击Authorization选项卡,并执行以下操作:
- 选择身份验证类型 Basic Auth。
- 提供用户名。默认用户名是user。
- 粘贴从日志中复制的密码。
- 点击Send按钮。
它会显示状态:201 已创建。但是有一个缺点,就是当我们重新启动服务器时,密码会不断变化。解决这个问题的方法是在application.properties文件中配置用户名和密码。
application.properties
spring.security.user.name=user
spring.security.user.password=password
现在,返回到Postman,尝试发送一个POST请求,它会返回状态:401 未授权。这是因为我们仍然在使用旧密码。所以我们需要使用在属性文件中配置的新用户名和密码。然后我们会得到状态:201 已创建。