Spring Security:如何在Postman中优雅地测试后端API(前后端分离)

时间:2023-02-14 17:22:20

前言

  在Postman中可以编写和执行自动化测试,使用 JavaScript 编写基本的 API 测试,*编写任何用于自动化测试的测试方案。

在POSTMAN中读取Cookie值

  1. 我们需要向“ /doLogin”Web API 发送请求以接收用户详细信息以登入系统,但我们不能直接发送请求。

  2. 我们需要发送一个登录请求(具有有效的凭据)以接收令牌作为 Cookie 值 ,然后将其设置为“环境变量”。

  3. 最后,我们将在请求标头中使用“环境变量” 将授权的请求发送到“/doLogin”Web API。

具体流程

  1. 准备正确的登录表单,即用户名和密码是有效的,发送请求给Spring Security后端应用。此时请求没有带有令牌,后端检查这个请求没有带有令牌token,就会利用 CookieCsrfTokenRepository 来生成并返回一个 Token 放进 Cookie 中并返回给发送请求的 Postman。

Spring Security:如何在Postman中优雅地测试后端API(前后端分离)

  2. 如下面的截图所示,我们收到了名为 'XSRF-TOKEN' 的 Cookie,这是我们的令牌,我们需要以编程方式(使用JavaScript)从 Tests 测试编辑器中读取该令牌并将其设置为 Environment 变量,如以下快照所示:(服务端的 response 的 body 内容是 Spring Security 自动生成的登录表单页面,带有 _csrf 令牌参数,这里就不截图了)

Spring Security:如何在Postman中优雅地测试后端API(前后端分离)

  Postman 不会将 cookie 作为响应标头的一部分来处理,相反,postman从chrome(使用拦截器插件)接收cookie,以读取从响应接收到的cookie,postman向我们提供了以下方法:

postman.getResponseCookie("Cookie-name")

  第1行: token1 被声明为新变量,用于保存 getResponseCookie("XSRF-TOKEN").value 方法中的值以读取 'XSRF-TOKEN' 的 cookie 值。

  第2行:如图所示,'XSRF-TOKEN'  cookie的值在两行中被接收, 这在我们的 cookie 值中添加了一个新行字符“ <br/>”,我们需要摆脱它来接收正确的cookie值,因此我们使用 JavaScript replace函数从字符串中查找换行符,并将其替换为空字符“”。

  第3行:我们使用 Postman 提供的方法来设置 token2 变量,该变量现在包含正确的 cookie 值,并将其设置为名称为 'X-CSRF-TOKEN' 的“环境变量”,我们可以将其用作变量 {{X-CSRF-TOKEN}} 在其他请求中。

  3. 编辑并保存上面的代码后,转到 POSTMAN -> 管理环境 -> Pentest Environment ->编辑并添加 'X-CSRF-TOKEN' 作为变量和 {{X-CSRF-TOKEN}} 作为值(注意上面截图左上角),如下所示:

Spring Security:如何在Postman中优雅地测试后端API(前后端分离)

  4. 转到 "/doLogin" Web API选项卡 -> 单击下面 Header选项 -> 打开并添加 'X-CSRF-TOKEN' 作为变量和 {{X-CSRF-TOKEN}} 作为值,如下所示:

Spring Security:如何在Postman中优雅地测试后端API(前后端分离)

  5. 转到 "/doLogin" Web API,再次发送 Send 请求,脚本将被执行,并且将 'X-CSRF-TOKEN' 设置为环境变量,你将获得响应,并返回数据,就像经过身份验证的请求一样,如下面的截图所示:

Spring Security:如何在Postman中优雅地测试后端API(前后端分离)

参考:参考1