什么是JWT?OAuth2以及Bearer Token基本解析
最近在做关于不同权限用户对接口权限访问的校验程序,包括基于 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基本解析相关推荐
- php oauth2 和 jwt,jwt-auth: thinkphp 的 jwt (JSON Web Token)身份验证扩展包,支持Swoole...
JWT-AUTH thinkphp的jwt(JSON Web Token)身份验证包.支持Header.Cookie.Param等多种传参方式.包含:验证.验证并且自动刷新等多种中间件. 支持Swoo ...
- jwt接口认证方式:Bearer Token
jwt接口认证方式:Bearer Token 问题背景 在以前,用户进行认证的时候一般是: -> 用户向服务端发送验证信息(用户名.密码). -> 服务端验证成功就向用户返回一个sessi ...
- SpringSecurity+JWT+OAuth2
一个简洁的博客网站:http://lss-coding.top,欢迎大家来访 学习娱乐导航页:http://miss123.top/ 1. Spring Security 简介 1.1 概述 什么是安 ...
- Bearer Token的相关定义与使用方法
原文地址:http://www.haomou.net/2014/08/13/2014_bare_token/ 来龙去脉 诸如Ember,Angular,Backbone之类的前端框架类库正随着更加精细 ...
- 详解OAuth 2.0授权协议(Bearer token)
OAuth 2.0授权协议 1 认证(Authentication) 2 授权(Authorization) 3 OAuth 2.0与认证机制的联系 4 详解OAuth 2.0授权协议 4.1 授权码 ...
- jwt获取token_SpringBoot2 高级案例(09): 整合 JWT 框架,解决Token跨域验证问题
一.传统Session认证 1.认证过程 1.用户向服务器发送用户名和密码. 2.服务器验证后在当前对话(session)保存相关数据. 3.服务器向返回sessionId,写入客户端 Cookie. ...
- JWT简介json web token bear token
https://jwt.io/introduction/ 一个JWT实际上就是一个字符串,它由三部分组成,头部.载荷Payload与签名. JWTs can be signed using a se ...
- 理解JWT(JSON Web Token)认证及python实践
最近想做个小程序,需要用到授权认证流程.以前项目都是用的 OAuth2 认证,但是Sanic 使用OAuth2 不太方便,就想试一下 JWT 的认证方式. 这一篇主要内容是 JWT 的认证原理,以及p ...
- JWT(Json web token)认证详解
JWT(Json web token)认证详解 什么是JWT Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该to ...
最新文章
- 大数据分布式集群搭建(插曲)
- 高退出低留存:六年百万数据透析,想颠覆传统教育的MOOC怎么了?
- java 及时释放内存_Java 内存释放
- 服务器如何区分多个客户端的信息,如何从服务器向客户端发送已连接客户端的列表,以区分常规消息?...
- 3个月贵了1.6万!特斯拉Model 3今年已涨价6次
- 实验2-2-2 计算摄氏温度 (10 分)
- Web前端工程师常用的8个工具
- M1芯片CAD如何安装?M1 mac怎么安装AutoCAD?
- C语言读取易语言的字节集,易语言字节集参数传递详解
- 线性最优离散滤波器——维纳滤波器及LCMV MVDR GSC (自适应滤波)
- [从头读历史] 第262节 左传 [BC597至BC538]
- Java-JFrame窗体美化
- 计算机毕业设计之郑州灾区志愿者报名管理系统
- 3.1-图像分割引言
- 交叉编译器arm下载链接
- DSPack初次使用小结
- win7一关机电脑就蓝屏
- Java开发入门教程!java破解版游戏免费下载
- [Greenfoot中文教程] 01 - Greenfoot初体验
- libcurl dns解析超时和出现段错误问题
热门文章
- 利用python网络爬虫获取软科中国最好大学排名2019数据
- BUPT CSAPP lab3 缓冲区溢出
- NLP 中文形近字相似度算法开源实现
- Win32-进程锁-进程异步-进程互斥-CreateMutex-OpenMutex-WaitForSingleObject-ReleaseMutex
- 嵌入式:人机交互接口设计详解
- RPA技术这么强,为什么机器人还会让人失望呢?
- Jquery+KindEditor文本编辑器
- VUE运行编码/gitee上传/注册用户名相同判断
- 创建文件的三种方式和一些操作方法
- java ee会员功能项目_基于jsp的会员管理-JavaEE实现会员管理 - java项目源码