某些 Web 页面只想让特定的人浏览,或者干脆仅本人可见。为达到这个目标,必不可少的就是认证功能。
计算机本身无法判断坐在显示器前的使用者的身份。进一步说,也无法确认网络的那头究竟有谁。可见,为了弄清究竟是谁在访问服务器,就得让对方的客户端自报家门。
为确认 ueno 本人是否真的具有访问系统的权限,就需要核对“登录者本人才知道的信息”、“登录者本人才会有的信息”。
核对的信息通常是指以下这些。
密码;动态令牌;数字证书;生物认证;IC卡等。
HTTP 使用的认证方式
BASIC认证(基础认证)HTTP/1.0
步骤一:请求资源,需要BASIC认证,服务器返回401;
步骤二:接收到401之后,客户端将用户ID和密码发送给服务器,Base64处理“用户名ID:密码”
步骤三:服务器端接收到信息后验证,返回响应。200或者401
BASIC不安全,用Base64编码
DIGEST认证(摘要认证)
质询响应:一开始一方会先发送认证要求给另一方,接着用另一方发送的质询码计算生成响应码。最后将响应码返回给对方进行认证的方式。
步骤一:请求资源,响应401以及相应字段。质询码nonce
步骤二:接收到401后,响应相应数据,由质询码nonce计算
步骤三:验证数据后响应200/401
SSL 客户端认证
SSL 客户端认证是借由HTTPS的客户端证书完成认证的方式。凭借客户端证书认证,服务器可确认访问是否来自已登录的客户端。
SSL 客户端认证之前,在客户端必须安装相应证书
步骤一:接受请求,返回Certificate Request报文,需要客户端提供证书
步骤二:用户选择证书以后以Client Certificate报文发给服务器
步骤三:服务器端验证通过后,获取证书内容的公钥,开始HTTPS加密通信
SSL客户端认证采用双因素认证,即证书认证和表单认证。
基于表单认证
Web页面,输入用户名和密码的登录
一般会使用Cookie来管理Session会话状态。
步骤一:输入用户名、密码等以POST方式发送给服务器端
步骤二:服务器端验证通过后,将状态以及生成的SessionID绑定记录后,设置Set-Cookie响应属性,返回响应
步骤三:客户端接收后,将SessionID座位Cookie存入本地,下次请求自动发送该Cookie
为了安全可在Cookie内加入httponly属性