一种通过web页面访问spice协议远程桌面的方法
【专利摘要】本发明涉及云计算【技术领域】,特别是指一种通过WEB页面访问SPICE协议远程桌面的方法。本发明首先在宿主机上安装一个WebSocket的代理服务器,用于转发SPICE远程桌面的连接请求和发送SPICE服务器的协议数据;WEB页面向WEB服务器请求SPICE服务器的地址和SPICE桌面的端口,响应以后,根据SPICE服务的地址,向WebSocket代理服务器发出建立WebSocket连接的请求;最后WEB页面将使用WebSocket连接发送SPICE协议的命令,并从SPICE服务器接收协议数据。本发明的方法兼容性强、无需安装附加插件、连接行为易于控制;可用于开发虚拟机基于WEB的管理系统。
【专利说明】—种通过WEB页面访问SPICE协议远程桌面的方法
【技术领域】
[0001]本发明涉及云计算【技术领域】,特别是指一种通过WEB页面访问SPICE协议远程桌面的方法。
【背景技术】
[0002]SPICE作为新兴的远程桌面协议,在远程设备映射、多媒体播放具有优势。在云操作系统的管理中,常常使用WEB作为管理的工具,管理员希望所有操作都能在WEB页面上进行。WEB页面访问SPICE协议远程桌面当前有两种实现方式。第一种是采用流的方式,这种方式通常就是在WEB页面使用一个隐藏的窗口向SPICE服务发出一个长连接的请求。SPICE服务器接到这个请求后作出回应并不断更新连接状态以保证WEB页面和SPICE服务器的连接不过期。通过这种机制可以将SPICE的桌面图像源源不断地推向WEB页面。这种机制在用户的体验上有一点问题,需要针对不同的浏览器设计不同的方案来改进用户体验,同时这种机制在并发比较大的情况下,对服务器端的资源是一个极大的考验。第二种是采用Flash或Sliverlight插 件直接与SPICE通信,这种通信脱离了原来的WEB服务器,WEB服务器无法控制插件的行为,会给客户端带来安全威胁。
【发明内容】
[0003]本发明解决的技术问题在于提供一种通过WEB页面访问SPICE协议远程桌面的方法,解决目前SPICE的WEB客户端所存在的兼容性不好、性能差、连接行为难以控制等问题。
[0004]本发明解决上述技术问题的技术方案是:
[0005]包括如下步骤:
[0006]步骤1:在宿主机上安装一个WebSocket的代理服务器,用于转发SPICE远程桌面的连接请求,以及发送SPICE服务器的协议数据;
[0007]步骤2 =WEB页面向WEB服务器请求SPICE服务器的地址和SPICE桌面的端口 ;
[0008]步骤3:WEB页面收到WEB服务器的响应以后,根据SPICE服务器的地址,向WebSocket代理服务器发出建立WebSocket连接的请求;
[0009]步骤4 =WEB页面使用WebSocket连接发送SPICE协议的命令并从SPICE服务器接收协议数据。
[0010]所述的SPICE远程桌面的连接请求是指一个URL,由SPICE服务器地址和端口组成,表不为 “ws://somehost:port/?password=pwd&fullscreen=true,,的模式;
[0011]其中somhost表示SPICE服务器地址,port表示端口,password表示用户名,fullscreen表示是否远程桌面显示全屏。
[0012]所述的向WebSocket代理服务器发出建立WebSocket连接当前请求过程使用Javascript完成;具体步骤如下:
[0013]步骤1:WEB浏览器首先发起一个对WebSocket代理服务器的HTTP连接请求。请求头信息里包含有服务器的IP和端口、以及”Sec-WebSocket-KeyI”、“Sec-WebSocket-Key2”和” [8-byte securitykey] ” 这样的头信息;
[0014]步骤2 =WebSocket代理服务器解析这些头信息,并在握手的过程中依据这些信息生成一个16位的安全密钥并返回给WEB浏览器,以表明WebSocket代理服务器获取了 WEB浏览器的请求,同意创建WebSocket连接;一旦连接建立,WEB浏览器和WebSocket代理服务器则可通过这个通道双向传输数据。
[0015]所述的安全密钥生成包括如下步骤:
[0016]步骤1:逐个字符读取Sec-WebSocket-Keyl头信息中的值,将数值型字符连接到一起放到一个临时字符串里,同时统计所有空格的数量;
[0017]步骤2:将在步骤I里生成的数字字符串转换成一个整型数字,然后除以步骤I里统计出来的空格数量,将得到的浮点数转换成整数型;
[0018]步骤3:将步骤2里生成的整型值转换为符合网络传输的网络字节数组;
[0019]步骤4:对Sec-ffebSocket-Key2头信息同样进行步骤I到步骤3的操作,得到另外一个网络字节数组;
[0020]步骤5:将[8-byte security key]和在步骤3、步骤4里生成的网络字节数组合并成一个16字节的数组;
[0021]步骤6:对步骤5生成的字节数组使用MD5算法生成一个16位的哈希值,这个哈希值作为安全密钥返回给客户端 ,以表明WebSocket代理服务器获取了 WEB浏览器的请求,同意创建WebSocket连接。
[0022]采用本发明的方法,不受浏览器的限制,解决了目前SPICE的WEB客户端所存在的兼容性不好、用户体验差的问题。而且,对于整个过程可控,确保了客户端的安全。
【专利附图】
【附图说明】
[0023]下面结合附图对本发明进一步说明:
[0024]图1为本发明方法流程图;
[0025]图2为本发明具体实施例示意图。
【具体实施方式】
[0026]如图所示,本发明的方法包括如下步骤:
[0027]步骤1:在宿主机上安装一个WebSocket的代理服务器,用于转发SPICE远程桌面的连接请求,以及发送SPICE服务器的协议数据;
[0028]步骤2 =WEB页面向WEB服务器请求SPICE服务器的地址和SPICE桌面的端口 ;
[0029]步骤3:WEB页面收到WEB服务器的响应以后,根据SPICE服务器的地址,向WebSocket代理服务器发出建立WebSocket连接的请求;
[0030]步骤4 =WEB页面使用WebSocket连接发送SPICE协议的命令并从SPICE服务器接收协议数据。
[0031]前述SPICE远程桌面的连接请求是指一个URL,由SPICE服务器地址和端口组成,表不为 “ws://somehost:port/?password=pwd&fullscreen=true,,的模式;
[0032]其中somhost表示SPICE服务器地址,port表示端口,password表示用户名,fullscreen表示是否远程桌面显示全屏。
[0033]向WebSocket代理服务器发出建立WebSocket连接当前请求过程使用Javascript完成;具体步骤如下:
[0034]步骤1:WEB浏览器首先发起一个对WebSocket代理服务器的HTTP连接请求。请求头信息里包含有服务器的IP和端口、以及” Sec-WebSocket-Keyl ”、“Sec-WebSocket-Key2”和” [8-byte securitykey] ” 这样的头信息;
[0035]步骤2 =WebSocket代理服务器解析这些头信息,并在握手的过程中依据这些信息生成一个16位的安全密钥并返回给WEB浏览器,以表明WebSocket代理服务器获取了 WEB浏览器的请求,同意创建WebSocket连接;一旦连接建立,WEB浏览器和WebSocket代理服务器则可通过这个通道双向传输数据。
[0036]安全密钥生成包括如下步骤:
[0037]步骤1:逐个字符读取Sec-WebSocket-Keyl头信息中的值,将数值型字符连接到一起放到一个临时字符串里,同时统计所有空格的数量;
[0038]步骤2:将在步骤I里生成的数字字符串转换成一个整型数字,然后除以步骤I里统计出来的空格数量,将得到的浮点数转换成整数型;
[0039]步骤3:将步骤2里生成的整型值转换为符合网络传输的网络字节数组;
[0040]步骤4:对Sec-ffebSocket-Key2头信息同样进行步骤I到步骤3的操作,得到另外一个网络字节数组;
[0041]步骤5:将[8-byte security key]和在步骤3、步骤4里生成的网络字节数组合并成一个16字节的数组;
[0042]步骤6:对步骤5生成的字节数组使用MD5算法生成一个16位的哈希值,这个哈希值作为安全密钥返回给客户端,以表明WebSocket代理服务器获取了 WEB浏览器的请求,同意创建WebSocket连接。
[0043]如图2所示,是本发明的具体实施例。本发明使用websockify作为WebSocket代理服务器,用于转发SPICE远程桌面的连接请求,以及发送SPICE服务器的协议数据。
[0044]首先,浏览器使用Javascript向WEB服务器请求SPICE服务器的地址和端口,并向websockifiy发起连接:
[0045]
function connect()
{
var host, port, password, scheme = "ws:", uri;
请求获取地址和端口
host = spice—query—vai,('hosf,window.location.hostname)
[0046]
【权利要求】
1.一种通过WEB页面访问SPICE协议远程桌面的方法,其特征在于:包括如下步骤: 步骤1:在宿主机上安装一个WebSocket的代理服务器,用于转发SPICE远程桌面的连接请求,以及发送SPICE服务器的协议数据; 步骤2 =WEB页面向WEB服务器请求SPICE服务器的地址和SPICE桌面的端口 ; 步骤3 =WEB页面收到WEB服务器的响应以后,根据SPICE服务器的地址,向WebSocket代理服务器发出建立WebSocket连接的请求; 步骤4 =WEB页面使用WebSocket连接发送SPICE协议的命令并从SPICE服务器接收协议数据。
2.根据权利要求1所述的通过WEB页面访问SPICE协议远程桌面的方法,其特征在于: 所述的SPICE远程桌面的连接请求是指一个URL,由SPICE服务器地址和端口组成,表不为 “ws://somehost:port/?password=pwd&fullscreen=true,,的模式; 其中somhost表示SPICE服务器地址,port表示端口,password表示用户名,fullscreen表示是否远程桌面显示全屏。
3.根据权利要求1或2所述的通过WEB页面访问SPICE协议远程桌面的方法,其特征在于:所述的向WebSocket代理服务器发出建立WebSocket连接当前请求过程使用Javascript完成;具体步骤如下: 步骤1:WEB浏览器首先 发起一个对WebSocket代理服务器的HTTP连接请求。请求头信息里包含有服务器的 IP 和端口、以及” Sec-WebSocket-Keyl”、“Sec-WebSocket-Key2”和” [8-byte securitykey] ” 这样的头信息; 步骤2 =WebSocket代理服务器解析这些头信息,并在握手的过程中依据这些信息生成一个16位的安全密钥并返回给WEB浏览器,以表明WebSocket代理服务器获取了 WEB浏览器的请求,同意创建WebSocket连接;一旦连接建立,WEB浏览器和WebSocket代理服务器则可通过这个通道双向传输数据。
4.根据权利要求3所述的通过WEB页面访问SPICE协议远程桌面的方法,其特征在于:所述的安全密钥生成包括如下步骤: 步骤1:逐个字符读取Sec-WebSocket-Keyl头信息中的值,将数值型字符连接到一起放到一个临时字符串里,同时统计所有空格的数量; 步骤2:将在步骤I里生成的数字字符串转换成一个整型数字,然后除以步骤I里统计出来的空格数量,将得到的浮点数转换成整数型; 步骤3:将步骤2里生成的整型值转换为符合网络传输的网络字节数组; 步骤4:对Sec-ffebSocket-Key2头信息同样进行步骤I到步骤3的操作,得到另外一个网络字节数组; 步骤5:将[8-byte security key]和在步骤3、步骤4里生成的网络字节数组合并成一个16字节的数组; 步骤6:对步骤5生成的字节数组使用MD5算法生成一个16位的哈希值,这个哈希值作为安全密钥返回给客户端,以表明WebSocket代理服务器获取了 WEB浏览器的请求,同意创建WebSocket连接。
【文档编号】H04L29/06GK103458034SQ201310398047
【公开日】2013年12月18日 申请日期:2013年9月4日 优先权日:2013年9月4日
【发明者】莫展鹏, 杨松, 季统凯 申请人:国云科技股份有限公司