一、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的标准。

其工作流程是这样的

  1. 用户使用用户名和密码进行鉴权
  2. 服务端进行鉴权
  3. 服务端给客户端分配一个加密的token
  4. 客户端保存这个token,以后的每个请求,客户端都会发送这个token
  5. 服务端通过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鉴权的更多相关文章

  1. JWT对SpringCloud进行系统认证和服务鉴权

    JWT对SpringCloud进行系统认证和服务鉴权 一.为什么要使用jwt?在微服务架构下的服务基本都是无状态的,传统的使用session的方式不再适用,如果使用的话需要做同步session机制,所 ...

  2. 【Spring Cloud & Alibaba 实战 | 总结篇】Spring Cloud Gateway + Spring Security OAuth2 + JWT 实现微服务统一认证授权和鉴权

    一. 前言 hi,大家好~ 好久没更文了,期间主要致力于项目的功能升级和问题修复中,经过一年时间的打磨,[有来]终于迎来v2.0版本,相较于v1.x版本主要完善了OAuth2认证授权.鉴权的逻辑,结合 ...

  3. Spring Boot 鉴权之—— JWT 鉴权

    第一:什么是JWT鉴权 1. JWT即JSON Web Tokens,是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519),他可以用来安全的传递信息,因为传递的信息是 ...

  4. JWT鉴权

    一.HTTP基本认证 Basic Authentication--当浏览器访问使用基本认证的网站的时候, 浏览器会提示你输入用户名和密码. http auth的过程: 客户端发送http请求 服务器发 ...

  5. jwt鉴权学习 (php示例代码)

    前段时间听朋友讲起 jwt鉴权,博主我是一脸懵逼,通过朋友坚持不懈的讲解,我终于听懂了,jwt就是登陆token校验嘛 然而事情并不是博主想象的那么简单,在一个艳阳高照,晴空万里的夜晚,博主手贱百度了 ...

  6. springboot oauth 鉴权之——password鉴权相当于jwt鉴权模式

    近期一直在研究鉴权方面的各种案例,这几天有空,写一波总结及经验. 第一步:什么是 OAuth鉴权 OAuth2是工业标准的授权协议.OAuth2取代了在2006创建的原始OAuthTM协议所做的工作. ...

  7. [Kong] basic-auth基本认证及ACL鉴权

    目录 basic-auth 1. Route上启用插件 2. 创建一个Consumer 3. 为Consumer创建凭证 4. 验证凭证 ACL 用户鉴权 1. 在route上启用ACL鉴权插件 2. ...

  8. 通俗化讲解JWT鉴权的使用场景及结构安全

    一.基于Session的应用开发的缺陷 在我们传统的B\S应用开发方式中,都是使用session进行状态管理的,比如说:保存登录.用户.权限等状态信息.这种方式的原理大致如下: 用户登陆之后,将状态信 ...

  9. shiro jwt 构建无状态分布式鉴权体系

    一:JWT 1.令牌构造 JWT(json web token)是可在网络上传输的用于声明某种主张的令牌(token),以JSON 对象为载体的轻量级开放标准(RFC 7519). 一个JWT令牌的定 ...

随机推荐

  1. AWS + Stunnel + Squid ***

    [需求] 第一,能***. 第二,在企业网络要能突破端口限制. [原理] 利用AWS提供的一年免费EC2服务,搭建一台自己的VPS,在VPS中利用Stunnel与本机建立加密连接,将本地http请求通 ...

  2. top命令 Linux查看CPU和内存使用情况,cpu监控之一

    一.top命令 top命令是一个功能十分强大的监控系统的工具,对于系统管理员而言尤其重要.但是,它的缺点是会消耗很多系统资源. 在系统维护的过程中,随时可能有需要查看 CPU 使用率,并根据相应信息分 ...

  3. 有关Backgroundworker

    (一)Backgroundworker取消时应该用的有关代码: CancelAsync方法是在前台主线程用的,CancellationPending属性是在后台子线程用的.实际的使用方式应该是这样的: ...

  4. elasticsearch 概念与架构(3)

    转自:https://devops.taobao.com/ Node(节点):单个的装有Elasticsearch服务并且提供故障转移和扩展的服务器. Cluster(集群):一个集群就是由一个或多个 ...

  5. linux命令-passwd

    修改密码 #passwd 新密码 重新输入密码 #passwd dennywang  ////命令+用户名 ////////////////////////////////////////////// ...

  6. cygwin选择安装包选项搭建NDK开发环境/配置cygwin的root权限

    9.Search是可以输入你要下载的包的名称,能够快速筛选出你要下载的包.那四个单选按钮是选择下边树的样式,默认就行,不用动.View默认是Category,建议改成full显示全部包再查,省的一些包 ...

  7. 虚拟机VMware的安装以及指南

    VMware是一个非常强大的虚拟软件,它的更新速度非常的快,随着软件的更新速度的加快,它的大小会越来越大,但是新的版本大多数会是给企业使用的,对于我们而言,不那么的需要,所以,我们只需要使用一些差不多 ...

  8. MySQL数据库引擎简介

    简单说,当你访问数据库时,不管是手工访问,还是程序访问,都不是直接读写数据库文件,而是通过数据库引擎去访问数据库文件.以关系型数据库为例,你发SQL语句给数据库引擎,数据库引擎解释SQL语句,提取出你 ...

  9. Android常用开源库集合【持续更新】

    1.FastJson  阿里巴巴工程师做的一个方便的JSON转换库 2.ButterKnife 只要作用能代替代码中大量的findviewbyid语句的使用,使用@injectview注入方式 3.v ...

  10. Absolute Layout

    ----------------siwuxie095 根面板 contentPane 的默认布局为 Border Layout,将其 切换为 Absolute Layout Absolute Layo ...