第一次做读书笔记,不太熟练请见谅,笔记在有道云文章末尾分享链接,有需要的自行保存谢谢🙏
图解HTTP是个通俗易懂的书很适合初学者,有需要的话建议去买一本看,或者看电子档也行。
第八章 确认访问用户身份的认证
1.何为认证
计算机本身无法判断坐在显示器前的使用者的身份。
为确认 ueno 本人是否真的具有访问系统的权限, 就需要核对“登录者本人才知道的信息”、“登录者本人才会有的信 息”。
即便对方是假冒的用户,只要能通过用户验证,那么计算机就会默认是出自本人的行为。
因此,掌控机密信息的密码绝不能让他人得到,更不能轻易地就被破解出来。
2.BASIC认证(基本认证)
Web 服务器与通信 客户端之间进行的认证方式。
BASIC 认证虽然采用 Base64 编码方式,但这不是加密处理。
明文解码后就是用户 ID 和密码,在 HTTP 等非加密通信的线路上进行 BASIC 认证的过程 中,如果被人窃听,被盗的可能性极高。
BASIC认证步骤:
步骤 1:
当请求的资源需要 BASIC 认证时,服务器会随状态码 401 Authorization Required,返回带 WWW-Authenticate 首部字段的响应。
该字段内包含认证的方式(BASIC) 及 Request-URI 安全域字符串 (realm)。
步骤 2:
接收到状态码 401 的客户端为了通过 BASIC 认证,需要将 用户 ID 及密码发送给服务器。
发送的字符串内容是由用户 ID 和密码 构成,两者中间以冒号(:)连接后,再经过 Base64 编码处理。
当用户代理为浏览器时,用户仅需输入用户 ID 和密码即可,之后, 浏览器会自动完成到 Base64 编码的转换工作。
步骤 3:
接收到包含首部字段 Authorization 请求的服务器,会对认证 信息的正确性进行验证。
如验证通过,则返回一条包含 Request-URI 资源的响应。
3. DIGEST认证(摘要认证)
DIGEST 认证同样使用质询 / 响应的方式
DIGEST 认证提供防止密码被窃听的保护 机制,但并不存在防止用户伪装的保护机制。
质询响应方式是指,一开始一方会先发送认证要求给另一方,接着使用从另一方那接收到的质询码计算生成响应码。最后将响应码返回给对方进行认证的方式。
DIGEST 认证步骤:
步骤 1:
请求需认证的资源时,服务器会随着状态码 401 Authorization Required,返 回带 WWW-Authenticate 首部字段的响应。
首部字段 WWW-Authenticate 内必须包含 realm 和 nonce 这两个字段的 信息。客户端就是依靠向服务器回送这两个值进行认证的。
步骤 2:
接收到 401 状态码的客户端,返回的响应中包含 DIGEST 认 证必须的首部字段 Authorization 信息。
首部字段 Authorization 内必须包含 username、realm、nonce、uri 和 response 的字段信息。
步骤 3:
接收到包含首部字段 Authorization 请求的服务器,会确认认 证信息的正确性。认证通过后则返回包含 Request-URI 资源的响应。
并且这时会在首部字段 Authentication-Info 写入一些认证成功的相关信 息。
4.SSL客户端认证
SSL 客户端认证是借由 HTTPS 的客户端证书完成认证的方式。
凭借 客户端证书(在 HTTPS 一章已讲解)认证,服务器可确认访问是否 来自已登录的客户端。
1.SSL客户端认证步骤
步骤 1:
接收到需要认证资源的请求,服务器会发送 CertificateRequest 报文,要求客户端提供客户端证书。
步骤 2:
用户选择将发送的客户端证书后,客户端会把客户端证书信息以 Client Certificate 报文方式发送给服务器。
步骤 3:
服务器验证客户端证书验证通过后方可领取证书内客户端的公开密钥,然后开始 HTTPS 加密通信。
2.SSL客户端认证采用双因素认证
SSL 客户端认证不会仅依靠证书完成认证,一般会和 基于表单认证(稍后讲解)组合形成一种双因素认证(Two-factor authentication)来使用。
双因素认证就是指,认证过程中不仅需 要密码这一个因素,还需要申请认证者提供其他持有信息,从而作为 另一个因素,与其组合使用的认证方式。
第一个认证因素的 SSL 客户端证书用来认证客户端计算机, 另一个认证因素的密码则用来确定这是用户本人的行为。
3.SSL客户端认证必要的费用
使用 SSL 客户端认证需要用到客户端证书。而客户端证书需要支付一定费用才能使用。
费用是指,从认证机构购买客户端证书的费用,以及服务器运营者为保证自己搭建的认证机构安全运营所产生的费用。
5.FormBase 认证(基于表单认证)
客户端会向服务 器上的 Web 应用程序发送登录信息(Credential),按登录信息的验 证结果认证。
1. 认证多半为基于表单认证
由于使用上的便利性及安全性问题,HTTP 协议标准提供的 BASIC 认 证和 DIGEST 认证几乎不怎么使用。
SSL 客户端认证虽然具有 高度的安全等级,但因为导入及维持费用等问题,还尚未普及。
2.Session管理及Cookie应用
基于表单认证的标准规范尚未有定论,一般会使用 Cookie 来管理Session(会话)。
步骤 1:
客户端把用户 ID 和密码等登录信息放入报文的实体部分, 通常是以 POST 方法把请求发送给服务器。
步骤 2:
服务器会发放用以识别用户的 Session ID。通过验证从客户 端发送过来的登录信息进行身份认证,然后把用户的认证状态与 Session ID 绑定后记录在服务器端。
向客户端返回响应时,会在首部字段 Set-Cookie 内写入 Session ID(如 PHPSESSID=028a8c...)。
步骤 3:
客户端接收到从服务器端发来的 Session ID 后,会将其作为 Cookie 保存在本地。
下次向服务器发送请求时,浏览器会自动发送 Cookie,所以 Session ID 也随之发送到服务器。
服务器端可通过验证 接收到的 Session ID 识别用户和其认证状态。
链接:有道云笔记