导言

客户端可以通过网络来得到想要的信息,但是有一些信息并不能是对所有人都能看到的,因此必须有一种认证机制.
服务器需要通过这种方式来了解用户身份,一旦服务器知道了用户的身份,就可以让用户能够访问请求的资源.
这一章讲了最常见的 HTTP 认证形式之一: 基本认证(basic authentication)

HTTP 的 challenge/response 框架

框架的流程

  1. 请求:客户端向服务器进行请求文件,命令为 : GET,首部:无.
  2. 质询:服务器用 401 Unauthorized 说明需要客户端提供用户名和密码,首部: WWW-Anthenticate(在这个首部中有两个内容:对保护区域的描述 & 认证算法)
  3. 授权:客户端重新发出请求,并且伴随着 Anthorization 首部(在这个首部中包含着用户名与密码、认证算法),方法为 GET
  4. 成功:如果授权证书是正确的,服务器将文档传递给客户端,首部: Anthentication-Info(其中包含与授权会话相关的附加信息)

security realm 机制

定义:

Web 服务器将受保护的文档组织成 security realm, 每个 security realm 可以有不同的授权用户集.

格式:

在 WWW-Authentication 质询首部中含有** realm **指令,用于提示用户应该用什么用户名和密码.
示例:
HTTP/1.0 401 Unauthorized
WWW-Authenticate: Basic realm=" Corporate Financials"

Basic Authentication 相关知识

基本认证首部:

格式:

  1. 质询: WWW-Authenticate: Basic realm = "quoted-realm"
  2. 响应: Authorization: Basic base64-username-and-password

具体细节:

  1. 质询——服务器发往客户端:因为在网页的不同部分可能会有不同的密码,因此需要设置域.
  2. 响应——客户端发往服务器:首先将用户的 user-name 和 password 用“:”连接起来,然后稍加扰码(Base-64编码)

Basic authentication 的安全缺陷

  1. Base-64 编码容易被解码,因此其密码实际上就是“明文”传送的.
  2. 没有措施防止重放攻击.
  3. 可能存在假冒行为,让用户相信他连接是一个受基本认证保护的合法主机.

解决方案

通过将 Basic Authentication 与加密数据传输配合使用,通过安全加密技术进行加密.

《HTTP 权威指南》笔记:第十二章 基本认证体制的更多相关文章

  1. Android群英传笔记——第十二章:Android5.X 新特性详解,Material Design UI的新体验

    Android群英传笔记--第十二章:Android5.X 新特性详解,Material Design UI的新体验 第十一章为什么不写,因为我很早之前就已经写过了,有需要的可以去看 Android高 ...

  2. Gradle 1.12用户指南翻译——第二十二章. 标准的 Gradle 插件

    其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Github上的地址: https://g ...

  3. [CSAPP笔记][第十二章并发编程]

    第十二章 并发编程 如果逻辑控制流在时间上是重叠,那么它们就是并发的(concurrent).这种常见的现象称为并发(concurrency). 硬件异常处理程序,进程和Unix信号处理程序都是大家熟 ...

  4. o'Reill的SVG精髓(第二版)学习笔记——第十二章

    第十二章 SVG动画 12.1动画基础 SVG的动画特性基于万维网联盟的“同步多媒体集成语言”(SMIL)规范(http://www.w3.org/TR/SMIL3). 在这个动画系统中,我们可以指定 ...

  5. 《APUE》读书笔记第十二章-线程控制

    本章中,主要是介绍控制线程行为方面的内容,同时介绍了在同一进程中的多个线程之间如何保持数据的私有性以及基于进程的系统调用如何与线程进行交互. 一.线程属性 我们在创建线程的时候可以通过修改pthrea ...

  6. java编程思想读书笔记 第十二章 通过异常处理错误(下)

    1.异常的限制 当覆盖方法的时候,仅仅能抛出在基类方法的异常说明里列出的那些异常. 这意味着,当基类使用的代码应用到其派生类对象的时候,一样能够工资,异常也不例外. 以下的样例是在编译时施加在异常上面 ...

  7. 《机器学习实战》学习笔记第十二章 —— FP-growth算法

    主要内容: 一.  FP-growth算法简介 二.构建FP树 三.从一颗FP树中挖掘频繁项集 一.  FP-growth算法简介 1.上次提到可以用Apriori算法来提取频繁项集,但是Aprior ...

  8. 学习笔记 第十二章 CSS3+HTML5网页排版

    第12章   CSS3+HTML5网页排版 [学习重点] 正确使用HTML5结构标签 正确使用HTML5语义元素 能够设计符合标准的网页结构 12.1  使用结构标签 在制作网页时,不仅需要使用< ...

  9. Linux 笔记 - 第十二章 Shell 脚本

    博客地址:http://www.moonxy.com 一.前言 常见的编程语言分为两类:一类是编译型语言,如:C.C++ 和 Java等,它们远行前要经过编译器的编译.另一类是解释型语言,不需要编译, ...

随机推荐

  1. 汉诺塔问题(Hanoi Tower)递归算法解析(Python实现)

    汉诺塔问题 1.问题来源:汉诺塔来源于印度传说的一个故事,上帝创造世界时作了三根金刚石柱子,在一根柱子上从上往下从小到大顺序摞着64片黄金圆盘.上帝命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根 ...

  2. 论证与测试 + 用EA画uml

    论证与测试,谁才是真正的不二法门 第十三次作业的时候,我们开始使用Junit对代码进行测试,主要是测试代码的覆盖率,以及分支的覆盖率.(主要是检查JSF写的是否是符合规范,……). 这里我给出我测试的 ...

  3. 记录结果再利用的"动态规划"之背包问题

    参考<挑战程序设计竞赛>p51 https://www.cnblogs.com/Ymir-TaoMee/p/9419377.html 01背包问题 问题描述:有n个重量和价值分别为wi.v ...

  4. 【Python025-字典】

    一.字典 1.创建和访问字典(字典是大括号表示,字典是映射类型) 语法类型:键:key,值:value,用冒号隔开 --- >>> dict1 = {'李宁':'一切皆有可能','耐 ...

  5. Firemonkey的几个特色属性(一)

    基于FireMonkey的程序开发与VCL确实有些不同,很多属性发生了变化,尤其是外观方面. 1.Margins.Padding.Position Margins:指定了当前控件在父控件(Parent ...

  6. 关于no matching key exchange method found. Their offer: diffie-hellman-group1-sha1的解决办法

    原文链接:https://mycyberuniverse.com/error/no-matching-key-exchange-method-found-openssh7.html What caus ...

  7. gimp的使用笔记

    gimp是德国的开源软件! 跟其他软件一样, 包括file, edit, view, 还有select, color , filter, 和 window. 窗口window就包括所有的dockabl ...

  8. discuz 不能上传头像提示can not write to the data/tmp folder

    # discuz 不能上传头像提示can not write to the data/tmp folder 解释: disucz头像上传不成功,提示data/tmp目录没有写入权限,这里的data/t ...

  9. GTK 菜单的创建详解

    1 定义 1.1 菜单由菜单条和菜单项组成,它们的定义如下所示: 菜单项(GtkMenuItem):添加到菜单条或下拉菜单中构件 顶层菜单项:添加到菜单条上的菜单项称为顶层菜单项 下拉菜单(GtkMe ...

  10. python中包的语法

    1.什么是包? 包是一种通过".模块名"来组织python模块名称空间的方式.我们穿件的每个文件夹都可以被称为包. 但是要注意, 在python2中规定. 包内必须存在__init ...