目录
何为认证
计算机本身无法判断坐在显示器前的使用者的身份。进一步说,也无 法确认网络的那头究竞有谁。可见,为了弄清究竟是谁在访问服务 器,就得让对方的客户端自报家门。
可是,就算正在访问服务器的对方声称自己是ueno, 身份是否属实这 点却也无从谈起。为确认ueno本人是否真的具有访问系统的权限, 就需要核对“登录者本人才知道的信息”、"登录者本人才会有的信息”
核对的信息通常是指以下这些。
- 密码:只有本人才会知道的字符串信息。
- 动态令牌:仅限本人持有的设备内显示的一次性密码。
- 数字证书:仅限本人(终端)持有的信息。
- 生物认证:指纹和虹膜等本人的生理信息。
- IC卡等:仅限本人持有的信息。
但是,即便对方是假冒的用户,只要能通过用户验证,那么计算机就 会默认是出自本人的行为。因此,掌控机密信息的密码绝不能让他人 得到,更不能轻易地就被破解出来。
HTTP使用的认证方式
HTTP/1.1使用的认证方式如下所示。
- BASIC认证(基本认证)
- DIGEST认证(摘要认证)
- SSL客户端认证
- FormBase认证(基于表单认证)
此外,还有Windows统一认证(Keberos认证、NTLM认证),但不作讲解。
BASIC认证
BASIC认证(基本认证)是从HTTP/1.0就定义的认证方式。即便是 现在仍有一部分的网站会使用这种认证方式。是Web服务器与通信 客户端之间进行的认证方式。
BASIC认证的认证步骤
步骤1: 当请求的资源需要BASIC认证时,服务器会随状态码401 Authorization Required, 返回带WWW-Authenticate首部字段的响应。 该字段内包含认证的方式(BASIC)及Request-URI安全域字符串(realm)。
步骤2: 接收到状态码401的客户端为了通过BASIC认证,需要将 用户ID及密码发送给服务器。发送的字符串内容是山用户ID和密码 构成,两者中间以冒号(:)连接后,再经过Base64编码处理。
假设用户ID为guest, 密码是guest, 连接起来就会形成guest: guest这 样的字符串。然后经过Base64编码,最后的结果即是
Z3Vlc3Q6Z3Vlc3Q=。把这串字符串写入首部字段Authorization后, 发送请求。
当用户代理为浏览器时,用户仅需输入用户ID和密码即可,之后, 浏览器会自动完成到Base64编码的转换工作。