总算是把这个过程理清楚了,现在我们的思路是: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认证的更多相关文章

  1. 034.认证方式 | 基本认证 、Token认证、 AK/SK认证

    认证方式 关于认证: https://www.cnblogs.com/badboyh2o/p/11068779.html https://www.cnblogs.com/badboyh2o/p/110 ...

  2. ASP.NET WebApi 基于分布式Session方式实现Token签名认证

    一.课程介绍 明人不说暗话,跟着阿笨一起学玩WebApi!开发提供数据的WebApi服务,最重要的是数据的安全性.那么对于我们来说,如何确保数据的安全将会是需要思考的问题.在ASP.NETWebSer ...

  3. ASP.NET WebApi 基于分布式Session方式实现Token签名认证(发布版)

    一.课程介绍 明人不说暗话,跟着阿笨一起学玩WebApi!开发提供数据的WebApi服务,最重要的是数据的安全性.那么对于我们来说,如何确保数据的安全将会是需要思考的问题.在ASP.NETWebSer ...

  4. Cookie、Session和Token认证

    目录 Cookie Session认证机制 Session的一些安全配置 Token认证机制 Token预防CSRF Session认证和Token认证的区别 前言:HTTP是一种无状态的协议,为了分 ...

  5. 基于Token认证的多点登录和WebApi保护

    在文章中有错误的地方,或是有建议或意见的地方,请大家多多指正,邮箱: linjie.rd@gmail.com 一天张三,李四,王五,赵六去动物园,张三没买票,李四制作了个假票,王五买了票,赵六要直接F ...

  6. Java实现基于token认证

    随着互联网的不断发展,技术的迭代也非常之快.我们的用户认证也从刚开始的用户名密码转变到基于cookie的session认证,然而到了今天,这种认证已经不能满足与我们的业务需求了(分布式,微服务).我们 ...

  7. flask token认证

    在前后端分离的项目中,我们现在多半会使用token认证机制实现登录权限验证. token通常会给一个过期时间,这样即使token泄露了,危害期也只是在有效时间内,超过这个有效时间,token过期了,就 ...

  8. laravel5.7 前后端分离开发 实现基于API请求的token认证

    最近在学习前后端分离开发,发现 在laravel中实现前后台分离是无法无法使用 CSRF Token 认证的.因为 web 请求的用户认证是通过Session和客户端Cookie的实现的,而前后端分离 ...

  9. python 全栈开发,Day97(Token 认证的来龙去脉,DRF认证,DRF权限,DRF节流)

    昨日内容回顾 1. 五个葫芦娃和三行代码 APIView(views.View) 1. 封装了Django的request - request.query_params --> 取URL中的参数 ...

随机推荐

  1. netty实现消息中心(一)思路整理

    一.需求 需要实现直播间的以下功能: 群发消息(文本.图片.推荐商品) 点对点私发消息(文本.图片.推荐商品) 单个用户禁言 全体用户禁言 撤回消息 聊天记录持久化 二.技术实现 服务端消息中心采用n ...

  2. 【MySQL】究竟什么是MVCC呢?

    MVCC是什么呢? MVCC其实就是一个多版本并发控制,即多个不同版本的数据实现并发控制的技术,其基本思想是为每次事务生成一个新版本的数据, 在读数据时选择不同版本的数据即可以实现对事务结果的完整性读 ...

  3. Unit2-窝窝牌电梯

    全文共2329字,推荐阅读时间10~15分钟. 文章共分四个部分: 作业分析 评测相关 重构策略 课程体验感受 作业分析 Unit2要求我们模拟现实生活中的电梯调度情景,迭代路径是单电梯->多电 ...

  4. windows下Python版本切换使用方法

    由于历史原因,Python有两个大的版本分支,Python2和Python3,又由于一些库只支持某个版本分支,所以需要在电脑上同时安装Python2和Python3,因此如何让两个版本的Python兼 ...

  5. c常用函数-strcat 和 strncat

    strcat 和 strncat strcat与strncat都是字符串连接函数,功能上稍有区别: strcat可以把一个字符串的全部内容复制到另一个字符串的后面; strncat则是把一个字符串的指 ...

  6. [源码解析] GroupReduce,GroupCombine 和 Flink SQL group by

    [源码解析] GroupReduce,GroupCombine和Flink SQL group by 目录 [源码解析] GroupReduce,GroupCombine和Flink SQL grou ...

  7. python测试标准库doctest

    引言: doctest是python的一个测试用标准库. 顾名思义,这个模块会寻找程序里面看起来像交互式Python会话的文本片段,然后运行这个会话,来判断实际运行结果和你希望的结果是否一致. 这个模 ...

  8. 【转】Windows下PATH等环境变量详解

    [转]“肖凡的专栏” 博客,请务必保留此出处http://legend2011.blog.51cto.com/3018495/553255 在学习JAVA的过程中,涉及到多个环境变量(environm ...

  9. Jmeter Response Data 乱码问题解决方法

    1. 进入jmeter\apache-jmeter-4.0\bin,打开jmeter.properties 2. 搜索“sampleresult.default.encoding” 设置sampler ...

  10. elasticsearch中query和filter的区别

    参考博客来自: https://mp.weixin.qq.com/s/tiiveCW3W-oDIgxvlwsmXA?utm_medium=hao.caibaojian.com&utm_sour ...