接口测试基础——session认证和token认证
总算是把这个过程理清楚了,现在我们的思路是:what?why?How?,实际上这些个机制产生的内部逻辑是从下至上的的:遇到问题了,想办法解决,总结归纳并取名。从解决一些小问题开始生长,不断打补丁直至完善。学习接口,永远有个认识:这是客户端 和 服务器的之间的交流,可以类别为 用户 和 超市!
什么是session?
Http协议是无状态的,Session是一种让请求从无状态变成有状态的机制,实现session的方式有很多种,通过地址栏,借助cookie(cookie就是存在浏览器里的一些信息,以一个文件夹的形式存在,里面的信息是由服务端产生的)。
基于session的身份认证
借助cookie,客户端登陆成功后,服务端就能识别其后续请求,而不需要每次都登陆。
为解决数据被篡改的问题:
一种是把cookie里面的内容加密,但这种方法有两个缺点:1)cookie的大小是有限制的,2)加密方式以及密钥有泄露的风险
另一种方法是通过一个ID来辨别身份,这个ID称之为seesion id,Server只在Cookie里面存一个Session id,其余的状态都存在Server那边,可以存在数据库或内存里。其具体的认证过程如下:
1) 客户端登陆,一般输入用户名和密码
2) 服务端如果验证通过,生成session,并把它存入数据库中,并将其中的session id存放在Set-Cookie当中发给客户端
3) 客户端接收到Set-Cookie,在浏览器上会产生cookie,并把session id写入
4) 客户端后续有新的请求,都会在请求后携带sessIon id,发给服务端,服务端进行验证
5) 如果客户端登陆出去(log out),该生成的session就会在客户端和服务端都被销毁
基于session认证的不足
服务端存储每个用户的session,当用户很多时,需要大量的资源
不能很好解决跨域资源共享问题
什么是Token?
token的意思是“令牌”,是服务端生成的一串字符串,作为客户端进行请求的一个标识。
简单token的组成:uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名,token的前几位以哈希算法压缩成的一定长度的十六进制字符串,为防止token泄露)。
基于token机制的身份认证
Token是服务端用自己的密钥签名的,当它收到客户带有Token的请求时,只需要再用自己的密钥去验证,就可以判断这个Token是不是自己签发的。这里面的核心就是用签名和验证,从而减轻了服务端的负担,无需再存储session。大概的流程:
1) 客户端使用用户名和密码请求登录
2) 服务端验证,验证通过,生成Token返还给客户端(一般用哈希算法,再加个随机数)。
3) 客户端收到token后把它存储起来,可以放在cookie或者Local Storage(本地内存)里
4) 客户端以后每次向服务端发送请求的时候都需要带上该token。
5) 服务端收到请求时验证Token,如果验证通过,则允许用户访问相应资源)
token认证与session认证的区别
token认证中,服务端不会保存token,再次访问只会对token中携带的信息进行验证,session认证服务器会给每一个session分配唯一的session id保存在服务端的数据库中,再次访问时浏览器通过cookie把session id传回给服务器,服务器根据session id找到第一次登陆时所分配的session对象
使用基于Token认证可以使API应用到不同的服务和域中
接口测试基础——session认证和token认证的更多相关文章
- 034.认证方式 | 基本认证 、Token认证、 AK/SK认证
认证方式 关于认证: https://www.cnblogs.com/badboyh2o/p/11068779.html https://www.cnblogs.com/badboyh2o/p/110 ...
- ASP.NET WebApi 基于分布式Session方式实现Token签名认证
一.课程介绍 明人不说暗话,跟着阿笨一起学玩WebApi!开发提供数据的WebApi服务,最重要的是数据的安全性.那么对于我们来说,如何确保数据的安全将会是需要思考的问题.在ASP.NETWebSer ...
- ASP.NET WebApi 基于分布式Session方式实现Token签名认证(发布版)
一.课程介绍 明人不说暗话,跟着阿笨一起学玩WebApi!开发提供数据的WebApi服务,最重要的是数据的安全性.那么对于我们来说,如何确保数据的安全将会是需要思考的问题.在ASP.NETWebSer ...
- Cookie、Session和Token认证
目录 Cookie Session认证机制 Session的一些安全配置 Token认证机制 Token预防CSRF Session认证和Token认证的区别 前言:HTTP是一种无状态的协议,为了分 ...
- 基于Token认证的多点登录和WebApi保护
在文章中有错误的地方,或是有建议或意见的地方,请大家多多指正,邮箱: linjie.rd@gmail.com 一天张三,李四,王五,赵六去动物园,张三没买票,李四制作了个假票,王五买了票,赵六要直接F ...
- Java实现基于token认证
随着互联网的不断发展,技术的迭代也非常之快.我们的用户认证也从刚开始的用户名密码转变到基于cookie的session认证,然而到了今天,这种认证已经不能满足与我们的业务需求了(分布式,微服务).我们 ...
- flask token认证
在前后端分离的项目中,我们现在多半会使用token认证机制实现登录权限验证. token通常会给一个过期时间,这样即使token泄露了,危害期也只是在有效时间内,超过这个有效时间,token过期了,就 ...
- laravel5.7 前后端分离开发 实现基于API请求的token认证
最近在学习前后端分离开发,发现 在laravel中实现前后台分离是无法无法使用 CSRF Token 认证的.因为 web 请求的用户认证是通过Session和客户端Cookie的实现的,而前后端分离 ...
- python 全栈开发,Day97(Token 认证的来龙去脉,DRF认证,DRF权限,DRF节流)
昨日内容回顾 1. 五个葫芦娃和三行代码 APIView(views.View) 1. 封装了Django的request - request.query_params --> 取URL中的参数 ...
随机推荐
- 列表、元组、字典和简单if语句【python实验1】
第一次实验报告: 学生姓名 总成绩 tom 90 jack 89 john 96 kate 86 peter 100 实验内容3-1 建立两个列表分别对学生的姓名和总成绩信息进行存储 name=['t ...
- 【Android】使用Appium+python控制真机,碰到的问题以及处理(持续更新)
问题: selenium.common.exceptions.WebDriverException: Message: A new session could not be created. (Ori ...
- Ios App破解之路二 JJ斗地主
前提条件: 越狱手机里, 安装了 <JJ斗地主> 使用砸壳工具clutch 下载地址: https://github.com/KJCracks/Clutch/releases dzq:~/ ...
- Java多线程与并发基础
CS-LogN思维导图:记录专业基础 面试题 开源地址:https://github.com/FISHers6/CS-LogN 多线程与并发基础 实现多线程 面试题1:有几种实现线程的方法,分别是什么 ...
- django 网站域名解析 IP绑定 新建站 新域名
备案成功后,我们要用域名来访问服务器,这个不仅要修改nginx的配置文件,还要设置域名的解析,下面是我的一个调试经验过程:直接上图了. 1.问题查找
- json 文件注释
json文件注释: "_comment":"this is commets", "jsondata":{ "注释":&q ...
- Linux操作篇之配置DNS服务(一)
一.什么是DN. 域名(Domain Name)又称网域,是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时对计算机的定位标识(有时也指地理位置).它的作用只 ...
- 黎活明8天快速掌握android视频教程--23_网络通信之网络图片查看器
1.首先新建立一个java web项目的工程.使用的是myeclipe开发软件 图片的下载路径是http://192.168.1.103:8080/lihuoming_23/3.png 当前手机和电脑 ...
- .NET Core请求控制器Action方法正确匹配,但为何404?
前言 有些时候我们会发现方法名称都正确匹配,但就是找不到对应请求接口,所以本文我们来深入了解下何时会出现接口请求404的情况. 匹配控制器Action方法(404) 首先我们创建一个web api应用 ...
- git常用命令(部分)
git常用命令 1.git init 初始化一个新本地仓库,它在工作目录下生成一个名为.git的隐藏文件夹. 安装好git的,新建一个文件夹,在空文件夹中鼠标右击点击Git Bash Here 2.g ...