《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等,它们远行前要经过编译器的编译.另一类是解释型语言,不需要编译, ...
随机推荐
- 集合框架-Map集合
* Map集合和Collection集合的区别? * Map集合存储元素是成对出现的,Map集合的键是唯一的,值是可重复的.可以把这个理解为:夫妻对 * Collection集合存储元素是单独出现的, ...
- 尚硅谷面试第一季-11MyBatis中当实体类中的属性名和表中的字段名不一样怎么办
问题: MyBatis中当实体类中的属性名和表中的字段名不一样 ,怎么办 ? 解决方案: 1.写sql语句时起别名 <!-- id属性:必须是接口中方法的方法名 resultType属性:必须是 ...
- mysqldump: Couldn't execute 'SHOW VARIABLES LIKE 'ndbinfo_version'': Native table 'performance_schema'.'session_variables' has the wrong structure (1682)
centos7.5 导出整个数据库报错 问题: [root@db01 ~]# mysqldump -uroot -pBgx123.com --all-databases --single-transa ...
- SpringBoot 使用okhttp3
1.添加pom.xml依赖 <dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId& ...
- How to resize slide dimensions without resizing any objects on the slide?
IF you are competent to unzip the pptx file and modify the XML it can be done, the slide size will c ...
- Asp.net MVC 控制器ActionResult的例子
ActionResult 父类型 ViewResult View() 多重载应用 PartialViewResult PartialView() 部分试图 New EmptyResult() 空 如 ...
- WinMerge 过滤器用法
WinMerge是一款开源的文件对比合并工具.http://winmerge.org/WinMerge提供了“过滤器”功能,可以在对比时排除特定的目录或文件. 1.编辑过滤规则工具 -> 过滤器 ...
- bootstrap图片上传功能
重点: fileupload .loadImage 引用js: <!-- Bootstrap CSS --> <link href="~/lib/bootstrap/ ...
- CSS3动画详解(结合实例)
一.使用CSS3动画代替JS动画 JS动画频繁操作DOM导致效率非常低 在频繁的操作DOM和CSS时,浏览器会不停的执行重排(reflow)和重绘(repaint) 可以避免占用JS主线程 这边就不细 ...
- Springboot+JdbcTemplate +thymeleaf 页面 做迷你版的bug系统
https://www.cnblogs.com/qianjinyan/p/10065160.html 在我上一篇随笔中介绍了关于要做的系统的数据结构,连接如上 今天实现连接mssql server, ...