认证,即确认对方身份。一般核对这些信息:
- 密码。只有本人才会知道的字符串信息。
- 动态令牌。仅限本人持有的设备内显示的一次性密码。
- 数字令牌。仅限本人(终端)持有的信息。
- 生物认证。指纹和虹膜等本人的生理信息。
- IC 卡等。仅限本人持有的信息。
HTTP使用的认证方式:
- BASIC认证,基本认证。
- DIGEST认证,摘要认证。
- SSL客户端认证。
- FromBase认证,基于表单认证。
BASIC 认证
base64 发送明文密码。
问题:
- 明文传输,可窃听。
- 一般浏览器无法实现认证注销操作。
- 缺乏灵活,安全性差。
DIGEST 认证
使用质询(challenge/reponse),但不直接发送明文密码。
一开始一方先发送认证要求给对方,接着使用从另一方接收到的质询码计算生成响应码。最后将响应码返回给对方进行认证。
SSL 客户端认证
借由 HTTPS 的客户端证书来完成认证的方式,没错,这里就是上面的双向认证。步骤:
- 接收到需要认证资源的请求,服务器会发送 Certificate Request 报文,要求客户端提供客户端证书。
- 用户选择将发送的客户端证书后,客户端会把客户端证书以 Client Certificate 报文发送给服务器。
- 服务器验证客户端证书通过后,方可领取证书内客户端的空开密钥,然后开始 HTTPS 加密通信。
双因素认证(Tow-factor authentication)
SSL 客户端认证通常会和基于表单认证组合形成一种双因素认证。
SSL 客户端证书:认证客户端计算机
密码:用来确定这是用户本人的行为