最近在做关于不同权限用户对接口权限访问的校验程序,包括基于 Bearer token&&Password 的 OAuth2 校验方式以及 基于JWT tokens with Bearer 等校验方式,最近就会发这些校验程序的解析,所以这篇文章先作概念解读引入,以我能理解的说人话方式来解析概念。

本文的前提是对token,session,cookie的作用以及传输方式有一定的理解,当然之后我也会把写好的token,session,cookie的笔记发出来

JWT(json web token)

JWT是对token很多种加密构造的实现 方法/标准 之一

本质: 以json(J)形式的字符串,通过web传播(W)的一种token(T);默认base64算法

用户输入账号密码后,在服务器进行验证,如果无误的话,在服务器生成通过base64编码生成一个JWT Token(字符串),服务器把这个字符串传给客户端存储, 前端在每次请求时将JWT Token放入HTTP请求头中的Authorization属性中

JWT token的组成: base64(头部) + base64(负载) + base64(签名)

签名的构成

头部内指定签名算法(默认HS256) { Base64(头部) + “.” + Base64(负载) , 加密的服务端私钥}

在服务端接收到客户端发送过来的JWT token后的处理流程:

header(头部)和payload(负载)可以直接通过 指定算法+Base64 解码出原文signature(加密的服务端私钥)无法解码出原文,其作用是校验token有没有被篡改。服务端获取header中的加密算法之后,
用其加密{Base64(header)+"."+ Base64(payload),加密的已端私钥}
后来和传来的JWT比对校验token是否合格

token每次到服务器验证时,后端会把前两部分和secret再次生成签名,再和第三部分比对,无论改了哪个部分,校验都不会通过

jwt token与session-cookie对比

注意token相比session-cookie方式的优势在于 服务器端不需要存储token

只需在每次 web端请求token 在 服务端解码校验通过后 即时生成token返回供web端下次使用

session-cookie: 每次验证通过给你一份新证明材料(cookie)后自己还要保留一份副本(session)备用核对检查,我有几百万千万用户服务端就要保留几百千万的的副本材料

jwt token: 每次验证通过只需要给你新的一张证明材料,我不用保留什么百万千万材料核对,只需要你提供材料时稍微两个解码算法解码验证就行

OAuth2

OAuth2是一种授权框架,提供了一套详细的授权机制。用户或应用可以通过公开的或私有的设置,授权第三方应用访问特定资源;其使用场景一般为APP或者网页需要账密的授权验证和登录

OAuth2用程序代码实现步骤时,经常会把 JWT 作为一种认证机制使用。所以OAuth2和 JWT 经常一同提及,但这两者实质是不同属性完全不同的东西

OAuth2用在使用第三方账号登录的情况 (比如微博QQ网页或者APP登录)

JWT使用在前后端分离, 需要简单的对后台API进行保护时使用.

因为HTTP协议是开放的,可以任人调用。所以,如果接口不希望被随意调用,就需要做访问权限的控制,对访问用户校验后根据权限等级调用响应API

Bearer Token

Bearer Token验证属于HTTP协议标准验证,它随着OAuth协议而开始流行 官方文档https://tools.ietf.org/html/rfc6750#section-1.2

Bearer验证中的凭证称为BEARER_TOKEN,或者是access_token,它的颁发和验证完全由我们自己的应用程序来控制,而不依赖于系统和Web服务器Bearer认证,其核心便是BEARER_TOKEN,而最通用的Token编码方式便是:JSON WEB TOKEN

拥有 bearer token 的任何一方(被称为 “bearer”),可以以任何方式,来访问受 OAuth 2.0 保护的资源,

什么是JWT?OAuth2以及Bearer Token基本解析相关推荐

  1. php oauth2 和 jwt,jwt-auth: thinkphp 的 jwt (JSON Web Token)身份验证扩展包,支持Swoole...

    JWT-AUTH thinkphp的jwt(JSON Web Token)身份验证包.支持Header.Cookie.Param等多种传参方式.包含:验证.验证并且自动刷新等多种中间件. 支持Swoo ...

  2. jwt接口认证方式:Bearer Token

    jwt接口认证方式:Bearer Token 问题背景 在以前,用户进行认证的时候一般是: -> 用户向服务端发送验证信息(用户名.密码). -> 服务端验证成功就向用户返回一个sessi ...

  3. SpringSecurity+JWT+OAuth2

    一个简洁的博客网站:http://lss-coding.top,欢迎大家来访 学习娱乐导航页:http://miss123.top/ 1. Spring Security 简介 1.1 概述 什么是安 ...

  4. Bearer Token的相关定义与使用方法

    原文地址:http://www.haomou.net/2014/08/13/2014_bare_token/ 来龙去脉 诸如Ember,Angular,Backbone之类的前端框架类库正随着更加精细 ...

  5. 详解OAuth 2.0授权协议(Bearer token)

    OAuth 2.0授权协议 1 认证(Authentication) 2 授权(Authorization) 3 OAuth 2.0与认证机制的联系 4 详解OAuth 2.0授权协议 4.1 授权码 ...

  6. jwt获取token_SpringBoot2 高级案例(09): 整合 JWT 框架,解决Token跨域验证问题

    一.传统Session认证 1.认证过程 1.用户向服务器发送用户名和密码. 2.服务器验证后在当前对话(session)保存相关数据. 3.服务器向返回sessionId,写入客户端 Cookie. ...

  7. JWT简介json web token bear token

    https://jwt.io/introduction/ 一个JWT实际上就是一个字符串,它由三部分组成,头部.载荷Payload与签名.  JWTs can be signed using a se ...

  8. 理解JWT(JSON Web Token)认证及python实践

    最近想做个小程序,需要用到授权认证流程.以前项目都是用的 OAuth2 认证,但是Sanic 使用OAuth2 不太方便,就想试一下 JWT 的认证方式. 这一篇主要内容是 JWT 的认证原理,以及p ...

  9. JWT(Json web token)认证详解

    JWT(Json web token)认证详解 什么是JWT Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该to ...

最新文章

  1. 大数据分布式集群搭建(插曲)
  2. 高退出低留存:六年百万数据透析,想颠覆传统教育的MOOC怎么了?
  3. java 及时释放内存_Java 内存释放
  4. 服务器如何区分多个客户端的信息,如何从服务器向客户端发送已连接客户端的列表,以区分常规消息?...
  5. 3个月贵了1.6万!特斯拉Model 3今年已涨价6次
  6. 实验2-2-2 计算摄氏温度 (10 分)
  7. Web前端工程师常用的8个工具
  8. M1芯片CAD如何安装?M1 mac怎么安装AutoCAD?
  9. C语言读取易语言的字节集,易语言字节集参数传递详解
  10. 线性最优离散滤波器——维纳滤波器及LCMV MVDR GSC (自适应滤波)
  11. [从头读历史] 第262节 左传 [BC597至BC538]
  12. Java-JFrame窗体美化
  13. 计算机毕业设计之郑州灾区志愿者报名管理系统
  14. 3.1-图像分割引言
  15. 交叉编译器arm下载链接
  16. DSPack初次使用小结
  17. win7一关机电脑就蓝屏
  18. Java开发入门教程!java破解版游戏免费下载
  19. [Greenfoot中文教程] 01 - Greenfoot初体验
  20. libcurl dns解析超时和出现段错误问题

热门文章

  1. 利用python网络爬虫获取软科中国最好大学排名2019数据
  2. BUPT CSAPP lab3 缓冲区溢出
  3. NLP 中文形近字相似度算法开源实现
  4. Win32-进程锁-进程异步-进程互斥-CreateMutex-OpenMutex-WaitForSingleObject-ReleaseMutex
  5. 嵌入式:人机交互接口设计详解
  6. RPA技术这么强,为什么机器人还会让人失望呢?
  7. Jquery+KindEditor文本编辑器
  8. VUE运行编码/gitee上传/注册用户名相同判断
  9. 创建文件的三种方式和一些操作方法
  10. java ee会员功能项目_基于jsp的会员管理-JavaEE实现会员管理 - java项目源码