HTTP基本认证和JWT鉴权
一、HTTP基本认证
Basic Authentication——当浏览器访问使用基本认证的网站的时候, 浏览器会提示你输入用户名和密码。
http auth的过程:
- · 客户端发送http请求
- · 服务器发现配置了http auth,于是检查request里面有没有"Authorization"的http header
- · 如果有,则判断Authorization里面的内容是否在用户列表里面,Authorization header的典型数据为"Authorization: Basic jdhaHY0=",其中Basic表示基础认证, jdhaHY0=是base64编码的"user:passwd"字符串。
- · 如果没有,或者用户密码不对,则返回http code 401页面给客户端
- · 标准的http浏览器在收到401页面之后,应该弹出一个对话框让用户输入帐号密码;并在用户点确认的时候再次发出请求,这次请求里面将带上Authorization header
一次典型的访问场景是:
- · 浏览器发送http请求(没有Authorization header)
- · 服务器端返回401页面
- · 浏览器弹出认证对话框
- · 用户输入帐号密码,并点确认
- · 浏览器再次发出http请求(带着Authorization header)
- · 服务器端认证通过,并返回页面
- · 浏览器显示页面
项目举例
wordpress api 创建文章,返回401.
1、安装鉴权插件Application Passwords
admin登录——工具——上传插件(.zip)
用户——详情——Application Passwords——创建用户名(即该用户的名称)生成密码,记得保存下来。
2、xshell连接服务器
输入命令
echo -n "test001:123456" | base64

3、打开jmeter
Ctrl+0:线程组(作者)
Ctrl+1:HTTP请求(创建文章)
添加配置文件——HTTP Headers Manager
添加参数
Authorization:Basic空格Authorization

运行脚本,成功。
二、JWT鉴权
JWT是一种token based auth的标准。
其工作流程是这样的
- 用户使用用户名和密码进行鉴权
- 服务端进行鉴权
- 服务端给客户端分配一个加密的token
- 客户端保存这个token,以后的每个请求,客户端都会发送这个token
- 服务端通过token判断是否是鉴权过的用户,并返回请求的响应数据
JWT的特点
- 简洁:可以通过URL,POST参数或者在HTTP header发送,因为数据量小,传输速度也很快
- 自包含:payload中包含了所有用户所需要的信息,避免了多次查询数据库
JWT的应用场景
- 身份认证
- 安全要求的信息交换
JWT的结构
JWT包含了使用.分隔的三部分:
- Header 头部:Base64Url(token类型+加密算法)
- Payload 负载:Base64Url(用户信息)
- Signature 签名:算法( base64UrlEncode(header) + "." + base64UrlEncode(payload), 密钥)
其结构看起来是这样的
xxxxx.yyyyy.zzzzz
签名用于验证消息的发送者以及消息是没有经过篡改的。如果黑客获取到了payload中的用户信息,并进行了篡改,那么经过Base64编码后也会发生变化,而签名是根据Header和Payload共同决定的,签名也会不一样,服务器就会判断出不一致。
下列的JWT展示了一个完整的JWT格式,它拼接了之前的Header, Payload以及秘钥签名:

如何使用JWT?
1)用户在客户端输入用户名和密码登录服务器;
2)服务器认证通过后,返回给用户一个JWT
3)客户端只需要本地保存该token(通常使用local storage,也可以使用cookie)即可。
4)当用户下次访问时,在Authorization头部使用Bearer模式添加JWT,格式Authorization: Bearer <token>
5)服务端检查请求头Authorization中的JWT信息,如果合法,则允许用户的行为。
由于JWT是自包含的,因此减少了需要查询数据库的需要。

HTTP基本认证和JWT鉴权的更多相关文章
- JWT对SpringCloud进行系统认证和服务鉴权
JWT对SpringCloud进行系统认证和服务鉴权 一.为什么要使用jwt?在微服务架构下的服务基本都是无状态的,传统的使用session的方式不再适用,如果使用的话需要做同步session机制,所 ...
- 【Spring Cloud & Alibaba 实战 | 总结篇】Spring Cloud Gateway + Spring Security OAuth2 + JWT 实现微服务统一认证授权和鉴权
一. 前言 hi,大家好~ 好久没更文了,期间主要致力于项目的功能升级和问题修复中,经过一年时间的打磨,[有来]终于迎来v2.0版本,相较于v1.x版本主要完善了OAuth2认证授权.鉴权的逻辑,结合 ...
- Spring Boot 鉴权之—— JWT 鉴权
第一:什么是JWT鉴权 1. JWT即JSON Web Tokens,是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519),他可以用来安全的传递信息,因为传递的信息是 ...
- JWT鉴权
一.HTTP基本认证 Basic Authentication--当浏览器访问使用基本认证的网站的时候, 浏览器会提示你输入用户名和密码. http auth的过程: 客户端发送http请求 服务器发 ...
- jwt鉴权学习 (php示例代码)
前段时间听朋友讲起 jwt鉴权,博主我是一脸懵逼,通过朋友坚持不懈的讲解,我终于听懂了,jwt就是登陆token校验嘛 然而事情并不是博主想象的那么简单,在一个艳阳高照,晴空万里的夜晚,博主手贱百度了 ...
- springboot oauth 鉴权之——password鉴权相当于jwt鉴权模式
近期一直在研究鉴权方面的各种案例,这几天有空,写一波总结及经验. 第一步:什么是 OAuth鉴权 OAuth2是工业标准的授权协议.OAuth2取代了在2006创建的原始OAuthTM协议所做的工作. ...
- [Kong] basic-auth基本认证及ACL鉴权
目录 basic-auth 1. Route上启用插件 2. 创建一个Consumer 3. 为Consumer创建凭证 4. 验证凭证 ACL 用户鉴权 1. 在route上启用ACL鉴权插件 2. ...
- 通俗化讲解JWT鉴权的使用场景及结构安全
一.基于Session的应用开发的缺陷 在我们传统的B\S应用开发方式中,都是使用session进行状态管理的,比如说:保存登录.用户.权限等状态信息.这种方式的原理大致如下: 用户登陆之后,将状态信 ...
- shiro jwt 构建无状态分布式鉴权体系
一:JWT 1.令牌构造 JWT(json web token)是可在网络上传输的用于声明某种主张的令牌(token),以JSON 对象为载体的轻量级开放标准(RFC 7519). 一个JWT令牌的定 ...
随机推荐
- du 命令 -目前的目录所占的磁盘空间
Linux du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的. 1.命令格式: du [选项][文件] 2.命令功能 ...
- ruby 异常处理
begin raise 'A test exception.' rescue Exception => e puts e.message puts e.backtrace.inspect end
- rails 自定义校验及validates_each多校验
一.自定义校验 使用 validate 方法传入一个同名方法的 Symbol 即可. validate :my_validation private def my_validation if name ...
- paramiko分开执行多条命令 不像之前一样使用\n
#!/usr/bin/env python#-*- encoding -*- import paramiko transport = paramiko.Transport(('192.168.11.1 ...
- Eclipse中如何开启断言(Assert),方法有二
Eclipse中如何开启断言(Assert),方法有二:1.Run -> Run Configurations -> Arguments页签 -> VM arguments文本框中加 ...
- structs2----数据封装以及拦截器
技术分析之在Struts2框架中使用Servlet的API 1. 在Action类中也可以获取到Servlet一些常用的API * 需求:提供JSP的表单页面的数据,在Action中使用Servlet ...
- JS中的数组排序函数sort()
JavaScript实现多维数组.对象数组排序,其实用的就是原生的sort()方法,用于对数组的元素进行排序. sort() 方法用于对数组的元素进行排序.语法如下: arrayObject.sort ...
- Visual Studio Command Prompt 工具配置方法
有时候,我们无法找到Visual Studio Command Prompt,需要手动配置 打开 Visual studio2015,选择 "工具"—>"外部工具 ...
- 624. Maximum Distance in Arrays二重数组中的最大差值距离
[抄题]: Given m arrays, and each array is sorted in ascending order. Now you can pick up two integers ...
- c# json.net xml互转
json转xml: XmlDocument doc = (XmlDocument)JsonConvert.DeserializeXmlNode(jsonText,"root"); ...