在之前的步骤中,我们创建了一些资源,但是这些资源还没有被安全保护起来。还没有用户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。每次服务器启动时,密码都会不同。

restful-web-services-basic-authentication-with-spring-security.png

步骤3:从日志中复制密码。

步骤4:*打开REST客户端*Postman,发送一个POST请求。我们发送一个POST请求来创建一个用户。

  • 提供URI http://localhost:8080/users。
  • 点击Body选项卡,选择raw单选按钮。
  • 选择媒体类型JSON(application/json)。
  • 提供姓名和出生日期。
  • 点击Send按钮。

它会返回状态:401 未授权
restful-web-services-basic-authentication-with-spring-security2.png

步骤5:*在REST客户端*Postman中,点击Authorization选项卡,并执行以下操作:

  • 选择身份验证类型 Basic Auth。
  • 提供用户名。默认用户名是user。
  • 粘贴从日志中复制的密码。
  • 点击Send按钮。

restful-web-services-basic-authentication-with-spring-security3.png

它会显示状态:201 已创建。但是有一个缺点,就是当我们重新启动服务器时,密码会不断变化。解决这个问题的方法是在application.properties文件中配置用户名和密码。

application.properties

spring.security.user.name=user  
spring.security.user.password=password  

现在,返回到Postman,尝试发送一个POST请求,它会返回状态:401 未授权。这是因为我们仍然在使用旧密码。所以我们需要使用在属性文件中配置的新用户名和密码。然后我们会得到状态:201 已创建

restful-web-services-basic-authentication-with-spring-security4.png

标签: spring, Spring教程, Spring语言学习, Spring框架, Spring框架教程, Spring框架高级教程, spring boot, spring boot入门教程, spring boot学习教程, spring boot下载, spring boot框架入门, spring boot面试题, spring boot笔试题, spring boot学习指南, spring boot技术