Python

Cookie、Session、Token、JWT介绍

2022-08-28  本文已影响0人  大狗熊熊熊熊熊

该文章转载自https://juejin.cn/post/6844904034181070861
原作者ID为:秋天不落叶
原作者发表时间为:2019年12月29日
以便更好阅读内容细节经过处理

什么是认证(Authentication)

什么是授权(Authorization)

什么是凭证(Credentials)

什么是 Cookie

HTTP 是无状态的协议(对于事务处理没有记忆能力,每次客户端和服务端会话完成时,服务端不会保存任何会话信息):每个请求都是完全独立的,服务端无法确认当前访问者的身份信息,无法分辨上一次的请求发送者和这一次的发送者是不是同一个人。所以服务器与浏览器为了进行会话跟踪(知道是谁在访问我),就必须主动的去维护一个状态,这个状态用于告知服务端前后两个请求是否来自同一浏览器。而这个状态需要通过 cookie 或者 session 去实现
cookie 存储在客户端: cookie 是服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器下次向同一服务器再发起请求时被携带并发送到服务器上
cookie 是不可跨域的: 每个 cookie 都会绑定单一的域名,无法在别的域名下获取使用,但一级域名和二级域名之间允许共享使用(靠的是 domain)

cookie的属性

什么是 Session

Session示意图.png
根据以上流程可知,SessionID 是连接 Cookie 和 Session 的一道桥梁,大部分系统也是根据此原理来验证用户登录状态。

Cookie 和 Session 的区别

什么是 Token(令牌)

Access Token是指访问资源接口(API)时所需要的资源凭证
Token的组成由:uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名,token 的前几位以哈希算法压缩成的一定长度的十六进制字符串)
Token的特点:服务端无状态化、可扩展性好、支持移动端设备、支持跨程序调用、安全


Token示意图.png

什么是Refresh Token

Refresh Token是另一种Token的实现形式,是专门用于刷新 Access Token 的 Token。如果没有 Refresh Token每次 Access Token 刷新都要用户输入用户名与密码。有了 Refresh Token,可以减少这个麻烦,客户端直接用 Refresh Token 去更新 Access Token,无需用户进行额外的操作


Refresh Token示意图.png

Token 和 Session 的区别

什么是 JWT

JSON Web Token(简称 JWT)是一种认证授权机制是目前最流行的跨域认证解决方案,JWT 是为了在网络应用环境间传递声明而执行的一种基于 JSON 的开放标准。JWT 的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源。比如用在用户登录上,因为JWT 可以使用 HMAC 算法或者是 RSA 的公/私秘钥进行签名。所以经过JWT加密后传递的信息是可信的

原作者推荐JWT教程老师:阮一峰
链接:http://www.ruanyifeng.com/blog/2018/07/json_web_token-tutorial.html
JWT示意图.png

Token 和 JWT 的联系和区别

常见的前后端鉴权方式

常见的哈希加密算法

哈希算法家族示意图.png

哈希算法又称散列算法、散列函数、哈希函数,是一种从任何一种数据中创建小的数字“指纹”的方法。哈希算法将数据重新打乱混合,重新创建一个哈希值,哈希算法主要用来保障数据真实性(即完整性),即发信人将原始消息和哈希值一起发送,收信人通过相同的哈希函数来校验原始数据是否真实

常见问题

其他附带问题

上一篇 下一篇

猜你喜欢

热点阅读