《HTTP 权威指南》笔记:第十二章 基本认证体制
导言
客户端可以通过网络来得到想要的信息,但是有一些信息并不能是对所有人都能看到的,因此必须有一种认证机制.
服务器需要通过这种方式来了解用户身份,一旦服务器知道了用户的身份,就可以让用户能够访问请求的资源.
这一章讲了最常见的 HTTP 认证形式之一: 基本认证(basic authentication)
HTTP 的 challenge/response 框架
框架的流程
- 请求:客户端向服务器进行请求文件,命令为 : GET,首部:无.
- 质询:服务器用 401 Unauthorized 说明需要客户端提供用户名和密码,首部: WWW-Anthenticate(在这个首部中有两个内容:对保护区域的描述 & 认证算法)
- 授权:客户端重新发出请求,并且伴随着 Anthorization 首部(在这个首部中包含着用户名与密码、认证算法),方法为 GET
- 成功:如果授权证书是正确的,服务器将文档传递给客户端,首部: 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 相关知识
基本认证首部:
格式:
- 质询: WWW-Authenticate: Basic realm = "quoted-realm"
- 响应: Authorization: Basic base64-username-and-password
具体细节:
- 质询——服务器发往客户端:因为在网页的不同部分可能会有不同的密码,因此需要设置域.
- 响应——客户端发往服务器:首先将用户的 user-name 和 password 用“:”连接起来,然后稍加扰码(Base-64编码)
Basic authentication 的安全缺陷
- Base-64 编码容易被解码,因此其密码实际上就是“明文”传送的.
- 没有措施防止重放攻击.
- 可能存在假冒行为,让用户相信他连接是一个受基本认证保护的合法主机.
解决方案
通过将 Basic Authentication 与加密数据传输配合使用,通过安全加密技术进行加密.
《HTTP 权威指南》笔记:第十二章 基本认证体制的更多相关文章
- Android群英传笔记——第十二章:Android5.X 新特性详解,Material Design UI的新体验
Android群英传笔记--第十二章:Android5.X 新特性详解,Material Design UI的新体验 第十一章为什么不写,因为我很早之前就已经写过了,有需要的可以去看 Android高 ...
- Gradle 1.12用户指南翻译——第二十二章. 标准的 Gradle 插件
其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Github上的地址: https://g ...
- [CSAPP笔记][第十二章并发编程]
第十二章 并发编程 如果逻辑控制流在时间上是重叠,那么它们就是并发的(concurrent).这种常见的现象称为并发(concurrency). 硬件异常处理程序,进程和Unix信号处理程序都是大家熟 ...
- o'Reill的SVG精髓(第二版)学习笔记——第十二章
第十二章 SVG动画 12.1动画基础 SVG的动画特性基于万维网联盟的“同步多媒体集成语言”(SMIL)规范(http://www.w3.org/TR/SMIL3). 在这个动画系统中,我们可以指定 ...
- 《APUE》读书笔记第十二章-线程控制
本章中,主要是介绍控制线程行为方面的内容,同时介绍了在同一进程中的多个线程之间如何保持数据的私有性以及基于进程的系统调用如何与线程进行交互. 一.线程属性 我们在创建线程的时候可以通过修改pthrea ...
- java编程思想读书笔记 第十二章 通过异常处理错误(下)
1.异常的限制 当覆盖方法的时候,仅仅能抛出在基类方法的异常说明里列出的那些异常. 这意味着,当基类使用的代码应用到其派生类对象的时候,一样能够工资,异常也不例外. 以下的样例是在编译时施加在异常上面 ...
- 《机器学习实战》学习笔记第十二章 —— FP-growth算法
主要内容: 一. FP-growth算法简介 二.构建FP树 三.从一颗FP树中挖掘频繁项集 一. FP-growth算法简介 1.上次提到可以用Apriori算法来提取频繁项集,但是Aprior ...
- 学习笔记 第十二章 CSS3+HTML5网页排版
第12章 CSS3+HTML5网页排版 [学习重点] 正确使用HTML5结构标签 正确使用HTML5语义元素 能够设计符合标准的网页结构 12.1 使用结构标签 在制作网页时,不仅需要使用< ...
- Linux 笔记 - 第十二章 Shell 脚本
博客地址:http://www.moonxy.com 一.前言 常见的编程语言分为两类:一类是编译型语言,如:C.C++ 和 Java等,它们远行前要经过编译器的编译.另一类是解释型语言,不需要编译, ...
随机推荐
- linux 中部署 rsync 实现文件远程备份及 同步
客户端:数据源:服务端:数据接收方 rsync官方文档:https://www.samba.org/ftp/rsync/rsync.html 手动测试用“通过远程外壳访问"里的语法: 参考1 ...
- Mysqldump 参数大全
参数 参数说明 --all-databases , -A 导出全部数据库. mysqldump -uroot -p --all-databases --all-tablespaces , -Y ...
- 前端 --- 1 HTML
一.文档结构 <!DOCTYPE html> <html lang="zh-CN"> #这个lang表示语言,zh-CN是中文的意思, 如果以英文为主,就写 ...
- Provinces of China
https://en.wikipedia.org/wiki/Provinces_of_China#Province
- Oracle使用——oracle 忘记用户密码登录
背景 有时候我们忘记了oracle登录的用户密码,甚至是用户名称都不确定,应该怎么登陆呢 操作系统 CentOS7 Oracle12c 操作步骤 使用sqlplus登录系统:sqlplus / a ...
- 清理本地Maven仓库
目录 1.清理target 2.清理该项目依赖的本地仓库中的maven包 3.清理maven本地仓库中下载失败的包 参考: 1.清理target mvn clean -U 2.清理该项目依赖的本地仓库 ...
- Elasticsearch-->Get Started--> Exploring Your Data
Exploring Your Data Sample Dataset Now that we’ve gotten a glimpse of the basics, let’s try to work ...
- P4246 [SHOI2008]堵塞的交通
思路 同LOJ121 动态图连通性的板子 好像有很神的线段树做法,不会,先码住 代码 #include <cstdio> #include <algorithm> #inclu ...
- ZooKeeper分布式过程协同技术详解2——了解ZooKeeper
这个服务如何实现这些协作方面的原语? ZooKeeper基础
- ExceptionLogger
应用1:webconfig.cs中设置 public static class WebApiConfig { public static void Register(HttpConfiguration ...