SSL客户端认证步骤:

接收到需要认证资源的请求,服务器会发送Certificate Request报文,要求客户端提供客户端证书(需要向认证机构购买)

用户选择将发送的客户端证书,客户端会把客户端证书信息以Client Certificate报文方式发送给服务器。

服务器验证客户端证书,验证通过后方可领取证书内的客户端的公开密钥,然后开始HTTPS加密通信。

SSL客户端认证需要客户持有客户端证书才能完成认证,因此客户需要在证书上支出费用。

表单认证:

客户端吧用户ID和密码等登陆信息放入报文的实体部分,通常是以POST方法把请求发送给服务器,这时,会使用HTTPS通信来进行HTML表单画面的显示和用户输入数据的发送。

服务器会发放用以识别用户的SessionID,通过验证从客户端发送过来的登陆信息进行身份认证,然后把用户的认证状态与SessionID绑定后记录在服务器端(向客户端返回响应时,会在首部字段Set-Cookie内写入SessionID)。

客户端接收到从服务器端发来的SessionID后,会将其作为Cookie保存在本地,下次向服务器发送请求时,浏览器会自动发送Cookie,所以SessionID也随之发送到服务器,服务器端通过此ID来验证用户。

表单认证:表单认证是最常见的认证方式,该认证方法并不是在HTTP协议中定义,它一般是由Web应用提供登陆信息界面,使其更友好和用户交互,用户在其表单界面按提示和指导填写完信息后,才提交到Web那边应用进行验证。

基于HTTP瓶颈

HTTP通信协议有下面几点瓶颈:

一条连接上只可发送一个请求。

请求只能从客户端开始,客户端不可以接收除响应外的指令。

请求/响应首部未经压缩就发送,首部信息越多延迟越大。

发送冗长的首部,每次互相发送相同的首部造成的浪费较多。

可任意选择数据压缩格式,非强制压缩发送。

引入Ajax技术来解决页面局部更新,减少响应中传输的数据(Ajax是一种有效利用JavaScript和DOM的操作,实现局部Web页面替换加载的异步通信手段。)

引入Comet技术手段来解决实时更新问题,它通过延迟应答,模拟实现服务器端向客户端推送的功能,大致通信如下:

通常,服务器端接收到请求,在处理完毕后就会立即返回响应,但为了实现推送功能,Comet会先将响应置于挂起状态,当服务器有内容更新时,再返回该响应,因此,服务器端一有更新,就可以立即反馈给客户端。(因要保留响应,一次连接持续时间更长,故消耗更多的资源)。

SPDY技术引入可以让HTTP获得额外几点功能,如下:

多路复用流:通过单一的TCP连接,可以无限制处理多个HTTP请求,所有请求的处理都在一条TCP连接上完成,因此TCP的处理效率提高。

赋予请求优先级:SPDY通过给请求逐个分配优先级顺序,可以解决在同时刻发送多个请求,带宽低而导致响应慢的问题。

压缩HTTP首部:压缩HTTP请求和响应的首部,能使通信产生的数据包数量和发送的字节数减少。

推送功能:支持服务器主动向客户端推送数据的功能,这样服务器就可以不用再等客户端发送请求才返回数据了。

服务器提示功能:服务器可以主动提示客户端请求所需资源的额更新情况,因此在客户端对请求资源已缓存等情况下,可以避免发送不必要的请求。

引入WebSocket协议来解决HTTP一些瓶颈,该协议有主要特点如下:

*推送功能:支持服务器主动向客户端推送数据的功能。

减少通信量:只要建立起WebSocket连接,就希望一直保持连接状态,和HTTP相比,不但每次连接时的总开销减少,而且由于WebSocket的首部信息很小,通信量也减少了。

不过实现WebSocket通信是建立在HTTP基础上,因此需要用HTTP的Upgrade首部字段告知服务器通信协议的改变,以达到握手的目的,整个过程如图:

 这里写图片描述




相关内容