首页 > 其他分享 >18.接口鉴权的多种情况与 解决方案

18.接口鉴权的多种情况与 解决方案

时间:2024-01-17 18:34:45浏览次数:29  
标签:http url 18 self 接口 token cookie proxy 鉴权

接口鉴权是什么

 
  • 身份认证

接口鉴权通用的解决方案

 
  • 认证信息的获取
  • 认证信息的携带
@startuml
scale 800
if (登录成功?) then
  #pink:响应错误;
  detach
endif
#palegreen:响应认证信息;
#palegreen:携带认证信息发起其他请求;
@enduml

后端接口鉴权常用方法

 
@startmindmap
* 常用方式
** cookie
*** 1. 携带身份信息请求认证
*** 2. 之后的每次请求都携带cookie信息,cookie记录在请求头中
** token
*** 1. 携带身份信息请求认证
*** 2. 之后的每次请求都携带token认证信息
*** 3. 可能记录在请求头,可能记录在url参数中
** auth
*** 每次请求携带用户的username和password,并对其信息加密
** oauth2(选修)
*** 1. 携带身份信息请求认证
*** 2. 服务端向指定回调地址回传code
*** 3. 通过code获取token
*** 4. 之后的请求信息都携带token。
*** 典型产品 微信自动化测试
@endmindmap
 
  1. cookie 的获取(根据接口文档获取)
  2. 发送携带 cookie 的请求
    • 直接通过 cookies 参数
    • 通过 Session() 对象
import requests


class TestVerify:
    def setup_class(self):
        self.proxy = {"http": "http://127.0.0.1:8080",
                      "https": "http://127.0.0.1:8080"}

    def test_cookies_by_write(self):
        # 简单场景,直接写入cookie
        url = "https://httpbin.ceshiren.com/cookies"
        requests.get(url, proxies=self.proxy, verify=False, cookies={"hogwarts": "ad"})

    def test_cookies(self):
        # 获取session 的实例,需要通过Session()保持会话,
        # 即为认证之后,之后所有的实例都会携带cookie
        # 可以模仿用户在浏览器的操作
        req = requests.Session()
        # 第一次登陆,植入cookie
        set_url = "https://httpbin.ceshiren.com/cookies/set/hogwarts/ad"
        req.get(set_url, proxies=self.proxy, verify=False)
        # 第二次请求的时候即可携带cookie信息
        url = "https://httpbin.ceshiren.com/cookies"
        req.get(url, proxies=self.proxy, verify=False)

token 鉴权

 
  1. token 的获取(根据接口文档获取)
  2. 发送携带 token 的请求(根据接口文档获取)
class TestVerify:
    def setup_class(self):
        self.proxy = {"http": "http://127.0.0.1:8080",
                      "https": "http://127.0.0.1:8080"}

    def test_token(self):
        # 1. 获取token
        url = "http://litemall.hogwarts.ceshiren.com/admin/auth/login"
        user_data = {"username": "admin123", "password": "admin123", "code": ""}
        r = requests.post(url, json=user_data, proxies=self.proxy, verify=False, )
        self.token = r.json()["data"]["token"]
        # 2. 之后的请求均携带token
        goods_list_url = "http://litemall.hogwarts.ceshiren.com/admin/goods/list"
        goods_data = {"name": "hogwarts", "order": "desc", "sort": "add_time"}
        r = requests.get(goods_list_url, params=goods_data,
                         headers={"X-Litemall-Admin-Token": self.token},
                         proxies=self.proxy, verify=False)

auth 鉴权(了解即可)

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

 

auth 鉴权-代码示例

 
import requests
from requests.auth import HTTPBasicAuth


class TestVerify:
    def setup_class(self):
        self.proxy = {"http": "http://127.0.0.1:8080",
                      "https": "http://127.0.0.1:8080"}
    def test_basic_auth(self):
        # 表示访问一个需要BasicAuth认证的路径
        # username=用户名,password=密码
        # 如果不使用basic auth 则会失败
        r = requests.get("https://httpbin.ceshiren.com/basic-auth/username/password",
                         proxies=self.proxy, verify=False,
                         auth=HTTPBasicAuth("username", "password"))

标签:http,url,18,self,接口,token,cookie,proxy,鉴权
From: https://www.cnblogs.com/csfsz/p/17970710

相关文章

  • 19.电子商城接口自动化测试 实战
    目录 接口测试流程产品需求分析测试用例设计思路接口自动化脚本编写接口测试流程 @startuml:需求分析;:测试设计;:测试用例评审;:测试执行;:验收;:预发布;:上线;@enduml电子商城需求分析 商城管理后台商城客户端商城业务场景 ......
  • 15.宠物商店 接口自动化测试实战
    目录 被测产品需求说明相关知识点接口自动化测试实战被测产品 PetStore宠物商城:一个在线的小型的商城。主要提供了增删查改等操作接口。结合Swagger实现了接口的管理。需求说明 完成宠物商城宠物管理功能接口自动化测试。编写自动化测......
  • 05.接口请求体 - JSON
    目录 接口请求体JSON格式请求体介绍如何构造JSON格式请求体接口请求体简介 进行HTTP请求时,发送给服务器的数据。数据格式类型可以是JSON、XML、文本、图像等格式。请求体的格式和内容取决于服务器端API的设计和开发人员的要求。飞书接口文档常用接......
  • 国标GB28181安防视频监控EasyCVR级联后上级平台视频加载慢的原因排查
    国标GB28181协议安防视频监控系统EasyCVR视频综合管理平台,采用了开放式的网络结构,可以提供实时远程视频监控、视频录像、录像回放与存储、告警、语音对讲、云台控制、平台级联、磁盘阵列存储、视频集中存储、云存储等丰富的视频能力,同时还具备权限管理、设备管理、鉴权管理、流媒......
  • 06.接口响应断言
    目录 接口断言使用场景响应结果对象响应结果断言接口断言使用场景 问题:如何确保请求可以发送成功。如何保证符合业务需求。解决方案:通过获取响应信息,验证接口请求是否成功,是否符合业务需求。Requests中的响应结果对象 importrequestsfro......
  • Postman接口测试的工具使用
    postman下载:https://www.postman.com/downloads/下载后双击即可安装,安装后需要创建账号,登录后可以在不同平台同步数据。postman主要功能说明postman主要模块功能介绍点击最上面的测试集的添加目录图标,来新增一个根目录,这样等于新建了一个项目.可以将一个项目或一个模块的用......
  • 使用API接口获取拼多多商品详情
    随着电商行业的快速发展,越来越多的电商平台涌现出来,为消费者提供了丰富的商品选择。拼多多作为国内知名的电商平台之一,拥有庞大的商品库和优惠活动,吸引了大量的用户。本文将详细介绍如何通过调用API接口获取拼多多商品详情,帮助开发者快速实现拼多多商品信息的获取和展示。一、API接......
  • 189邮箱的POP、IMAP和SMTP设置教程,简单好用
    在现代社会,电子邮件已经成为人们生活中不可或缺的一部分。189邮箱作为中国电信旗下的邮箱服务,为用户提供了丰富的功能和便捷的邮件服务。为了更好地使用189邮箱,了解如何正确配置POP、IMAP和SMTP设置是至关重要的。本文将为大家详细介绍189邮箱的POP、IMAP和SMTP设置教程,以及如何简......
  • FlashDuty Changelog 2023-12-18 | 值班管理、服务日历、自定义操作和邮件集成
    FlashDuty:一站式告警响应平台,前往此地址免费体验!值班管理UI交互优化【个人日程】从头像下拉菜单调整到值班列表页面,快速查看个人值班日程【值班列表】支持原地预览最近一周值班情况,包括当前和下一阶段值班人【值班详情】支持日历模式与时间线模式切换,查看月度计划更方便......
  • 运城学院数学与信息技术学院 2017—2018学年第二学期期末考试
    运城学院数学与信息技术学院2017—2018学年第二学期期末考试程序设计基础试题(A)适用范围:计算机科学与技术专业1701\1702班网络工程专业1703\1704\1705班信息管理与信息系统专业1706班数字媒体技术专业1707\1708班通信工程专业1709\17010班 命题人: 南丽丽       ......