提供对于使用非http通信协议的网络应用的无状态安全管理的系统和方法

文档序号:6350009阅读:138来源:国知局
专利名称:提供对于使用非http通信协议的网络应用的无状态安全管理的系统和方法
技术领域
本发明一般地涉及在使用非HTTP协议通信的Web (网络)应用客户端和服务器之间建立安全连接,并且具体地涉及由网关服务器协调的安全认证和证书管理系统,其支持基于Web浏览器的Web应用客户端使用非HTTP通信协议与基于远程服务器的Web服务连接。
背景技术
基于Web的技术的正在发生的进展的实质方面是旨在提供对分布式的联网应用 的增加的支持。这样的努力已经导致WebSocket (网络套接字)的开发,所述WebSocket是用于基于Web浏览器的客户端应用和在相对于基于Web浏览器的客户端应用远程定位的服务器系统上提供的Web服务之间的双向数据传输的面向连接的基础。分布式的网络应用传统上是使用客户端-服务器模型构造的,其中客户端执行专门应用,该专门应用通过持久的双向连接而与执行对应的服务应用的服务器系统理想地通信。在连接的初始化期间由客户端提供认证证书。该认证持续到客户端应用释放该连接或者以其它方式关闭为止。在该连接可操作时,客户端和服务器使用对于所提供的服务和正在被交换的数据的特性最适合的任何协议进行通信。然而,传统的Web浏览器客户端是面向页面和HTTP协议的。通过设计,当客户端从一页面转移到另一页面时,传统的Web浏览器将拆解(tear down)现有的本地状态(localstate)。包括任何有关的认证数据的连接被保持为面向文件或页面的本地状态。因此,页面转移自然地导致现有连接的终止。可以通过传统的Web浏览器客户端将非页面状态数据存储为cookies。通过服务器系统的分配,这些cookies可被操纵以存储信息,所述信息允许在服务器引起的会话的持续时间内在需要时自主恢复经认证的连接。以此方式对会话cookies的访问和操纵实际上被限制为使用由传统的Web浏览器客户端天然地支持的HTTP协议。尽管WebSocket协议允许在建立WebSocket连接的初始连接阶段期间传输传统的HTTP cookies,但容留在WebSocket连接上的更高级的协议不能访问或者使用这些cookies。因此,存在对于这样一种系统和方法的需求,所述系统和方法将允许在Web浏览器客户端和服务器应用之间利用WebSocket和其它非HTTP协议连接,同时以服从Web浏览器客户端的传统操作特性的安全的方式在功能上保持状态。

发明内容
因此,本发明的总的目的是提供一种使得Web浏览器客户端能够安全地建立并且管理与WebSocket和其它非HTTP协议连接有关的状态信息的系统和方法。
这在本发明中是通过提供与客户端和远程服务器系统相互操作以便提供对分布式Web应用的无状态(stateless)安全管理的网关服务器而实现的。在与客户端应用对应的本地存储库(store)实例中不存在安全令牌的情况下,客户端系统上的Web客户端应用通过执行针对Web浏览器客户端的用户的认证询问(challenge)而发起针对远程Web服务的WebSocket连接,该认证询问获得用户证书并且随后为了安全令牌而与网关服务器交换用户证书。然后,在协议特定连接消息中向网关服务器发送安全令牌。响应于该连接消息的接收,网关服务器通过以下步骤发起针对远程Web服务的WebSocket连接检查连接消息以恢复安全令牌,评估该安全令牌以获得用户证书,将用户证书注入安全令牌,并且向远程Web服务发送连接消息。本发明的优点在于,可以有效地管理并使用用户证书来保持与使用各种协议的远程Web服务的经认证的连接,所述各种协议具体包括在WebSocket连接上容留的非HTTP协议。
本发明的另一优点在于,连同本发明一起使用的网关服务器不负担在许多错误和故障情况下难以管理的有状态(Stateful)用户消息。通过客户端系统和网关系统之间的协作关系进行的有状态消息的管理是有效的、安全的,并且减少了对网关服务器的存储器和CPU的要求,由此增强了性能和可扩展性。此外,与网关服务器的协作关系允许客户端系统利用网关服务器作为与各种标准认证系统的单一接口,由此简化了客户端系统的管理。本发明的另一优点在于,客户端系统执行基于Web浏览器的客户端应用,并且在传统的Web浏览器的安全模型中保持状态消息。在客户端系统上的状态消息存储在相当大程度上是安全的同时,与网关服务器的协作认证关系确保基本的认证消息保持安全,即使是在其被存储在传统的客户端系统上以及在传统的Web浏览器的安全模型中的时候。用于实现与网关服务器的协作认证关系所需的通信是最低限度的。被用作建立经认证状态的基础的安全证书被本地且持久地存储以便在Web浏览器重启以及会话终止之后继续存在(survive)。本发明的又一优点在于,在WebSocket协议级别上有效地建立与网关服务器的协作认证关系,这允许建立经认证的连接而没有固有的域限制。尽管与Web客户端应用的地点相关地限制认证,但与网关服务器和连接的Web服务的域有关的任何限制是通过网关服务器实现的服务访问控制来确定的。该服务访问控制被受监管地(administratively)配置。


图I是本发明优选实施例的优选的操作环境的一般图示。图2是图示在实现分布式客户端/服务器Web应用时适合本发明的优选实施例的实现方式的优选的客户端/服务器系统的框图。图3提供图示被配置用于结合与本发明的优选实施例一致的分布式客户端/服务器Web应用而实现客户端侧应用的Web浏览器客户端的详细框图。图4提供在本发明的优选实施例中实现的网关服务器的优选实现方式的框图。图5是图示根据本发明的优选实施例的在建立Web服务网络连接时Web浏览器客户端应用的初始化和执行的序列图。
图6是进一步详细图示根据本发明的优选实施例的在建立Web服务网络连接时Web浏览器客户端应用的初始化和执行的序列图。图7是示出创建供本发明的优选实施例使用的认证令牌的优选过程的流程图。
具体实施例方式本发明提供对分布式Web应用的支持以有效地认证并保持安全通信信道,同时在Web浏览器客户端和远程Web服务器之间实时地交换数据。本发明的优选实施例利用网关服务器作为中间安全管理器。该网关服务器还优选地实现在2010年4月30日提交并被转让给本申请的受让人的共同待审的申请“Enterprise Client-server System and Methodsof Providing Web Application Support Through Distributed Emulation of WebSocketCommunications”中描述的功能,上述申请通过弓I用在此并入。概括地说,在并入的申请中描述的网关服务器使得能够在基于Web浏览器的客户端应用和由远程服务器系统容留的数据服务之间进行面向套接字的双向实时通信。在本发明的以下详细描述中,相同的参考 标号被用于指明在一个或多个图中描绘的相同的部件。 图I中一般地不出表不分布式Web应用的实现方式的本发明的优选的操作环境10。传统的客户端系统12,14执行基于Web浏览器的客户端应用,所述客户端应用通过公共的因特网、专用的内联网或者其它通信网络16可操作性地访问一个或多个远程服务器系统18,20,22以便双向地请求和接收实时信息。在典型的实例中,通过由客户端系统12执行的Web浏览器客户端做出的信息请求被初始地指向主服务器或源服务器18,并且在需要时与其它副服务器20,22建立实时的、双向信息馈送连接。例如,可以向源服务器18请求网页,该网页在递送的页面的用户界面表示内的合适的指定窗口区域中呈现来自新闻源服务器20的实时新闻故事以及来自股票信息服务器22的股票价格信息。通过本发明的实现和使用,可以跨越在Web浏览器客户端的背景中执行客户端应用时可能发生的页面转移而有效地继续这种信息馈送连接。也就是说,当作为HTTP连接的底层拆解的结果,活动的WebSocket连接将被突然终止时,本发明在WebSocket连接的级别上提供对于连接信息的保留和管理,所述级别足以允许选择性地恢复所述连接而不对Web浏览器客户端的终端用户造成明显的中断。根据本发明,提供网关服务来参与对Web浏览器客户端应用和远程Web服务之间最终建立的WebSocket连接的管理。如图2中图示的,本发明的优选的系统架构30使得客户端计算机系统32能够通过双向WebSocket连接34、36与网关服务器38进行通信。单独的双向WebSocket连接40、42和44、46在合适时将网关服务器38与远程服务器48、50连接以便分别访问所容留的Web服务。网关服务器38可以同时支持多个客户端系统32访问多个远程Web服务并且每个远程服务器48、50可以提供多个Web服务。在替换实施例中,网关服务器38还可以在本地实现客户端系统32可访问的Web服务。优选地,网关服务器直接地或者利用外部认证服务器52的支持实现认证服务,从而实现LDAP、Kerberos, Java认证和授权服务(JAAS)或者基于其它标准的证书服务。网关服务器38代表系统32执行在管理WebSocket连接上的多个功能。这些功能包括与Web浏览器客户端应用合作进行的认证令牌密钥环(keyring)的管理、通过网关服务器38传递的选择协议特定数据分组的安全性增强的代理处理、以及用于可应用于由一个或多个远程服务提供的多个服务的单个以及选择性地多个协议的客户端用户认证服务。在实现这些特征时,网关服务器38负责选择性地修改穿越网关服务器38的协议数据分组。在优选的实施例中,网关服务器38进行操作以选择性地将安全证书注入到被传输给远程服务器48、50的协议数据分组中。安全证书令牌被注入到选择返回的协议数据分组中。如在目前优选的实施例中实现的,在被客户端系统32存储时,证书令牌针对篡改和滥用实际上是安全的。当安全证书存在于网关服务器38上时,它们仅仅暂时存在并且因此类似地针对篡改和误用是安全的。客户端系统32和网关服务器38 —起相互操作以有效地支持在客户端32和远程服务器系统48、50之间的实时通信的安全用户识别和认证。图3中示出了更详细的系统实施例60。在优选的实施例中,响应于终端用户的动作,在客户端系统32上执行Web浏览器客户端应用62。典型地,基于终端用户输入,从远程应用源服务器66加载包含Web客户端应用64的网页。在本发明的优选实施例中,Web客户端应用64包括或者负责加载WebSocket库68。如在并入的共同待审的申请中进一步详述的,WebSocket库68在需要时为pre_HTML5兼容的Web浏览器客户端应用62提供模拟
的WebSocket服务,以及为pre_HTML5兼容的和完全HTML5兼容的Web浏览器客户端62 二者提供协议特定的客户端库。在WebSocket客户端库68的任何特定分发(distribution)中包括的特定组的客户端协议库典型地依赖于由Web客户端应用64的开发者做出的或者为其做出的设计时间选择。在部署时,Web客户端应用64优选地识别WebSocket库68的特定实例以便由Web浏览器客户端62实例加载。在执行Web客户端应用64时,利用WebSocket库68来建立到网关服务器38的WebSocket连接。做出到在诸如远程服务器48上远程容留的远程服务70的对应连接。优选地,密钥环库被包括在WebSocket库68中,或者可替换地,结合WebSocket库68检索密钥环库。Web客户端应用64利用密钥环库来建立一个或多个本地存储库(localstore) 72实例。密钥环库还通过提供用于在本地存储库72实例内建立密钥环数据结构以及用于访问密钥环数据结构(包括从密钥环数据结构中寻找、添加和移除密钥)的功能来支持Web客户端应用64。优选地由Web客户端应用64结合WebSocket库68来利用密钥环库提供安全的密钥管理功能,而不管WebSocket库68是使用HTTP5兼容的Web浏览器客户端应用62的固有的(native) WebSocket能力还是为pre_HTTP5兼容的Web浏览器客户端应用62提供模拟的WebSocket能力。在本发明的优选实施例中,Web客户端应用64被设计并且开发以用于特定用途,诸如支持聊天会话或者显示实时的数据馈送(feed)。每个Web客户端应用64初始地被编码有通信协议类型标识符、密钥环数据结构名称、网关服务器标识符以及远程Web服务标识符,其每一个在合适时用于Web客户端应用64的预期用途。在本发明的目前优选的实施例中,网关标识符和远程Web服务标识符被一起编码作为URL和端口值。该信息对于Web客户端应用64选择合适的安全令牌以便传输到适合于到达所识别的Web服务的网关服务器38是足够的。在本发明的替换实施例中,Web服务标识符还可以由网关服务器38解析,以允许从提供等效Web服务70的多个Web服务器中选择远程服务器48和Web服务70,以用于诸如负载平衡的目的。参照图4,示出了网关服务器38的优选的实现方式80。在该优选实施例中,在被配置为支持客户端系统32和远程服务器48、50之间的网络连接的传统Web服务器系统上实现网关服务器38。在功能上,客户端网络接口 82支持与Web浏览器客户端应用64的网络连接84。服务器网络接口 86支持与远程服务器48、50和认证服务器52的网络连接。可以使用相同的或者单独的物理网络接口控制器来实现客户端和服务器网络接口 82、86。授权控制处理器90和相关的分组处理器92、94、96、98优选地被实现为在由网关服务器38执行的应用服务器内容留的事件驱动模块。在实现优选的实施例时使用ApacheMINA网络应用框架。授权控制处理器90在管理客户端授权和协议数据分组处理操作时优选地充当中央控制器。客户端分组检查处理器92监视用于所管理的协议的输入的数据分组,并且选择性地向授权控制处理器90报告在所检查的数据分组的上下文中的连接状态和协议。证书注入处理器94负责注入或者重写选择的数据分组以便包括适合于数据分组的协议定义的结构的证书。授权控制处理器90优选地基于对相对于网关服务器38被本地存储的受监管地建立的服务访问控制配置的评估来提供注入的证书。在表I中提供令牌存储服务访问控制配置的示例。表I 服务访问控制配置(令牌)<!--关于会话服务自身的信息-->
<session>
<!--配置HTTP认证-->
<authentication-scheme> Basic</authentication -scheme〉
<!--认证证书所针对的服务器区域--> <realm-name>stompRealm</realm-name>
</session>
< !--安全配置-->
<security>
<realm>
<name>stompRealm</name>
<!--该区域针对基于LDAP的登录模块元素进行检查-->
<login-module>
<type>ldap</type>
<success>required</success>
<options>
<userProvider>
ldap://ldap-svr/ou=people,dc=example,dc=com
</userProvider>
<userFilter>
(&amp; (uid={USERNAME})(objectClass=inetOrgPerson)) </userFilter>
<authzIdentity>{EMPLOYEENUMBER}</authzIdentity>
</options>
</login-module>
</realm>
〈/security〉
<!--实际密钥环服务的声明,即,密钥环连接到哪里-->
〈service〉
<accept>https://localhost:9000/keyring</accept>
<type>keyring</type>
<auth-constraint>
<require-role>AUTHORIZED</require-role>
</auth-constraint>
〈/service〉
<!--STOMP服务的声明-->
〈service〉
<!-协议标识符为类型’’stomp’’,服务标识符为9000--><accept>wss://example.com:9000/stomp</accept><connect>tcp://stompserver.com:61613</connect><type>stomp.proxy</type>表2中提供了会话存储服务访问控制配置的示例。表 2
服务访问控制配置(会话)
权利要求
1.一种计算机实现的方法,其提供对使用非HTTP通信协议的网络应用的无状态的安全管理,所述方法包括以下步骤 a)从在客户端系统上的Web浏览器客户端内执行的客户端应用第一发起针对远程Web服务的WebSocket连接,其中所述连接由通信协议标识符识别,所述第一发起的步骤包括以下步骤 i)在与所述客户端应用对应的本地存储库实例中不存在安全令牌的情况下,执行针对所述Web浏览器客户端的用户的认证询问,其中所述安全令牌对应于所述通信协议标识符,所述认证询问获得第一用户证书,将所述第一用户证书发送给网关服务器,从所述网关服务器接收所述安全令牌,以及在所述本地存储库实例中存储所述安全令牌; )从所述本地存储库实例获得所述安全令牌;以及 iii)向所述网关服务器发送第一连接消息,其中连接消息相对于所述通信协议的标识符是协议特定的,并且其中所述第一连接消息包括所述安全令牌;以及 b)响应于接收到所述第一连接消息,从所述网关服务器第二发起针对所述远程Web服务的WebSocket连接,所述第二发起的步骤包括以下步骤 i)检查所述第一连接消息以识别所述安全令牌; )评估所述安全令牌以获得第二用户证书; iii)取代所述安全令牌,将所述第二用户证书注入到与所述第一连接消息对应的第二连接消息中;以及 iv)将所述第二连接消息发送给所述远程Web服务。
2.如权利要求I所述的计算机实现的方法,其中所述通信协议标识符对应于在所述WebSocket连接上容留的非HTTP协议。
3.如权利要求2所述的计算机实现的方法,其中所述安全令牌包括所述第一用户证书的加密的副本。
4.如权利要求3所述的计算机实现的方法,其中所述第二用户证书是通过对所述安全令牌的解密而获得的所述第一用户证书。
5.如权利要求2所述的计算机实现的方法,其中所述安全令牌包括时间戳,其中所述时间戳确定所述安全令牌是否无效,并且其中在所述安全令牌无效的情况下,所述执行步骤确定在本地存储库实例中不存在所述安全令牌。
6.如权利要求5所述的计算机实现的方法,其中所述确定步骤包括以下步骤 i)针对所述时间戳的到期而监视在所述本地存储库实例中存储的所述安全令牌;以及 )将所述安全令牌发送给所述网关服务器,以更新所述时间戳; iii)将被所述网关服务器更新的所述安全令牌发送给所述本地存储库实例。
7.如权利要求6所述的计算机实现的方法,还包括以下步骤由所述网关服务器,通过对所述第一用户证书进行私密密钥加密以产生密封的对象并且对所述密封的对象和所述时间戳进行公开密钥加密,来产生所述安全令牌。
8.如权利要求7所述的计算机实现的方法,其中所述第二用户证书是通过对所述安全令牌的解密而获得的所述第一用户证书。
9.如权利要求8所述的计算机实现的方法,其中所述安全令牌对应于多个通信协议标识符。
10.一种网关服务器,其提供对于由客户端和远程服务器系统协作执行的分布式Web应用的无状态的安全授权,所述网关服务器包括 a)计算机服务器系统,其可通过通信网络与客户端系统和远程服务器耦接,其中所述客户端系统被配置为执行客户端系统上的Web浏览器客户端中的客户端应用,并且其中所述远程服务器被配置为执行Web服务;以及 b)ffeb服务器,由所述计算机服务器系统执行,所述Web服务器包括授权控制处理器、分组检查处理器以及证书注入处理器, 其中在接收到并验证了由所述客户端应用提供的第一用户证书时,所述授权控制处理器可操作地生成安全令牌,其中所述授权控制处理器与所述客户端应用相互操作以在与所述客户端应用相关联的范围内的所述客户端系统上的本地存储库实例中存储所述安全令牌, 其中响应于由所述客户端应用提供的嵌入安全令牌的连接消息,所述分组检查处理器可操作地检测所述连接消息并且将所述安全令牌提供给所述授权控制处理器, 其中所述授权控制处理器可操作地恢复与所述安全令牌对应的第二用户证书, 其中响应于所述授权控制处理器,所述证书注入处理器可操作地将所述第二用户证书注入到所述连接消息中,以及 其中所述Web服务器可操作地将所述连接消息传输给所述远程服务器。
11.如权利要求10所述的网关服务器,其中所述授权控制处理器可操作地在生成所述安全令牌时加密所述第一用户证书,并且其中所述第二用户证书是所述第一用户证书。
12.如权利要求10所述的网关服务器,其中所述授权控制处理器可操作地在生成所述安全令牌时加密所述第一用户证书,并且其中由所述授权控制处理器基于与所述第一用户证书的预定对应关系而恢复所述第二用户证书。
13.如权利要求10所述的网关服务器,其中所述授权控制处理器可操作地加密所述第一用户证书,以便与所述安全令牌的生成一起提供会话cookie,并且其中所述授权控制处理器还可操作地通过所述客户端系统上的所述Web浏览器客户端存储所述会话cookie,所述安全令牌包括在所述会话cookie和所述安全令牌之间建立预定对应关系的会话cookie标识符,并且其中所述授权控制处理器基于所述预定对应关系来恢复所述第二用户证书。
14.如权利要求10所述的网关服务器,其中所述Web服务器可操作地将从所述Web服务提供的连接确认消息返回给所述客户端应用,其中所述Web服务器还包括响应所述授权控制处理器的令牌注入处理器,并且其中所述授权控制处理器还可操作地在将连接确认消息返回给所述客户端应用之前,将所述安全令牌的副本注入到所述连接确认消息中,其中所述客户端应用在与所述客户端应用相关联的所述范围中的所述客户端系统上的所述本地存储库实例中提供对所述安全令牌的所述副本的存储。
15.如权利要求14所述的网关服务器,其中所述授权控制处理器还可操作地在所述安全令牌的所述副本中包括表示有限的有效性时段的时间戳,并且其中所述授权控制处理器基于所述时间戳有条件地接受所述连接消息。
16.如权利要求15所述的网关服务器,其中所述授权控制处理器还可操作地在所述安全令牌中提供第一标记值,在所述安全令牌的所述副本中提供第二标记值,所述第一标记值和所述第二标 记值识别所述安全令牌是否包括所述时间戳,优先于所述连接消息中的所述安全令牌而由所述客户端应用提供所述安全令牌的副本。
全文摘要
网关服务器与客户端和远程服务器系统相互操作以便提供对分布式Web应用的无状态的安全管理。在与客户端应用对应的本地存储库实例中不存在安全令牌的情况下,Web客户端执行针对Web浏览器客户端的用户的认证询问。认证询问获得用户证书,然后为了安全令牌而与网关服务器交换用户证书。然后,在协议特定连接消息中向网关服务器发送安全令牌。响应于该连接消息的接收,网关服务器通过以下步骤发起针对远程Web服务的WebSocket连接检查连接消息以恢复安全令牌,评估该安全令牌以获得用户证书,将用户证书注入安全令牌,并且向远程Web服务发送连接消息。
文档编号G06F15/173GK102884517SQ201080033319
公开日2013年1月16日 申请日期2010年5月28日 优先权日2009年5月28日
发明者J.R.法洛斯, F.萨利姆 申请人:卡金公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1