标签:编码方式 als ati 认证 定义 就会 过程 第一步 commit
HTTP 提供了一个原生的质询/响应(challenge/response)框架,简化了对用户的认证过程。 HTTP 的认证模型如下图所示:
Web 应用程序收到一条 HTTP 的请求报文时,服务器没有按照请求执行动作,而是以一个 "认证质询" 进行响应,要求用户提供一些保密信息来说明他是谁,从而对其进行质询。
用户再次发起请求时,要附上保密证书(用户名和密码)。如果证书不匹配,服务器可以再次质询客户端,或产生一条错误信息。如果证书匹配,就可以正常完成请求了。
HTTP 通过一组可定制的控制首部,为不同的认证协议提供了一个可扩展框架。下面列出的首部格式和内容会随认证协议的不同而发生变化。认证协议也是在 HTTP 认证首部中指定的。
HTTP 定义了两个官方的认证协议:基本认证和摘要认证。
认证的 4 个步骤:
步骤 | 首部 | 描述 | 方法/状态 |
---|---|---|---|
请求 | 第一条请求没有认证信息 | GET | |
质询 | WWW-Authenticate | 服务器用 401 状态拒绝了请求,说明需要用户提供用户名和密码。服务器上可能会分为不同的区域,每个区域都有自己的密码,所以服务器会在 WWW-Authenticate 首部对保护区域进行描述。同样,认证算法也是在 WWW-Authenticate 首部中指定的 | 401 Unauthorized |
授权 | Authorization | 客户端重新发出请求,但这一次会附加一个 Authorization 首部,用来说明认证算法、用户名和密码 | GET |
成功 | Authentication-Info | 如果授权证书是正确的,服务器就会将文档返回。有些授权算法会在可选的 Authentication-Info 首部返回一些与授权会话相关的附加信息 | 200 OK |
如下图示例:
HTTP 是如何允许服务器为不同的资源使用不同的访问权限的?在上图的 WWW-Authenticate 质询中包含了一个 realm 指令。Web 服务器会将受保护的文档组织成一个安全域(security realm)。每个安全域都可以有不同的授权用户集。
比如,假设 Web 服务器建立了两个安全域:一个用于公司的财务信息,另一个用于个人家庭文档。不同的用户对各个安全域的访问权限是不同的。公司的 CEO 应该能够访问销售额预测资料,但不应该允许他访问员工和其家人度假的照片:
下面是一个假象的基本认证质询,它指定了一个域:
HTTP/1.0 401 Unautiorized
WWW-Authenticate: Basic realm="Corporate Financials"
域应该有一个描述性的字符名,比如 Corporate Financials(公司财务资料),以帮助用户了解应该使用哪个用户名和密码。在安全域的名称中列出服务器主机名也是很有帮助的--如,executive-committee@bigcompany.com。
在基本认证中,Web 服务器可以拒绝一个事务,质询客户端,请用户提供有效的用户名和密码。服务器会返回 401 状态码,而不是 200 状态码来初始化认证质询,并用 WWW-Authenticate 响应首部指定要访问的安全域。浏览器收到质询时,会打开一个对话框,请求用户输入这个域的用户名和密码。然后将用户名和密码稍加扰码,再用 Authorization 请求首部回送给服务器。
HTTP 基本认证将(由冒号分隔的)用户名和密码打包在一起,并用 Base-64 编码方式对其进行编码。
中间的代理服务器也可以实现认证功能。有些组织会在用户访问服务器、LAN 或无线网络之前,用代理服务器对其进行认证。可以在代理服务器上对访问策略进行集中管理,因此,通过代理服务器提供对某组织内部资源的统一访问控制是一种很便捷的方式。这个过程的第一步就是通过代理认证(proxy authentication)来识别身份。
代理认证的步骤与 Web 服务器身份验证的步骤相同。但首部和状态码都有所不同。
Web 服务器 | 代理服务器 |
---|---|
Unauthorized status code:401 | Unauthorized status code:407 |
WWW-Authenticate | Proxy-Authenticate |
Authorization | Proxy-Authorization |
Authentication-Info | Proxy-Authorization-Info |
基本认证只能用它来防止非恶意用户无意间进行的访问,或将其与 SSL 这样的加密技术配合使用。
基本认证存在下列安全缺陷:
标签:编码方式 als ati 认证 定义 就会 过程 第一步 commit
原文地址:https://www.cnblogs.com/jimodetiantang/p/9278514.html