HTTP协议规范中有两种认证方式,一种是Basic认证,另外一种是Digest认证,这两种方式都属于无状态认证方式,所谓无状态即服务端都不会在会话中记录相关信息,客户端每次访问都需要将用户名和密码放置报文一同发送给服务端,但这并不表示你在浏览器中每次访问都要自己输入用户名和密码,可能是你第一次输入账号后浏览器就保留在内存中供后面的交互使用。先看下HTTP协议的Basic认证模式。

既然是HTTP协议规范,那其实就是约束浏览器厂商与web容器厂商实现各自软件时的行为约束,例如典型的一个认证交互过程是:浏览器向web容器发送http请求报文,web容器接收到http请求报文后解析需要访问的资源,如果该资源刚好是受保护资源,web容器则向浏览器发送认证http响应报文,浏览器接收到报文后弹出窗口让用户输入账号及密码,接着再次发送包含了账号信息的http请求报文,web容器对账号信息进行鉴权,通过验证则返回对应资源,否则重新认证。

Basic Access Authentication scheme是在HTTP1.0提出的认证方法,它是一种基于challenge/response的认证模式,针对特定的realm需要提供用户名和密码认证后才可访问,其中密码使用明文传输。Basic模式认证过程如下:

①浏览器发送http报文请求一个受保护的资源。

②服务端的web容器将http响应报文的响应码设为401,响应头部加入WWW-Authenticate: Basic realm=”myTomcat”。

③浏览器弹出对话框让用户输入用户名和密码,并用Base64进行编码,实际是用户名+冒号+密码进行Base64编码,即Base64(username:password),这次浏览器就会在HTTP报文头部加入Authorization: Basic bXl0b21jYXQ=。

④服务端web容器获取HTTP报文头部相关认证信息,匹配此用户名与密码是否正确,是否有相应资源的权限,如果认证成功则返回相关资源,否则再执行②,重新进行认证。

⑤以后每次访问都要带上认证头部。

服务端返回的认证报文中包含了realm=”myTomcat”,realm的值用于定义保护的区域,在服务端可以通过realm将不同的资源分成不同的域,域的名称即为realm的值,每个域可能会有自己的权限鉴别方案。

Basic认证模式有两个明显的缺点:①无状态导致每次通信都要带上认证信息,即使是已经认证过的资源;②传输安全性不足,认证信息用Base64编码,基本就是明文传输,很容易对报文截取并盗用认证信息。

转载于:https://www.cnblogs.com/ostin/p/9327926.html

认证模式之Basic模式相关推荐

  1. HTTP认证模式:Basic and Digest Access Authentication

    一. Basic 认证 客户端以" : "连接用户名和密码后,再经BASE64编码( Base64 Content-Transfer-Encoding )通过Authorizati ...

  2. 认证模式之Digest模式

    TTP协议规范的另一种认证模式是Digest模式,在HTTP1.1时被提出来,它主要是为了解决Basic模式安全问题,用于替代原来的Basic认证模式,Digest认证也是采用challenge/re ...

  3. (七)Spring Security (spring-cloud-starter-oauth2)应用详解------认证授权服务------授权码模式和密码模式

    OAuth2.0介绍 OAuth(开放授权)是一个开放标准,允许用户授权第三方应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方应用或分享他们数据的所有内容.OAuth2. ...

  4. [转]asp.net权限认证:HTTP基本认证(http basic)

    本文转自:http://www.cnblogs.com/lanxiaoke/p/6353955.html HTTP基本认证示意图 HTTP基本认证,即http basic认证. 客户端向服务端发送一个 ...

  5. 浅谈浏览器标准模式与怪异模式、文档类型

    在网页设计制作过程中,新人往往会遇到一个问题,就是浏览器的不兼容问题.这种状况在大学学习过程中会经常遇到,但一直也没有得到很好的解决,今天有机会仔细研究了一下,这是有关浏览器标准模式与怪异模式之间的问 ...

  6. 分布式事务——分布式事务简介、分布式事务框架 Seata(AT模式、Tcc模式、Tcc Vs AT)、分布式事务—MQ

    分布式事务--分布式事务简介.分布式事务框架 Seata(AT模式.Tcc模式.Tcc Vs AT).分布式事务--MQ 一.分布式事务简介 如果不是分布式环境的话一般不会接触到这种,一旦是微服务这种 ...

  7. 主模式和野蛮模式_网络野蛮行为的含混性和观念

    主模式和野蛮模式 Taking a dig at Jakob Nielsen's po-faced disapproval of Flash, Joel Spolsky wrote a post th ...

  8. 计算机网络实验(华为eNSP模拟器)——第六章 密码模式和AAA模式

    目录 一.用户级别 三.用户页面 四.用户页面的命令 1.Console用户界面 2.虚拟类型终端VTY用户界面(远程登陆) 五.用户界面的用户认证 1.password模式 (1)进入Console ...

  9. SOA系列文章(二):服务设计原理:服务模式和反模式

    服务设计系列的法则已经发展到最佳通信实践和取样相关编码的程度.本文提供了设计和实现网络服务的基本原理,并且对面向服务的体系结构(SOA)的相关概念做了一个简要的回顾,以及有关于几种模式和反模式的详细讨 ...

最新文章

  1. 人工神经网络背后的数学原理!
  2. c语言实验报告世界时钟,基于LCD的电子时钟实验报告.doc
  3. 3Mysql 的常用操作
  4. 03-Tomcat服务器
  5. 写爬虫,不会正则怎么行?
  6. MongoDB基础教程系列--目录结构
  7. Odoo访问权限(一)
  8. [css] 如何使用伪元素实现增大点击热区来增加用户体验?
  9. c++语言成绩统计系统数组,急求!!!关于学生成绩管理系统的C++ 结构体数组...
  10. 如何打开java_怎样运行java
  11. windows安装ffmpeg_免费实用的录屏工具!支持全屏、特定窗口、选定区域录制,支持添加水印、嵌入摄像头(附ffmpeg安装)...
  12. 记录 || 雨后王母山仙境
  13. iOS开发多线程篇---线程间的通信
  14. 一次linux root密码错修改历程
  15. zabbix监控Nginx/Tomcat/MySQL
  16. 卡尔曼滤波算法详细推导
  17. 服务器摆放需要预留U位么_客厅沙发怎么摆放?六种方法教你如何摆放!(实用荐读)...
  18. 2020-10-15 Comsl学习3
  19. android动态扩容数组,ArrayList 扩容 Android Java 真的不一样
  20. 【深度学习】ReID相关知识点解析(PCB、BoT、MGN)

热门文章

  1. Docker selenium自动化 - Python调用容器实例跑自动化查天气实例演示,docker selenium自动化环境部署过程
  2. Windows 技术篇 - 如何查看cpu支持的指令集、型号、属性等详细信息,使用cpu-z工具查看处理器、内存、显卡、主板、缓存、SPD信息方法
  3. C语言实现割线法求零点以及详解割线法
  4. Android OpenGL ES 2.0绘制简单三角形
  5. 快速寻找满足条件的两个数
  6. 微型计算机原理答案第四章,微机原理第四章习题答案.doc
  7. 简析并查集[C/C++]
  8. 是什么_什么是模电,什么是数电
  9. iPhone音频播放后台控制
  10. 待处理,待学习(每日更新)