HTTP - 基本认证
有数百万的人在用 Web 进行私人事务处理,访问私有的数据。通过 Web 可以很方便地访问这些信息,但是仅仅是方便访问还是不够的。我们要保证只有特定的人能看到我们的敏感信息并且能够执行我们的特权事务。并不是所有的信息都能够公开发布的。服务器需要通过某种方式来了解用户身份。一旦服务器知道了用户身份,就可以判定用户可以访问的事务和资源了。通常是以提供用户名和密码的方式来进行认证的。基本认证(Basic Authentication)是 HTTP 提供的一种原生的质询/响应框架,它简化了对用户的认证过程。
基本认证的步骤

上图描述了一个基本认证的过程:
- 客户端发送一条没有认证信息的请求(参见上图 (a))。
- 服务器需要对用户进行质询,返回了一条 401 Unauthorized 响应,并在 WWW-Authenticate 首部说明如何以及在哪里进行认证(参见上图 (b))。
- 客服端程序发出请求,但会在 Authentication 首部附上加密的密码和其他一些认证参数(参见上图 (c))。
- 授权请求成功完成时,服务器会返回一个正常的状态码(比如,200 OK);对高级认证算法来说,可能还会在 Authentication-Info 首部附上一些额外的信息(参见上图 (d))。
安全域
上图的 WWW-Authenticate 质询中包含了一个 realm 指令。 Web 服务器会将受保护的文档组织成一个安全域(security realm)。每个安全域都可以有不同的授权用户集。
Base-64 编码
HTTP 基本认证将(由冒号分隔的)用户名和密码打包在一起,并用 Base-64 编码方式对其进行编码。下图显示了使用 Base-64 编码的基本认证实例:

代理认证
中间的代理服务器也可以实现认证功能。有些组织会在用户访问服务器、LAN 或无线网络之前,用代理服务器对其进行认证。可以在代理服务器上对访问策略进行集中管理,因此,通过代理服务器提供对某组织内部资源的统一访问控制是一种很便捷的方式。这个过程的第一步就是通过代理认证来识别身份。
代理认证的步骤与 Web 服务器身份验证的步骤相同。但首部和状态码都有所不同。下表列出了 Web 服务器和代理在认证中使用的状态码和首部的差异。
| Web 服务器 | 代理 |
| Authorized status code: 401 | Authorized status code: 407 |
| WWW-Authenticate | Proxy-Authenticate |
| Authorization | Proxy-Authorization |
| Authorization-Info | Proxy-Authorization-Info |
HTTP - 基本认证的更多相关文章
- .NET Core中的认证管理解析
.NET Core中的认证管理解析 0x00 问题来源 在新建.NET Core的Web项目时选择“使用个人用户账户”就可以创建一个带有用户和权限管理的项目,已经准备好了用户注册.登录等很多页面,也可 ...
- ASP.NET Core 中的那些认证中间件及一些重要知识点
前言 在读这篇文章之间,建议先看一下我的 ASP.NET Core 之 Identity 入门系列(一,二,三)奠定一下基础. 有关于 Authentication 的知识太广,所以本篇介绍几个在 A ...
- Web APi之认证(Authentication)两种实现方式【二】(十三)
前言 上一节我们详细讲解了认证及其基本信息,这一节我们通过两种不同方式来实现认证,并且分析如何合理的利用这两种方式,文中涉及到的基础知识,请参看上一篇文中,就不再叙述废话. 序言 对于所谓的认证说到底 ...
- Android 指纹认证
安卓指纹认证使用智能手机触摸传感器对用户进行身份验证.Android Marshmallow(棉花糖)提供了一套API,使用户很容易使用触摸传感器.在Android Marshmallow之前访问触摸 ...
- 全网独家MongoDB Certified DBA Associate考试认证视频
该视频意在让所有学员一次通过考试,避免重复考试而承担的巨额考试费用! 目前MongDB发展迅猛,有赶超mysql,和oracle看齐的苗头.在这个时候MongoDB也适时的推出了官方的认证考试&quo ...
- Linux 利用Google Authenticator实现ssh登录双因素认证
1.介绍 双因素认证:双因素身份认证就是通过你所知道再加上你所能拥有的这二个要素组合到一起才能发挥作用的身份认证系统.双因素认证是一种采用时间同步技术的系统,采用了基于时间.事件和密钥三变量而产生的一 ...
- MVC5 - ASP.NET Identity登录原理 - Claims-based认证和OWIN
在Membership系列的最后一篇引入了ASP.NET Identity,看到大家对它还是挺感兴趣的,于是来一篇详解登录原理的文章.本文会涉及到Claims-based(基于声明)的认证,我们会详细 ...
- "用户增长"--快速身份认证实现用户增长的技术和产品方案
"用户增长"--快速身份认证实现用户增长的技术和产品方案 1 引言 作为一个互联网产品,用户量的增长是一个非常重要的衡量指标. 这是一个集合了销售,市场,运营,技术的综合能力. ...
- 基于token的多平台身份认证架构设计
基于token的多平台身份认证架构设计 1 概述 在存在账号体系的信息系统中,对身份的鉴定是非常重要的事情. 随着移动互联网时代到来,客户端的类型越来越多, 逐渐出现了 一个服务器,N个客户端的格 ...
- Nodejs之MEAN栈开发(八)---- 用户认证与会话管理详解
用户认证与会话管理基本上是每个网站必备的一个功能.在Asp.net下做的比较多,大体的思路都是先根据用户提供的用户名和密码到数据库找到用户信息,然后校验,校验成功之后记住用户的姓名和相关信息,这个信息 ...
随机推荐
- mysql全库备份数据库脚本
#!/bin/sh DATE=`date +%Y%m%d` DEL_DATE=$(date -d '-30 days' "+%Y%m%d") HOST USER=admin PAS ...
- 如何用boost::serialization去序列化派生模板类(续)
在 如何用boost::serialization去序列化派生模板类这篇文章中,介绍了序列化派生类模板类, 在写測试用例时一直出现编译错误,调了非常久也没跳出来,今天偶然试了一下...竟然调了出来. ...
- ubuntu 15.04开放mysql远程连接
首先查看端口是否打开 netstat -an|grep 3306 此图为开启3306端口的截图,之前显示为. . . 127.0.0.1:3306 . . . 打开mysql配置文件vi /etc/m ...
- Swift学习笔记二
Swift是苹果公司开发的一门新语言,它当然具备面向对象的许多特性,现在开始介绍Swift中类和对象的语法. 对象和类 用"class"加上类名字来创建一个类,属性声明和声明常量或 ...
- Javascript可变长度参数列表 - Arguments对象
在一个函数体内,标识符arguments具有特殊含义. Arguments对象是一个类似数组的对象 eg: 验证函数参数的正确数目 function f(x, y, z) { if (argument ...
- 关于Android与pc通信时中文乱码的分析和解决
初步实现了Android与pc服务器的通信之后,又碰到了传说中令人头疼不已的中文乱码问题.既然出现了乱码,那么原因自然是协议不通了.我们知道eclipse中默认的编码标准是GBK,而安卓程序开发所默认 ...
- /proc/sys/net/ipv4/下各项的意义
/proc/sys/net/ipv4/icmp_timeexceed_rate这个在traceroute时导致著名的“Solaris middle star”.这个文件控制发送ICMP Tim ...
- 用 Graphviz 可视化函数调用
http://www.ibm.com/developerworks/cn/linux/l-graphvis/
- unity工程接入Android sdk后真机测试解锁屏后退出的解决
unity工程接入如91.移动支付等Android sdk后,真机运行尤其是在4.0+以上坏境,往往会出现解锁屏后退出的情况,解决办法如下: 可以在AndroidManifest.xml中所有的con ...
- Ruby on Rails Tutorial 第一章 之 搭建开发环境
云端开发环境,Cloud9(https://ide.c9.io/).这个开发环境预先安装好了Rails开发所需要的大多数软件,包括Ruby.RubyGems和Git,需要自己安装Rails. 1.安装 ...