接口测试基础——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中的参数 ...
随机推荐
- mysqldump导出数据库
问题描述:要将一个mysql中六个数据库导出来,使用mysqldump导出 mysqldump使用语法:mysqldump -uroot -p -S /data/mysql/db_itax_m/mys ...
- How to Use tomcat on Linux
看是否有tomcat在运行 ps -ef |grep tomcat eg: -bash-4.1# ps -ef |grep tomcat root 1 0 0 14:26 ? 00:00:00 /bi ...
- pip速度过慢解决方法
国内源: 新版ubuntu要求使用https源,要注意. 清华:https://pypi.tuna.tsinghua.edu.cn/simple 阿里云:http://mirrors.aliyun.c ...
- mybatis 学习教程
https://www.cnblogs.com/ashleyboy/category/1246107.html
- mybatis实现多表一对一,一对多,多对多关联查询
原文:https://blog.csdn.net/m0_37787069/article/details/79247321 1.一对一关键字:association作用:针对pojo对象属性的映射 ...
- pip未找到
命令终端运行 sudo easy_install pip 安装成功后最后会显示 Installed /Library/Python/2.7/site-packages/pip-9.0.1-py2.7. ...
- Probius:一个功能强大的自定义任务系统
断更的这些日子,我又折腾了一个轮子,文末参考源码 大约在一年半以前写过一篇文章『探秘varian:优雅的发布部署程序』,里边有讲到我们采用类似lego的模块化方式来构建CICD的流程,虽能满足我们的需 ...
- cc32a_demo-32dk2j_cpp_纯虚函数与抽象类-txwtech
//32dk2j_cpp_纯虚函数与抽象类cc32a_demo-txwtech//纯虚函数是用来继承用的//纯虚函数//抽象类-抽象数据类型//*任何包含一个或者多个纯虚函数的类都是抽象类//*不要/ ...
- 漏洞复现-Office远程代码执行漏洞 (CVE-2017-11882&CVE-2018-0802)
漏洞原理 这两个漏洞本质都是由Office默认安装的公式编辑器(EQNEDT32.EXE)引发的栈溢出漏洞(不要问什么是栈溢出,咱也解释不了/(ㄒoㄒ)/~~) 影响版本 Office 365 Mic ...
- TXT文件的写入及读出
一.文件的读出: file = open('url/data.txt','r',encoding='utf-8')#打开模式r w a,当文件在当前工作区域直接写文件名:如果不在当前工作区域要写绝对地 ...