接口自动化 - 接口鉴权处理常用方法

文章目录

  • [1. 接口鉴权通用解决方案](#1. 接口鉴权通用解决方案)
  • [2. 后端接口鉴权常用方法](#2. 后端接口鉴权常用方法)
    • cookie
    • token
    • [auth - 了解](#auth - 了解)
    • [oauth2 - 微信小程序鉴权](#oauth2 - 微信小程序鉴权)
  • [3. 各种鉴权方式介绍](#3. 各种鉴权方式介绍)
    • cookie鉴权
    • [token 鉴权](#token 鉴权)
    • [auth - 了解](#auth - 了解)
  • 总结

✨✨✨学习的道路很枯燥,希望我们能并肩走下来!

编程真是一件很奇妙的东西。你只是浅尝辄止,那么只会觉得枯燥乏味,像对待任务似的应付它。但你如果深入探索,就会发现其中的奇妙,了解许多所不知道的原理。知识的力量让你沉醉,甘愿深陷其中并发现宝藏。



本文开始

1. 接口鉴权通用解决方案

  1. 接口认证信息获取
  2. 发现接口请求进行认证信息的携带

2. 后端接口鉴权常用方法

  • 1.携带身份信息请求认证
  • 2.之后的每次请求都携带cookie信息,cookie记录在请求头中

token

  • 1.携带身份信息请求认证
  • 2.之后的每次请求都携带token认证信息
  • 3.可能记录在请求头,可能记录在url参数中

auth - 了解

  • 每次请求携带用户的username和password,并对其信息加密

oauth2 - 微信小程序鉴权

  • 1.携带身份信息请求认证
  • 2.服务端向指定回调地址回传code
  • 3.通过code获取token
  • 4.之后的请求信息都携带token。
    典型产品 :微信自动化测试

3. 各种鉴权方式介绍

cookie鉴权

  1. cookie 的获取(根据接口文档获取)
  2. 发送携带 cookie 的请求
    2.1直接通过调用 cookie 方法
    2.2通过在 filter 中添加 cookieFilter 对象

使用cookieFilter方法:

1.创建CookieFilter对象

2.在获取cookie或添加cookie的地方使用

也就是在请求头中使用filter()方法,传递参数是-cookieFilter对象

如:given().filter(CookieFilter对象)

方式一:直接通过.cookie()方法获取

前提:已有对应cookie鉴权信息,请求头中指定cookie需要存放的信息即可

java 复制代码
@Test
void addCookie() {
   given()
       //可以使用字符串 或 键值对(第一个key, 第二个是value)
       .cookie("user", "ad")
   .when()
  	   .get("https://httpbin.org/cookies")
   .then()
       .log().all();
}

方式二:使用CookieFilter对象,given()中的filter()方法-REST-assure自带方法

【注】

一般是不知道cookie需要存放的鉴权信息是什么

需要模拟正常set-cookie过程,获取cookie需要存放的信息

禁止重定向方法: .redirects().follow(false) -默认follow()方法中为true,代表允许重定向;

java 复制代码
@Test
void addCookieByFile() {
    //1.创建CookieFilter对象
    CookieFilter cookieFilter = new CookieFilter();
    //第一次请求获取cookie, 不进行重定向
    given()
        //禁止重定向,默认为true
        .redirects().follow(false)
       //使用filter()方法,获取set-cookie信息
        .filter(cookieFilter)
    .when()
    	//请求带有set-cookie返回的接口
        .get(setUrl)
    .then()
        .log().all();
    //第二次请求,携带cookie,会通过cookieFilter 自动添加相应cookie
    given()
        //使用filter()方法,添加cookie信息
        .filter(cookieFilter)
    .when()
        .get(url)
    .then()
        .log().all();
    //第3次请求,携带cookie,使用cookieFilter自动添加,还可以手动cookie()方法继续添加
    given()
        //使用filter()方法,添加cookie信息
        .filter(cookieFilter).cookie("test", "2")
    .when()
        .get(url)
    .then()
        .log().all();
}

token 鉴权

操作步骤:

1.token获取-根据接口文档获取

如:登录接口,请求后会响应会返回token信息

2.发送携带token的请求-根据接口文档获取

【注】发送带token的请求,需要注意token处理逻辑,也就是token放在那,请求头还是url中,工作中问后端或前端进一步了解。(或者看接口文档中是否有说明)

java 复制代码
@Test
void tokenTest() {
    //1.获取token ->请求有token的接口
    String bodyData = "{\"username\":\"zs\",\"password\":\"123\",\"code\":\"\"}";
    String token = given()
        .contentType("application/json;charset=UTF-8")
        .body(bodyData)
    .when()
        .post("https://litemall.com/admin/auth/login")
    .then()
        .log().all().extract().path("data.token");

    //2.再次请求其他接口,携带token
    //因为其他接口需要在登录后,才能访问,需要token
    given()
        .headers("x-litemall-admin-token", token)
    .when()
        .get("https://litemall.com/admin/goods/list")
    .then()
        .log().all()
        .statusCode(200);
}

auth - 了解

目前公司使用的不多

  1. 在基本 HTTP 身份验证中,请求包含格式为 的标头字段Authorization: Basic
  2. 其中credentials是 ID 和密码的Base64编码,由单个冒号连接:。

一般请求头中显示:

authorization: Basic credentials

java 复制代码
@Test
void addAuth() {
    RestAssured.proxy = host("localhost").withPort(8889);
    RestAssured.useRelaxedHTTPSValidation();
    String authUrl = "需要被测的接口地址";
    given()
         //在given()通过.auth().basic("用户名","密码")
        .auth().basic("user", "ad")
    .when()
        .get(authUrl)
    .then()
    .log().all();
}

总结

✨✨✨各位读友,本篇分享到内容是否更好的帮助你理解,如果对你有帮助给个👍赞鼓励一下吧!!
🎉🎉🎉世上没有绝望的处境,只有对处境绝望的人。
🎉🎉🎉一遇挫折就灰心丧气的人,永远是个失败者。而一向努力奋斗,坚韧不拔的人会走向成功。
感谢每一位一起走到这的伙伴,我们可以一起交流进步!!!一起加油吧!!!

相关推荐
PhotonixBay19 分钟前
共聚焦显微镜测量铜导体表面粗糙度
测试工具·制造
Urbano23 分钟前
工装 T 恤、Polo 衫全生产工序、痛点解析及多品牌自动化设备应用方案
运维·自动化
AOwhisky32 分钟前
Redis 学习笔记(第一期):概述、安装配置与核心理论
运维·数据库·redis·笔记·学习·云计算
小熊美家熊猫系统37 分钟前
电子合同技术实现与合规实践
java·开发语言·分布式
云烟成雨TD37 分钟前
Agent Scope Java 2.x 系列【3】从零构建 ReActAgent
java·人工智能·agent
一只叫煤球的猫1 小时前
ThreadForge 源码解读二:一个 Task 从 submit 到完成,内部到底发生了什么?
java·后端·面试
苏州邦恩精密1 小时前
2026江苏GOM三维扫描仪定制厂家找哪家?企业数字化转型视角
人工智能·机器学习·3d·自动化·制造
AOwhisky1 小时前
Redis 学习笔记(第四期):高可用与集群(哨兵 + Cluster + 容器化)
linux·运维·数据库·redis·笔记·学习·缓存
阿狸猿1 小时前
论微服务架构及其应用
java·微服务·架构
C语言小火车2 小时前
嵌入式Linux应用开发技术栈完全指南
linux·运维·服务器