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令牌的定 ...
随机推荐
- PhoneGap应用图标icon和启动页面SplashScreen
app/config.xml <icon gap:platform="android" gap:qualifier="ldpi" src="re ...
- 如何使32位Linux支持4G以上内存
问题 Linux无法支持超过4G的内存,笔者使用的Linux是CentOS 5,机器是DELL PE1950服务器. 原因: X86系统默认寻址能力的限制 解决办法: 安装具有PAE(物理 ...
- java 多线程系列基础篇(五)之线程等待与唤醒
1.wait(), notify(), notifyAll()等方法介绍 在Object.java中,定义了wait(), notify()和notifyAll()等接口.wait()的作用是让当前线 ...
- 问题:table 可否实现对角线;结果:HTML 斜线 表头
<HTML> <HEAD> <TITLE>斜线表头</TITLE> </HEAD> <script Language=&q ...
- C语言学习笔记--指针和数组的关系
1.数组的本质 (1)数组是一段连续的内存空间 (2)数组的空间大小:sizeof(array_type)*array_size; (3)数组名可看做指向数组第一个元素的常量指针 (4)数组声明时编译 ...
- Markdown简要规则
We believe that writing is about content, about what you want to say – not about fancy formatting. 我 ...
- MyBatis总结七:动态sql和sql片段
开发中,sql拼接很常见,所以说一下动态sql: 1 if 2 chose,when,otherwise 3 where,set 4 foreach 用法解析(现有一张users表 内有id user ...
- java输入输出--I/O操作基础知识学习
一.java的I/O流 1. 输入流(字节流和字符流,字节流操作的数据单元是8位的字节,字符流操作的是16位的字符)(InputStream 和Reader作为基类) 2.输出流(字节流和字符流,字节 ...
- apaache php 日记设计
有个客户服务器是用apache搭建的,最近总是感觉站很慢,服务器很慢很卡,有时候甚至网 站都打不开,后来经过排查分析原来是里面的access.log和error.log这两个文件要经常上去看,和清理, ...
- __clone()方法
<?php class NbaPlayer{ public $name; } $james = new NbaPlayer(); $james->name = 'James'; echo ...