用于为专用网络上的资源 提供安全访问的方法和系统
技术领域
本发明涉及客户机-服务器计算,尤其涉及经由网络而对资源进行安全访问的客户机-服务器计算。
背景技术
诸如Netscape Navigator或Microsoft Explorer之类的网络浏览器(浏览器应用)允许客户机用户经由因特网而从远端服务器设备中请求并检索资源。这些网络浏览器可以显示或再现远端服务器设备提供的超文本标记语言(HTML)文档。此外,这些浏览器还能执行HTML文档中嵌入的脚本程序,以便提供某种本地功能。
通常,网络浏览器被用于访问诸如因特网之类的公共网络。而专用网络则通常受到防火墙保护,因此处于专用网络外部的计算设备上的浏览器不能访问专用网络上的任何资源。
虽然防火墙在防止外部访问专用网络方面是非常有效的,但是一般来说,外部人员或公司至少需要对其他人或其他公司的专用网络进行有限制的访问。例如,商业客户的零件供应商可以通过访问商业客户专用网络上保存的信息(例如库存量或订单)来为商业客户提供更好的服务。有一种常规方法允许供应商设备经由公共网络并穿过防火墙来访问专用网络。这样将会在防火墙中提供一个严重危及专用网络安全的“空穴”。因此,如果非常关注安全,那么通常不允许使用这种常规方法。另一种常规方法是与供应商设备建立虚拟专用网(VPN)。在这里,供应商设备也能通过公共网络和防火墙来访问专用网络,但是所有数据传输都是经过加密的。某些防火墙支持VPN并且可以使用诸如点到点隧道协议(PPTP)这类提供了加密通信的协议,然而,虽然VPN提供了远程安全访问,但是很难对其进行安装、配置和管理。而且还必须为每一个访问专用网络的外部人员或公司提供一个VPN。此外,VPN的费用很高并且每一个VPN都为整个专用网络提供了某种安全隐患。
因此,需要一种改进的方法,以便为专用网络上保存的资源提供安全的远程访问。
发明内容
本发明涉及的是那些为专用网络上保持的资源提供安全访问的改进方法。所述安全访问可以通过使用标准的网络浏览器并经由一个公共网络来提供。多个远程用户可以通过一个公共接入点而对至少一部分专用网络进行有限制的受控访问。
此外,本发明涉及那些为专用网络上保持的电子邮件资源提供安全的远程访问的改进方法。所述安全访问可以通过使用标准的网络浏览器并经由一个公共网络来提供。多个远程用户可以通过一个公共接入点而对专用网络内部邮件服务器上的电子邮件进行有限制的受控访问。本发明提供的解决方案不但允许本地访问电子邮件资源,而且还提供了加强的验证方法。
本发明可以采用多种方式来加以实施,其中包括将其作为系统、方法、设备以及计算机可读介质。以下将对本发明的几个实施例进行论述。
作为一种经由中间服务器来对专用网络上的资源进行访问的方法,本发明的一个实施例至少包括以下操作:接收来自用户的访问中间服务器的登录请求;对用户进行验证;随后在中间服务器上接收来自用户的资源请求;所述资源请求要求对来自专用网络的资源执行特定操作;获取用户的访问权限;确定用户的访问权限是否允许用户在专用网络上执行所述特定操作;当确定用户的访问权限不允许其在专用网络上执行所述特定操作的时候,阻止在专用网络上执行所述特定操作,由此不会具有针对所述资源请求的响应。
作为一种经由中间服务器来为专用网络提供远程访问的方法,本发明的一个实施例至少包括以下操作:接收来自远程用户的访问中间服务器的请求;确定是否允许远程用户访问中间服务器;在确定允许远程用户进行访问的时候,授权所述远程用户访问中间服务器,其中得到授权的访问中传送了关于专用网络预定部分的访问权限;随后在中间服务器上接收来自远程用户的资源请求,其中所述资源请求针对的是某种资源;通过所述访问权限来确定是否允许来自远程用户的资源请求;当确定允许执行来自用户的资源请求的时候,向远程用户提供所述特定资源;而在确定不允许来自用户的资源请求的时候,拒绝远程用户访问所述特定资源。
作为一种中间服务器系统,本发明的一个实施例至少包括一个万维网服务器、一个协议处理机以及一个内容变换器。万维网服务器经由网络而接收来自客户机设备的资源请求。协议处理机接收关于资源的请求,修改这些将要经由专用网络而被直接接到合适的远程服务器的请求,并且将经过修改的资源请求转发到合适的远程服务器。内容转换器则接收合适的远程服务器响应于修改过的请求所提供的资源并且对所述资源进行修改,以便对其中包含的至少某些链接进行修改,从而将其直接接到中间服务器而不是远程服务器。
作为一种至少包括能够经由中间服务器来访问专用网络上的资源的计算机程序代码的计算机可读介质,本发明的一个实施例至少包括:用于在中间服务器上接收来自用户的资源请求的计算机代码,其中所述资源请求要求对来自专用网络的资源进行特定操作;用于为用户获取访问权限的计算机代码;用于确定所述用户访问权限是否允许用户在专用网络上执行所述特定操作的计算机代码;以及用于在所述用于确定的计算机代码确定用户访问权限不允许用户在专用网络上执行所述特定操作的时候,阻止在专用网络上执行所述特定操作,由此不会具有针对所述资源请求的响应的计算机代码。
作为一种至少包括了简化经由中间服务器所对专用网络访问的计算机程序代码的计算机可读介质,本发明的一个实施例至少包括:用于从用户那里接收一个要求访问中间服务器的登录请求的计算机程序代码;用于确定是否允许用户访问所述中间服务器的计算机程序代码;用于在所述用于确定的计算机程序代码确定允许用户访问的时候许可所述用户访问中间服务器的计算机程序代码,其中这个得到许可的访问还携带了关于专用网络预定部分的访问权限;用于在中间服务器上后续接收来自用户的资源请求的计算机程序代码,所述资源请求要求得到特定资源;用于确定所述访问权限是否允许执行来自用户的资源请求的计算机程序代码;用于在所述用于确定的计算机程序代码确定允许执行来自用户的资源请求的时候,向所述用户提供特定资源的计算机程序代码;以及用于在所述用于确定的计算机程序代码确定不允许执行来自用户的资源请求的时候拒绝用户访问所述特定资源的计算机程序代码。
作为一种用于简化邮件客户机经由中间服务器来远程访问邮件服务器的方法,本发明的一个实施例至少包括以下操作:在中间服务器上接收邮件访问请求,其中所述邮件访问请求是从用于请求者的邮件客户机发送到中间服务器的;接收与邮件访问请求有关的口令;根据接收到的口令并使用邮件服务器来对请求者进行验证;基于接收到的口令并且使用验证服务器来对请求者进行验证,其中所述验证服务器与包含邮件服务器的专用网络相关联;以及,当邮件服务器和验证服务器对所述请求者进行了验证的时候,允许执行所述邮件访问请求。
作为一种用于对试图访问邮件服务器的远程邮件客户机的请求者进行验证的方法,本发明的一个实施例至少包括以下操作:从远程邮件客户机那里接收口令;检索先前保存的散列口令;确定所接收口令的散列版本是否匹配于先前保存的散列口令;基于接收到的口令并使用邮件服务器来对请求者进行验证;当确定接收到的口令的散列版本不匹配先前保存的散列口令时,根据接收口令并使用验证服务器来对请求者进行验证,其中所述验证服务器与包含所述邮件服务器的专用网络相关联。
作为一种至少包含了用于简化邮件客户机经由中间服务器而对邮件服务器进行远程访问的计算机程序代码的计算机可读介质,本发明的一个实施例至少包括:用于在中间服务器上接收邮件访问请求的计算机程序代码,其中所述邮件访问请求是从用于请求者的邮件客户机发送到中间服务器的;用于接收与邮件访问请求相关联的口令的计算机程序代码;用于根据接收到的口令并使用邮件服务器来对请求者进行验证的计算机程序代码;用于根据接收到的口令并使用验证服务器来对请求者进行验证的计算机程序代码,其中所述验证服务器与包含邮件服务器的专用网络相关联;以及用于在邮件服务器和验证服务器都对请求者进行了验证的时候允许所述邮件访问请求的计算机程序代码。
作为一种至少包含了用于对试图访问邮件服务器的远程邮件客户机的请求者进行验证的计算机程序代码的计算机可读介质,本发明的一个实施例至少包括:用于从远程邮件客户机那里接收口令的计算机程序代码;用于接收先前保存的散列口令的计算机程序代码;用于确定接收到的口令的散列版本是否匹配于先前保存的散列口令的计算机程序代码;用于根据接收到的口令并使用邮件服务器来验证请求者的计算机程序代码;以及用于在所述用于确定的计算机程序代码确定接收到的口令的散列版本不匹配先前保存的散列口令的时候,根据接收到的口令并使用验证服务器来对请求者进行验证的计算机程序代码,其中验证服务器与包含邮件服务器的专用网络相关联。
本发明的其他方面和优点将从以下结合附图的详细描述中变得清楚,其中所述附图是借助实例来对本发明原理进行描述的。
附图说明
通过以下结合附图的详细描述,可以非常容易地理解本发明,其中相同的参考数字表示的是相同的结构成分,并且其中:
图1A是根据本发明一个实施例的信息检索系统的框图。
图1B是根据本发明另一个实施例的信息检索系统的框图。
图2A是根据本发明一个实施例的中间服务器的框图。
图2B是根据本发明一个实施例的远程访问系统的框图。
图3是根据本发明一个实施例的请求处理的流程图。
图4是根据本发明一个实施例的验证处理的流程图。
图5是根据本发明一个实施例的访问权限处理的流程图。
图6是根据本发明一个实施例的操作权限处理的流程图。
图7是根据本发明一个实施例的详细的外部验证处理的流程图。
图8A和8B是根据本发明一个实施例的文件访问请求处理的流程图。
图9A~9C是根据本发明一个实施例的万维网资源请求处理的流程图。
图10描述的是根据本发明一个实施例的信息检索系统的图示;
图11是根据本发明一个实施例的URL修改处理的流程图。
图12是根据本发明一个实施例的脚本修改处理的流程图。
图13A和13B是根据本发明另一个实施例的脚本修改处理的流程图。
图14是根据本发明一个实施例的电子邮件请求处理的流程图。
图15是根据本发明一个实施例的邮件操作处理修改处理的流程图。
图16是根据本发明一个实施例的验证处理的流程图。
图17A和17B描述的是可以依照本发明使用的计算机系统的一个实例。
具体实施方式
本发明的一个方面涉及那些用于为专用网络上保持的资源提供安全访问的改进方法。这种安全访问可以通过使用标准的网络浏览器并经由一个公共网络来提供。多个远程用户可以通过一个公共接入点而对至少一部分专用网络进行有限制的受控访问。
这种解决方案使得雇员、承包商或合伙人之类的用户能在远离与专用网络的直接连接的同时,能够以一种安全的方式访问专用网络上的资源。本发明提供的这种解决方案不但易于建立和管理,而且还能以一种节省成本的方式来支持众多远程用户。
本发明的另一个方面涉及的是用于对专用网络上保持的电子邮件资源提供安全远程访问的改进方法。这种安全访问可以通过使用标准的网络浏览器并经由一个公共网络来提供。多个远程用户可以通过一个公共接入点来对专用网络中邮件服务器上的电子邮件进行有限制的受控访问。本发明提供的解决方案不但允许在本地访问电子邮件资源,而且还提供了加强的验证方法。
以下参考图1A~17B来论述本发明这个方面的实施例。然而本领域技术人员很容易了解,在此参考附图所给出的详细说明仅仅是出于说明的目的,本发明也可以扩展到这些有限实施例的范围之外。
图1A是根据本发明一个实施例的信息检索系统100的框图。信息检索系统100包括网络102、客户机设备104和106、中间服务器108、远程服务器110和112、专用网络114以及专用服务器116和118。网络102充当一种通信介质,其中客户机设备104和106、中间服务器108以及远程服务器110和112可以经由所述介质来进行通信。例如,网络102可以是一个数据网络,其中可以包括因特网、广域网或局域网。在这里,因特网是指全球性的互连计算机网络。专用网络114也充当一种通信介质,其中中间服务器108与专用服务器116和118可以经由所述介质进行通信。此外,网络114也是一个数据网络。通常,专用网络114与一个实体相关联,由此那些操作专用网络114上的计算设备的雇员可以与专用服务器116和118进行通信。例如,在这里可以将专用网络114称为企业网或内部网。然而,外部计算设备访问专用网络114通常会受到防火墙(未示出)的限制。而中间服务器108则被允许经由防火墙而与专用网络114进行通信。在这里,就验证和许可客户机设备(请求者)而言,中间服务器108是代表客户机设备(请求者)而与专用网络114进行通信的。事实上,中间服务器108控制了它允许外部计算设备访问的专用网络114的范围。
根据本发明,可以从客户机设备104和106中接收处于专用服务器116和118上的内容的请求。如这里使用的那样,“内容”是可以保存在服务器上并由客户机检索的任何信息或资源。一般来说,所述内容是作为电子文件来体现的,并且其中包含了文本和/或图像。通常,客户机设备104和106操作的是浏览器应用,所述应用简化了对网络102和专用网络114上的内容进行的请求和检索。在这种情况下,所述内容通常是作为一个可以用浏览器查看的文档(例如标记语言文档、网页等等)返回到浏览器应用的,由此浏览器应用可以显示该内容。客户机设备104和106与一个中间服务器108进行通信。一开始,中间服务器108确定是否对寻找内容的客户机设备104和106进行验证以及是否允许这种针对专用网络114的访问。在进行了成功验证和许可检验之后,中间服务器108转而代表客户机设备104和106来访问专用网络114上的专用服务器116和118。一旦中间服务器108从专用服务器116和118种得到了所请求的内容,那么中间服务器108可以将所请求的内容直接返回给客户机设备104和106,也可以先修改所请求的内容,然后再将所述内容递送给客户机设备104和106。
中间服务器108可以用多种形式修改所请求的内容。作为一个实例,在将所请求的内容递送给客户机设备104和106之前,中间服务器108可以向所请求的内容中插入一个工具栏。作为另一个实例,中间服务器108也可以改变所请求内容内部的超链接,从而指向一个中间服务器(例如中间服务器108)。中间服务器108还可以对所请求的内容执行多种其他任务。此外,信息检索系统100可以在中间服务器108上支持服务器存储信息的集中保存。服务器存储信息通常称为“cookie”,但是cookie通常保存在客户机设备上。
尽管图1A中说明的信息检索系统100仅仅描述了一对客户机设备、一对远程服务器、一个单独的中间服务器以及一对专用服务器,但是应该理解,所述信息检索系统100也可以支持多个客户机设备和多个服务器设备。此外还应该理解的是,所述信息检索系统100可以支持多个中间服务器。
图1B是根据本发明一个实施例的信息检索系统150的框图。举例来说,信息检索系统150是图1A中描述的信息检索系统100的一种更详细的实施方式。
信息检索系统150使用了因特网152以及经由有线或无线装置耦合到因特网152的客户机设备154和156。通常,客户机设备154和156操作的是客户端应用,例如网络浏览器或邮件应用程序。当客户机设备154和156的请求者(用户)希望访问远程资源的时候,资源请求是从客户机设备154和156经由因特网152发送到中间服务器158的。通常,客户机设备154和156与中间服务器158之间通信是借助一种加密技术(例如安全套接字层(SSL))来保护的。中间服务器158提供了针对内部网160的访问。而客户机设备154和156所请求的资源则处于内部网160以内。由于防火墙通常限制或阻止从外部访问内部网160,因此必须允许中间服务器158经由防火墙162与内部网进行通信。内部网160通常包含了能以电子方式访问的不同类型的资源。一般来说,这些资源保存在与内部网耦合或是作为内部网一部分的服务器设备上。如图1B所示,内部网160耦合或包含了一个验证服务器164、一个万维网服务器166、一个邮件服务器168、一个文件服务器170以及一个日志服务器172。因此,指定的客户机设备可以经由中间服务器158来访问处于内部网160之中的服务器164~172中的任何一个服务器。这样一来,指定的客户机设备可以使用一个网络浏览器应用来请求和接收那些处于万维网服务器166上的资源。作为另一个实例,指定的客户机设备可以使用一个客户端邮件应用程序来访问邮件服务器168上的邮件资源。此外,作为另一个实例,指定的客户机设备可以访问处于内部网160内部或是所述网络上的文件服务器170,以便获取、存储或查看其上的电子文件。
在这里对中间服务器158进行了配置,以便确保经由中间服务器158所进行的访问内部网160的操作能够得到保护。关于这一点,在这里必须对那些尝试访问内部网160上的资源或内容的请求者进行验证。所述验证可以使用内部网160内部或是所述网络上的验证服务器164。关于这一点,在中间服务器158上,在对请求者进行验证的过程中,可以使用内部网160所使用的本地验证技术。此外,中间服务器158可以由管理员进行配置,以便在内部网160内部或是所述网络上为不同请求者(例如客户机设备的用户)给出关于不同资源(例如服务器)的不同访问权限。日志服务器172则允许在中间服务器158上保存那些涉及针对内部网160的访问请求的日志信息。所述日志信息可以在应用级上提供,由此用户更能对其加以辨别。
图2A是根据本发明一个实施例的中间服务器200的框图。举例来说,中间服务器200适合用作图1所示的中间服务器108。
中间服务器200包含了不同的处理模块,这些模块通常是通过中间服务器使用的处理设备执行计算机程序代码来实施的。更具体的说,中间服务器200的处理模块包括一个万维网服务器202和一个协议处理机204。万维网服务器202经由链路206(经由一个网络)耦合到客户机设备,而协议处理机204则经由链路208(经由一个网络)耦合到远程服务器。此外,万维网服务器202与协议处理机204不但彼此进行通信,而且还与不同的支持模块以及一个数据存储设备210进行通信。所述数据存储设备210为中间服务器200保持的不同数据项提供永久或非易失存储。通常,所述数据存储设备为与客户机设备相关联的每一个用户或请求者都提供了单独的存储器。
而处理模块则包括一个验证管理器212和一个访问管理器214。验证管理器212管理的是用于确定是否请求者即为其所称谓的人员的验证处理。验证处理可以在本地进行,也可在中间服务器200外部进行。例如,外部验证可以由一个处于专用网络内部的验证服务器(例如验证服务器164)提供。访问管理器214则对专用网络上的不同资源提供了访问限制。也就是说,在这里可以为不同的请求者分配不同的访问权限等级、类型或区域。举例来说,请求者A可以访问服务器X,但是不能访问服务器Y和Z,请求者B能以只读方式访问服务器Y,但是不能访问服务器X和Z。
中间服务器200还包括一个内容变换器216,所述变换器是另一个处理模块,它对从远程服务器接收的请求内容进行解析,然后以预定方式修改所述内容。
中间服务器200包括的另一个处理模块是cookie管理器218。cookie管理器管理的是“cookie”,由此对那些从远程服务器接收的cookie保存到数据存储设备210,并且在恰当时间将先前保存在数据存储设备210中的这些“cookie”递送到远程服务器。一般来说,“cookie”指的是服务器存储信息。这种服务器存储信息通常由远程服务器设定并用于会话、状态或标识目的。
图2B是根据本发明一个实施例的远程访问系统250的框图。远程访问系统250在客户机-服务器环境中运作,以使客户机用户能够访问远程服务器上的资源。特别地,远程访问系统250包括一个网络浏览器254和一个邮件客户机256。所述网络浏览器254和邮件客户机256都是在客户机设备上操作或运行的客户机应用。通常,用户或请求者与一个或多个客户机程序进行交互,以便请求那些处于远程服务器上的资源。网络浏览器254和邮件客户机256则通过安全链路或连接耦合到一个中间服务器252。中间服务器252也经由安全或不安全连接或链路而与远程服务器相耦合。所述中间服务器252可以支持针对多个不同服务器的连接,例如在专用网络上找到的服务器。专用网络的一个实例是企业网。图2B中描述的服务器包括万维网服务器258、电子邮件服务器260、Windows文件服务器262,UNIX文件服务器264、验证服务器266以及日志服务器268。
中间服务器252包括一个安全套接字层(SSL)272,在到达前端协议处理机层270之前,所述安全套接字层为所述服务器与客户机应用的连接或链路提供加密处理。前端协议处理机层270包括多个协议处理机,以便对不同客户机应用可以使用的不同类型的输入协议进行处理。如图2B所示,前端协议处理机层270包括用于HTTP、IMAP、SMTP、POP和MAPI这些协议的单独的协议处理机。在为一个输入请求使用了恰当的协议处理机之后,可以使用中间服务器252内部的其他功能模块。特别地,访问管理器274可以确定是否允许关联于输入请求的请求者使用所请求的访问类型。验证管理器276可以确定请求者是否能够通过验证。内容变换器278可以对接收到的请求或是远程服务器提供的所请求的响应的内容进行转换。系统管理器280则允许系统管理员与中间服务器252进行交互,以便对访问权限、系统配置和登录特征进行配置。
中间服务器252还包括后端协议处理机282。所述后端协议处理机282为相对于特定服务器所进行的输入和输出通信提供恰当的协议。如图2B所示,后端协议处理机层包含用于如下协议的协议处理机:HTTP、IMAP、SMTP、POP、SMB、NFS,NIS、RADIUS、LDAP以及NT。就中间服务器252的输入协议不同于中间服务器252的输出协议而言,内容变换器278可以执行协议变换(例如转换)。此外,中间服务器252还包括一个数据存储器284、一个日志管理器286以及一个数据同步管理器288。数据存储器284可以为中间服务器252的不同组件提供临时或半永久性的数据存储器。例如对每一个客户机或请求者来说,用于验证目的的本地记录可以保存在数据存储器284中。此外还可以将客户机或请求者的会话标识符或cookie以一种集中方式保存在数据存储器284中。数据同步管理器288则是一个能够通过将一个中间服务器与另一个中间服务器相耦合来提供容错功能的模块。因此,如果一个中间服务器出现故障,那么出现故障的中间服务器可以经由链路290耦合到一个正在运行的中间服务器,从而提供通常与一个中间服务相关联的某些或全部操作。在这里还提供了日志管理器286,以便能对通过中间服务器252发出的不同接入请求进行应用级的日志记录。由日志管理器286形成的日志保存在日志服务器268中。
图3是根据本发明一个实施例的请求处理300的流程图。无论何时,只要中间服务器接收到了来自请求者的请求,则调用请求处理300,其中举例来说,所述中间服务器可以是图1A中描述的中间服务器108、图1B中描述的中间服务器158、图2A中描述的中间服务器200或图2B中描述的中间服务器252。
请求处理300始于判定块302,所述判定块确定是否接收到的请求是一个系统登录请求。当判定块302确定接收到的请求是一个系统登录请求时,所述请求处理300尝试对请求者进行验证304。所述验证既可以在本地执行也可以在远端执行。下文中提供了关于验证的附加细节。此后,判定块306确定请求者是否通过了验证。当判定块306确定请求者不能通过验证时,登录尝试将会失败并且可以向请求者返回一个登录页面308。这个登录页面便于请求者重新尝试登录。在执行了操作308之后,请求处理300完成并且在登录请求失败的情况下结束。
作为选择,当判定块306确定请求者通过验证时,则向请求者返回一个会话标识符310。根据环境,所述请求者指的是客户机设备或是客户机设备用户。只要会话有效,则在针对中间服务器的后续请求中使用所述会话标识符。此外还向请求者返回一个初始访问页面312。而请求者则能够从初始访问页面开始访问专用网络上的多种可用资源。在执行了操作312之后,请求处理300完成并且在登录请求成功的情况下结束。
除了关于登录请求的处理之外,所述请求处理300还进行操作,以便对其他所有经由中间服务器的远程访问进行处理。因此,当判定块302确定接收到的请求不是一个系统登录请求时,判定块314确定接收到的请求是否具有一个有效会话标识符。如果请求者通过了验证(也就是登录到中间服务器上)并且会话仍然有效,则接收到的请求具有一个有效会话标识符。因此,当判定块314确定关联于所接收的请求的会话标识符无效时,针对中间服务器的访问将被拒绝,并且可以将登录页面返回给请求者308。作为选择,当判定块314确定会话标识符有效时,判定块316确定会话是否超时。当判定块316确定会话超时的时候,针对中间服务器的访问将被拒绝,并且可以向请求者返回登录页面308。在这里,如果请求者具有一个无效会话标识符或者所述会话已经超时,则迫使请求者进行登录,以便对其进行验证。
另一方面,当判定块316确定会话没有超时的时候,则允许请求者经由中间服务器来访问专用网络。此后,根据请求者尝试进行的访问的类型而会执行附加的处理,以便确保请求者只能访问那些被认为是恰当和预期的资源。特别地,根据请求处理300,在这里将会获取与请求者相关联的访问权限318。所述访问权限表示的是那些请求者有权访问的资源。接着,判定块320确定与接收到的请求相关联的特定访问类型是否得到许可。当判定块320确定这种与接收到的请求相关联的访问类型没有得到许可的时候,则向请求者返回一个拒绝访问的页面322。作为选择,当判定块320确定许可所接收的请求的访问类型的时候,则允许对接收到的请求进行处理324。在这里,对接收到的请求所进行的处理能使请求者访问(例如查看、检索等等)那些来自专用网络的受保护资源。在执行了操作322和324之后,请求处理300完成并且所述处理只在认为许可所述访问时已处理了接收到的请求时结束。
图4是根据本发明一个实施例的验证处理400的流程图。举例来说,所述验证处理400是与图3描述的验证操作304相关联的处理。
验证处理400始于判定块402,所述判定块402确定是否存在请求者(用户)的本地记录。当判定块402确定存在请求者的本地记录时,判定块404确定是否有必要执行本地或外部验证。在这里,本地记录表示是否应该执行本地或外部验证。除了关于是否应该执行本地或外部验证的指示之外,本地记录还可以保存其它有用信息,例如请求者(用户)姓名、上次登录时间、帐号状态等等。当判定块404确定将要执行本地验证时,对一个为了进行验证而被处理的具有登录请求的口令进行散列(hash)。所述散列是将一个字符串变成另一个表示原始字串并且名为“密钥(key)”字符串的变换。散列函数可以执行所述散列运算。而所述散列通常是在加密与解密环境中执行的。
接着,判定块408确定经过散列的口令是否与一个存储的散列口令相匹配。当判定块408确定存在匹配时,则认为验证成功410。作为选择,当判定块408确定不匹配时,则认为验证失败412。此外,当判定块408确定不匹配时,可以在日志中记录一个访问失败414。在一个实施例中,所述日志可以由日志服务器提供。关于访问失败的日志记录414可以提供应用级信息,该信息便于在稍后查看日志时理解访问失败的性质。在进行了操作410和414之后,验证处理400完成并且是在验证成功或失败的情况下结束,其中所述验证的成功和失败取决于登录请求是否包含了正确的口令。
另一方面,当判定块402确定不存在请求者的本地记录时,则判定块416确定是否需要本地设定。在这里可以使用系统设定来表明是否需要本地记录。管理员可以使用这种系统设定来做出限制,从而只有那些具有本地记录的用户才能进行访问。当判定块416确定需要本地设定的时候,由于没有可用的本地记录,因此认为验证失败412。同样,在这里可以在日志中记录414所述访问失败。作为选择,当判定块416确定不需要本地设定或是判定块404确定执行外部验证时,则获取用于验证的外部验证服务器(EAS)的地址和类型418。不同的处理通常是结合不同类型的外部验证服务器来执行的。一般来说,这些验证服务器是出于执行验证的目的而在专用网络内部提供的。并且通常存在一个表示将要使用的外部验证服务器的系统设定。因此,验证处理400可以利用由这种外部验证服务器提供的本地验证。下文中涉及图7的论述提供了关于不同类型的外部验证的附加细节。
接着,判定块420确定外部验证是否成功。在这里,外部验证的执行依赖于所指示的外部验证的特定类型。当判定块420确定外部验证并未成功时,则认为验证失败412。此外如先前所述,在这里可以在日志中记录所述访问失败414。另一方面,当判定块420确定外部验证成功时,则认为验证取得成功422。在执行了操作422之后,验证处理400完成并且所述处理在请求者通过了验证的情况下结束。
图5是根据本发明一个实施例的访问权限处理500的流程图。举例来说,所述访问权限处理500是图3的判定块320所执行的处理。也就是说,访问权限处理500确定特定请求者请求的访问类型是否得到许可。事实上,所述访问类型提供了可用于对请求者的访问进行限制的不同准则。相对于图5所示的实施例而言,所述准则包含了源网际协议(IP)地址、时刻和操作。
访问权限处理500始于判定块502,其中确定是否认可与接收到的请求(也就是请求者)相关联的源IP地址。当判定块502确定关联于所接收请求的源IP地址没有得到认可的时候,访问权限处理500拒绝访问504。在这里,为了降低进行未经认可的访问的风险,访问权限处理500将会确保只有那些已知的请求者的IP地址才能够访问专用资源。
当判定块502确定源IP地址得到认可的时候,判定块506确定发出请求的时间是否满足访问时刻的限制。一般来说,这个限制可以是针对所有请求者来进行配置的,也可以单独为每一个请求者配置这个限制。在这里,如果需要的话,可以对中间服务器进行配置,以便只在某些时段才允许访问专用资源。例如,这种处理可以只允许在营业时间或其它受限时间进行访问。当判定块506确定所接收的请求的时间不在许可时刻以内时,访问权限处理500拒绝访问504。
在确定了关联于接收到的请求的时间是在许可时刻以内时,判定块508确定是否允许进行与接收到的请求相关联的特定操作。在这里,输入请求可以要求对专用资源执行多种不同的操作。这些多种不同的操作往往随着所提供的应用类型而变化。判定块508通过进行操作,可以对允许不同请求者使用的操作进行限制。当判定块508确定不允许进行所请求的操作时,则访问将被拒绝504。另一方面,当判定块508确定允许进行所请求的操作时,则访问将会得到许可510。在执行了操作504和510之后,所述访问权限处理500完成并结束。
图6是根据本发明一个实施例的操作权限处理600的流程图。举例来说,所述操作权限处理600是由图5中的判定块508执行的。此外应该注意的是,操作权限处理600是在确定允许进行所请求的操作的时候执行所述操作的,由此操作权限处理600可以与图3的操作320以及324相关联。
操作权限处理600始于判定块602,其中确定是否请求了文件浏览操作。当判定块602确定请求了文件浏览操作时,判定块604确定是否能为请求者启用文件浏览。当判定块604确定不能为请求者启用文件浏览时,访问将被拒绝606并且由此结束操作权限处理600。作为选择,当判定块604确定能为请求者启用文件浏览时,判定块608确定是否正在请求一个读或写操作。当判定块608确定请求了一个写操作时,判定块610确定是否允许进行写访问。在一个实施例中,判定块610确定是否允许发出请求的特定请求者进行写访问。当判定块610确定不允许进行写访问时,访问将被拒绝606并且由此结束操作权限处理600。作为选择,当判定块610确定允许进行写访问时,则执行写请求处理612,从而实现接收到的请求。在进行了操作612之后,操作权限处理600是在执行了所请求的操作的情况下结束。
另一方面,当判定块608确定正在请求一个读操作时,判定块614确定是否允许进行读访问。在一个实施例中,判定块614确定是否允许发出请求的特定请求者执行读访问。当判定块614确定不允许进行读访问时,所述访问将被拒绝606。作为选择,当判定块614确定允许进行读访问时,则通过执行读请求处理616来实现所请求的操作。在执行了操作616之后,操作权限处理600完成并且在执行了所请求的处理的情况下结束。
另一方面,当判定块602确定所请求的操作不是文件浏览操作时,判定块618确定是否所请求的操作是一个万维网浏览操作。当判定块618确定所请求的操作是一个万维网浏览操作时,判定块620确定请求者是否可以访问与万维网浏览操作相关联的服务器。当判定块620确定请求者不能访问该服务器时,所述访问将被拒绝606。在一个实施例中,中间服务器可以保持一个可以由特定请求者访问的服务器的列表。这就使得中间服务器可以通过服务器名称来对特定请求者能够浏览的资源进行控制。例如,尽管专用网络可以包括大量服务器,但是可以分别对请求者进行限制,使之只能访问某些服务器。作为选择,当判定块620确定请求者能够访问与万维网浏览操作相关的服务器时,则执行万维网浏览请求处理622。换句话说,由于请求者有权访问特定服务器,因此在这里将会执行所请求的万维网浏览操作622。在执行了操作622之后,操作权限处理600在执行了所请求的操的情况下结束。
另一方面,当判定块618确定所请求的操作不是万维网浏览操作时,则判定块624确定是否所请求的操作是一个电子邮件操作。当判定块624确定所请求的操作是电子邮件操作时,则判定块626确定是否为请求者启用电子邮件(email)。当判定块626确定没有为请求者启用电子邮件时,所述访问将被拒绝606。在这里,中间服务器能对特定请求者访问电子邮件的操作进行控制。作为选择,当判定块626确定为请求者启用电子邮件时,则执行电子邮件请求处理628。换句话说,由于请求者具有执行所述操作的适当权限,因此执行了所请求的电子邮件操作。在执行了操作628之后,所述操作权限处理600在执行了所请求的操作的情况下结束。
此外,当判定块624确定所请求的操作不是电子邮件操作时,则判定块630确定是否所请求的操作是中间服务器所允许的某种其他操作。在这里,所述其他操作可以是由中间服务器简化的任何适当操作。事实上,所述其他操作可以表示一种能在中间服务器上得到的普通服务。所述其他操作也可以指一种在没有访问专用网络的情况下由中间服务器执行的本地操作。本地操作的实例差别很大但是可以包括:添加书签,添加、编辑或删除本地记录,修改文件共享等等。然而,所述其他操作也可以是一个在专用网络内部执行的操作。当判定块630确定所请求的操作是所述其他操作之一时,则判定块632确定是否允许执行所述其他操作。当判定块632确定所请求的操作不是得到许可的其他操作中的一个操作时,所述访问将被拒绝606。作为选择,当判定块632确定允许执行所述其他操作时,则执行所述其他请求处理634。在进行了操作634之后,所述操作权限处理600完成并且在执行了所述其他类型的操作的情况下结束。
另一方面,当判定块630确定所请求的操作并非允许(由请求者)执行的其他操作中的一个操作时,所述操作权限处理600在不执行所请求操作的情况下结束。在这里,由于操作权限处理600不支持所请求的操作,因此在中间服务器上不会处理所请求的操作(也就是阻止所述操作)。
图7是根据本发明一个实施例的详细的外部验证处理700的流程图。举例来说,所述详细的外部验证处理700是与图4所述的判定块420相关联的详细处理。所述详细的外部验证处理700支持多种不同类型的外部验证系统,其中包括:网络信息系统(NIS),远程验证拨号用户服务(RADIUS),轻型目录访问协议(LDAP)以及NT域。因此,为中间服务器执行的外部验证可以使用由专用网络提供的多种本地验证方法中的任何一种。
详细的外部验证处理700始于判定块702,其中确定是否外部验证服务器(EAS)是NIS。当外部验证服务器是NIS时,则读取一个NIS记录704。然后对注册请求提供的口令执行散列操作706。经过散列的口令与NIS记录内部提供的口令进行比较708。然后,判定块710确定散列口令是否匹配。在口令匹配的时候,所述验证成功712。当口令不匹配时,所述验证失败714。
另一方面,当判定块702确定外部验证服务器不是NIS时,则判定块716确定是否外部验证服务器是RADIUS。当外部验证服务器是RADIUS时,则使用RADIUS共享秘密来对登录请求提供的用户名和口令进行加密718。所述RADIUS共享秘密通常是一个共享密钥。此后将经过加密的值发送到RADIUS服务器,以便对其进行验证720。判定块722确定是否接收到了来自RADIUS服务器的响应。当接收到响应时,所述响应指示验证成功还是失败724。
另一方面,当判定块716确定外部验证服务器不是RADIUS时,则判定块726确定是否所述外部验证服务器是LDAP。当判定块726确定外部验证服务器是LDAP时,则向LDAP服务器发送具有登录请求的用户名和口令以便进行验证728。然后,判定块730确定是否接收到来自LDAP服务器的响应。在接收到响应时,所述响应指示验证取得成功还是失败732。
另一方面,当判定块726确定外部验证服务器不是LDAP时,则判定块734确定所述外部验证服务器是否是NT域(NT域服务器)。当判定块734确定所述外部验证服务器是NT域时,则从NT域服务器获取一个随机数736。然后使用所述随机数来对具有登录请求的口令执行散列操作738。接下来则将所述散列值发送到NT域服务器以便进行验证740。然后,判定块742确定是否接收到了来自NT域服务器的响应。所述响应表示验证成功或失败744。
图8A和8B是根据本发明一个实施例的文件访问请求处理800的流程图。举例来说,文件访问请求处理800是在请求者请求了万维网浏览操作时执行的处理。换言之,举例来说,文件访问请求处理800可以是由图6的块622的一个实施例执行的处理。
文件访问请求处理800始于判定块802,所述判定确定是否发现一个服务器。当判定块802确定发现了服务器时,则判定块804确定所述文件访问请求是否尝试查看文件夹内容。当判定块804确定文件访问请求确实希望查看文件夹内容时,则对文件夹内容进行检索805。然后将检索到的内容发送到请求者808。
另一方面,当判定块804确定文件访问请求并未尝试查看文件夹内容时,则判定块810确定所述文件访问请求是否正在请求一个新建文件夹。当判定块810确定所述文件访问请求正在请求一个新建文件夹时,则提示请求者输入新建文件夹的名称812。然后,判定块813确定是否接收到一个文件夹名称。当判定块813确定尚未接收到文件夹名称时,所述文件访问处理800将会等待文件夹名称。一旦判定块813确定接收到文件夹名称,则创建这个新建文件夹814。
作为选择,当判定块810确定文件访问请求不希望创建一个新建文件夹时,则判定块816确定文件访问请求是否希望下载一个文件。当判定块816确定所述文件访问请求希望下载一个文件时,则将所请求的文件下载到请求者818。另一方面,当判定块816确定所述文件访问请求不希望下载文件时,则判定块820确定所述文件访问请求是否希望上传一个文件。当判定块820确定文件访问请求希望上传一个文件时,则将所请求的文件上传给请求者822。作为选择,当判定块820确定文件访问请求不希望上传一个文件时,则可以处理附加类型的文件访问请求,但是在图8A中并未显示这类操作。因此,在执行了判定块820之后,当文件访问请求不希望上传文件(并且不支持附加类型的文件访问请求)时,文件访问请求处理800完成并且所述处理在没有执行任何文件访问操作的情况下结束。同样,在完成了块808、814、818和822之后,文件访问请求处理800将会完成,但却是在执行了所请求的文件访问情况下结束的。
此外,当判定块802确定尚未发现一个服务器时,所述文件访问请求处理800将会执行图8B所示的处理。在这种情况下,一开始将会发现一个可用服务器列表824。然后,判定块826等待请求者选择其中一个可用服务器。一旦判定块826确定接收到了关于所述服务器的选择,则检索与选定服务器有关的共享信息828。在一个实施例中,所述共享信息标识的是那些保存在选定服务器上并能与远程请求者之类的第三方共享的文件夹。然后,判定块830确定是否应该将关于服务器的信息设定为永久信息。当判定块830确定应该将关于服务器的信息变成永久性信息时,则保存所述服务器信息832。通过保存服务器信息,可以使所述服务器成为一个“可用服务器”,由此不必由于后续系统登录来发现服务器可用性。另一方面,当判定块830确定不应该将关于服务器的信息变成永久性信息时,则绕过块832。无论出现哪种情况,在执行了块830之后,在未曾将服务器信息变成永久性信息的时候,以及在方框832之后,在将服务器信息变为永久性信息的时候,寻找服务器的处理将会完成并且文件访问请求处理800由此返回到重复进行判定802以及后续操作。
图9A~9C是根据本发明一个实施例的万维网资源请求处理900的流程图。举例来说,所述万维网资源请求处理900由一个中间服务器执行,其中所述服务器可以是如图1A所示的中间服务器108或是图1B所示的中间服务器158。此外,在这里是通过执行万维网资源请求处理900来处理万维网资源请求的。
一开始获取的是恰当的远程服务器的主机名称902。在一个实施例中,可以从存储器中获取所述主机名称。举例来说,在这里,所述存储器可以是图2A所示的数据存储设备214。而在另一个实施例中则能从与万维网资源请求相关联的URL中获取主机名称。在获取了恰当的远程服务器的主机名称902之后,通过执行一个主机名称查找来获取所述恰当的远程服务器的IP地址904。然后则向远程服务器开放一个连接(如果已经开放了连接,则保持所述连接)906。接下来,如有必要,则在中间服务器与远程服务器之间执行一个安全握手机制908。随后获取与所获取的主机名相关联的任何“cookie”910。在执行了操作910之后,在中间服务器上将会完成关于万维网资源请求的预处理,并且现在能够将所述请求转发到远程服务器。这时则将万维网资源请求与相关的“cookie”一起发送到远程服务器912。
然后,判定块914确定是否接收到一个响应。当判定块914确定尚未接收到响应时,则万维网资源请求处理900将会等待这个响应。一旦判定块914确定接收到一个响应,则判定块916确定所述响应中是否存在“cookie”。当判定块916确定所述响应中存在“cookie”时,则从所述响应中提取所述“cookie”918。此后则保存所提取的“cookie”。通常,“cookie”保存在中间服务器内部提供的中央存储器或是关联或耦合中间服务器的其它存储器中。在执行操作920之后以及在进行了判定916之后,当确定响应中没有“cookie”的时候,将对所述响应报头内部的URL进行修改922。
然后,判定块924确定所述响应是否是一种将要修改的类型。在这里,响应通常可以具有多种形式,例如HTML、图形、pdf、MPEG或其他格式。当判定块924确定该响应具有不能修改的类型(例如图形)的时候,则直接将所述响应发送(或转发)到请求者926。然后,判定块928确定是否完成了所述响应。当判定块928确定完成了所述响应的时候,万维网资源请求处理900将会返回到重复执行判定914以及后续操作,由此可以对附加的万维网资源请求进行处理。作为选择,当判定块928确定迄今为止仅仅将一部分响应发送到请求者时,万维网资源请求处理900将会返回到重复执行判定块914以及后续操作或类似操作,从而以相同方式来对响应的后续部分进行处理。
另一方面,当判定块924确定所述响应是一种可以修改的类型(例如HTML)时,则通过对这个响应进行处理而在将其返回给请求者之前对其进行修改。图9C中描述的处理代表了这种处理的一个实施例,其中可以通过执行所述处理来修改所述响应。特别地,判定块932确定是否希望得到一个工具栏。在这里可以对中间服务器进行配置,以便始终、偶尔或者从不插入工具栏。此外中间服务器还可以对工具栏进行标准化或者定制工具栏。在判定块932确定希望得到工具栏的时候,则将工具栏的HTML插入所述响应。由工具栏HTML生成的工具栏可以提供那些添加到因此得到的响应中的控制或内容,从而简化中间服务器提供的特征或功能。
接下来可以对所述响应的HTML部分内部的某些URL进行修改936。在一个实施例中,通过对因此得到的HTML的某些标签内部的主机名称部分进行修改,可以实现针对某些URL的修改。在另一个实施例中,对某些URL的修改可以通过向某些URL添加后缀来实现。这样一来,这些后缀用于允许URL传送附加信息。此外还可以对因此得到的HTML内部的脚本语言部分提供或产生的某些URL进行修改938。脚本语言的实例包括JavaScript和VBscript。在一个实施例中将因此得到的HTML内部的脚本语言部分提供或生成的某些URL的主机名称部分进行修改938。在另一个实施例中,通过对脚本语言部分提供或生成的某些URL进行修改938,以便包括携带了补充信息的后缀。在下文中,修改脚本语言部分的附加细节是参考图13A和13B而被提供的。此后则将经过修改的响应发送到请求者940。
然后,判定块942确定是否完成所述请求。当判定块942确定已经完成该请求时,所述万维网资源请求处理900将会完成和结束。另一方面,当判定块942确定尚未完成所述请求时,则万维网资源请求处理900返回到重复执行判定914以及后续操作,从而在接收到响应的时候以相同方式来处理响应的剩余部分。这样一来,万维网资源请求处理900可以通过进行操作来处理针对多个数据或数据块中的资源请求的响应。在这种情况下,万维网资源请求处理900可以在一个来自远程服务器的响应到达的时候处理所述响应,由此不会妨碍对于所述请求者的响应性。针对这一点,万维网资源请求处理900会为关联于响应的每一个数据或数据块重复执行操作914~942。
图10描述的是根据本发明一个实施例的信息检索系统1000的图示。所述信息检索系统1000通常类似于图1A的信息检索系统100或图1B的信息检索系统150。下文中参考一个典型实例而对信息检索系统1000的操作进行了论述,其中所述实例描述的是根据一个实施例的所述系统的操作。信息检索系统1000包括一个客户机1002,一个带有数据存储器1006的中间服务器1004以及一个远程服务器1008。在这里假设已经执行了图3的请求处理300并且允许请求者以所寻求的方式来访问所请求的资源。
这个典型实例与一个安全请求相关联,其中所述请求可以通过用户在万维网浏览请求内容中显示的网页中选择一个超链接而被发起。在这里假设选择的超链接是:
https:∥secure.danastreet.com/quote/msft:danainfo:host=www.xyz.com
在这个超链接中,“https”是使用安全套接字层(SSL)的协议,而“secure.danastreet.com”则是主机名称,其中“danastreet.com”是一个域,“secure”是一个子域,“/quote/msft”则是连至通过选择超链接所请求的特定资源的路径,“danainfo”是一个关键字,“www.xyz.com”则是被请求的资源所处的主机。因此,关于主机名称“secure.danastreet.com”的域名查找将被解析成danastreet.com的IP地址,对这个实例来说,所述地址即为中间服务器1004。然后则将所述请求从客户机1002发送到中间服务器1004。其中举例来说,所述请求如下所示:
GET:/quote/msft:danainfo:host=www.xyz.com HTTP/1.0
Host:secure.danastreet.com
Cookie:DSID=123xyzzbc
在这个请求内部也可以包括其他信息,例如附加的cookie、可接受编码等等。在这个实例中,cookie是一个会话cookie(会话标识符)并且在确定是否许可客户机1002与中间服务器1004结合使用的过程中得到了使用。
对安全请求而言,所述请求内部的主机名称不能直接标识所述请求最终所要递送的远程服务器1008。然而,远程服务器1008的主机名称是从具有所述请求的信息中获取的。更具体的说,所述信息(也就是主机变量)是作为后缀而与所述请求一起提供的。在这个实例中,所述后缀包含了如下信息,即远程服务器1008的主机名称是“www.xyz.com”。一旦获取了恰当的主机名称,则会对所述主机名称(“www.xyz.com”)进行域名查询。接着将会从中间服务器1004以及远程服务器1008中打开一个连接(如果已经打开了连接,则保持所述连接)并且可选地执行安全握手机制。然后可以获取数据存储器1006中任何与主机名称以及请求者相关联的cookie。接着,中间服务器1004将一个请求发送到远程服务器1008。举例来说,所述请求如下所示:
GET:/quote/msft HTTP/1.0
Host:www.xyz.com
Cookie:xyzUserID=sam
在这个请求中也可以包含其他信息。应该注意的是,具有初始请求的cookie与中间服务器1004相关联,由此不能将其与请求一起转发给远程服务器1008。
远程服务器1008接收所述请求并且返回一个响应报头以及所请求资源的某些或全部内容。示范性的响应可以具有以下格式:
HTTP/1.0 200 OK
Set-cookie:xyzuserlD=Samual,expires=01-Jul-2002
Content-type:text/html
Content-length:2000
Location:https:∥www.xyz.com/quote/msft
<HTML>
**
</HTML>
由于该响应曾经包括一个将要设定的“cookie”,因此从响应中删除了set-cookie的命令,然后将所述命令保存在数据存储器1006中。接着,就存在URL的情况而言,在这里将对报头内部的URL进行修改,以便指向中间服务器1004。在这个实例中,位置报头包括一个完整路径(包括主机名称),即https:∥www.xyz.com/quote/msft,由此将其修改成了
https:∥secure.danastreet.com/quote/msft:danainfo:host=www.xyz.com,SSL。
在这个实例中不但对主机名称进行了修改,而且还向URL末端添加了变量(也就是后缀)。添加的变量信息可以是一个具有所请求的资源的主机服务器的指示以及一个SSL指示符。通过使用这个实例,有必要对相关的URL进行修改,以便在相关URL的末端包含变量信息(“danainfo:host=www.xyz.com”)。而相关URL的主机名称则是由客户机1002上运作的浏览器应用恰当提供的,由此将会导致将当前主机名称(“secure.danastreet.com”)用于这种路径。如果需要的话,也可以将一个工具栏插入HTML数据,从而简化中间服务器1004支持的操作或函数。此外,在这里还对由此得到的HTML或是由脚本语言生成的HTML中的某些标签内部的URL进行了修改,以便指向中间服务器1004。
举例来说,如果HTML数据包括以下超链接:
<a ref=https:∥www.xyz.com/quote/msft>
则将所述超链接修改成:
<a ref=https:∥secure.danastreet.com
/quote/msft:danainfo:host=www.xyz.com,SSL>.
同样,如果HTML数据包括以下相关的超链接:
<a ref=a.html>
则将所述超链接修改成:
<a ref=a.html:danainfo:host=www.xyz.com,SSL>。
应该注意的是,在URL末端提供的变量信息(也就是后缀)不必处于实际末端。在这里,后缀通常被用于指示域名右侧。实际上,变量信息可以处于URL中的多种不同位置(甚至是域名左侧)。例如,倘若初始超链接自身具有诸如其后跟随了字符“?”或“#”的变量,那么在一个实例中,变量信息(“danainfo:host=www.xyz.com”)可以处于指示初始变量的字符“?”或″#″之前。例如,倘若HTML数据包括以下超链接:
<a ref=https:∥www.xyz.com/quote/msft?color=red>
则将所述超链接修改成:
<a ref=https:∥secure.danastreet.com
/quote/msft:danainfo:host=www.xyz.com?color=red>。
同样,如果HTML数据包括下列相关超链接:
<a ref=a.html?x=1234>
那么将所述超链接修改成:
<a ref=a.html:danainfo:host=www.xyz.com?x=1234>。
作为另一个实例,如果HTML数据包含了下列相关超链接:
<a ref=a.html,port=1234>
则将所述超链接修改成:
<a ref=a.html:danainfo:host=www.xyz.com,port=1234>。
图11是根据本发明一个实施例的URL修改处理1100的一个流程图。举例来说,URL修改处理1100是由图9C的操作936执行的处理。并且举例来说,URL修改处理1100可以由图2A所述的内容变换器216或图2B所述的内容变换器278来执行。
URL修改处理1100是通过在响应(例如网页)的HTML部分以内选择一个目标URL而开始的1102。通常,通过扫描HTML数据,先前已经识别了一个或多个目标URL。然后,判定块1104确定是否目标URL是一个相关URL。相关URL继承了源URL的特征。所述源URL则是与包括目标URL的网页(包括由此得到的HTML)相关联的URL。当判定块1104确定目标URL是一个相关URL时,则将来自源URL的主机名称和/或端口后缀附加到目标URL 1106。
作为选择,当判定块1104确定目标URL不是相关URL时,判定块1108确定目标URL是否与安全请求(例如HTTPS)相关联。当判定块1108确定关于目标URL的请求是一个安全请求时,则将一个安全指示符(例如HTTPS)添加到目标URL 1110。另一方面,如果判定块1108确定目标URL不与安全请求相关联,则绕过操作1110。
在执行了操作1110之后以及紧随判定块1108之后,当目标URL不与安全请求相关联时,则在别处将具有目标URL的主机名称添加到目标URL 1112。例如,可以将具有目标URL的主机名称追加到目标URL上。然后,使用一个预定主机名称来替换具有目标URL的初始主机名称。换句话说,在这里有效改写了一开始为目标URL提供的主机名称,以便用预定的主机名称来替换初始主机名称,但是初始主机名称保留了一部分目标URL。例如,预定主机名称即为恰当的中间服务器的主机名称。
接着,判定块1116确定是否在目标URL中指定了一个端口号。当判定块1116确定在目标URL中指定了端口号时,则将一个端口号后缀添加到目标URL中1118。此外还删除了跟随在主机名称之后的目标URL中一开始指定的端口号1120。
在进行了操作1120之后,URL修改处理1100将会执行一个判定1122。另外,当判定块1116确定没有在目标URL中指定端口号时,则不会有需要进行处理的端口号,由此执行了判定1122。判定块1122确定是否还要处理更多的目标URL。如先前所指,先前已经通过扫描由此得到的HTML数据而识别了这些目标URL。当判定块1122确定存在更多目标URL时,URL修改处理1100将会返回到重复进行操作1102以及后续操作,由此可以对附加的目标URL进行处理。作为选择,当判定块1122确定不再有目标URL时,URL修改处理1100完成并且结束。
图12是根据本发明一个实施例的脚本修改处理1200的流程图。举例来说,所述脚本修改处理1200是由图9C中描述的操作938执行的。通常,脚本修改处理1200通过执行操作来修改由此得到的HTML内部的脚本部分。
一开始,脚本修改处理1200对(例如由此得到的HTML的)HTML数据进行扫描,以便寻找一个<script>标签。然后,判定块1204确定是否发现一个脚本。当判定块1204确定没有发现脚本时,判定块1206确定是否还要扫描更多的HTML数据。当判定块1206确定还要扫描更多HTML数据时,脚本修改处理1200返回到重复执行操作1202以及后续操作。作为选择,当判定块1206确定不再有HTML数据要进行扫描的时候,脚本修改处理1200完成并结束。
另一方面,当判定块1204确定发现了一个脚本时,则对所述脚本进行搜索1208,以便定位一个其后跟随了主机名称的文本串“http:∥”或“https:∥”。然后,判定块1210通过搜索1208这个脚本来确定是否发现了URL主机名称。当判定块1210确定没有发现URL主机名称时,判定块1212确定是否到达脚本末端。当判定块1212确定尚未到达脚本末端时,脚本修改处理1200将会返回到重复进行操作1208以及后续操作。作为选择,当判定块1212确定到达了脚本末端时,所述脚本修改处理1200将会返回到重复执行操作1202以及后续操作,从而发现并处理附加脚本。
另一方面,当判定块1210确定发现了URL主机名称的时候,则产生一个经过改写的主机名称1214。然后则使用改写的主机名称来替换所述脚本内部提供的主机名称1216。在执行了操作1216之后,脚本修改处理1200将会返回到重复执行操作1208以及后续操作,由此以相同的方式来对脚本内部的附加主机名称进行处理。
图13A和13B是根据本发明另一个实施例的脚本修改处理1300的流程图。举例来说,所述脚本修改处理1300是由图9C中描述的操作938执行的。通常,脚本修改处理1300是通过执行操作来修改由此得到的HTML内部的脚本部分的。
一开始,脚本修改处理1300对(例如由此得到的HTML的)HTML数据进行扫描,以便寻找一个<script>标签。然后,判定块1302确定是否发现一个脚本。当判定块1302确定发现一个脚本时,则对所述脚本进行解析1304,以便确定或定位与所述脚本相关联的预定属性和函数。然后,判定块1306确定是否在脚本中发现了至少一个属性或函数。当判定块1306确定发现了至少一个属性或函数时,脚本修改处理1300将会继续进行,以使相对于脚本内部发现的属性或功能来对其进行修改,这样一来,即使在客户机设备与远程服务器之间插入了中间服务器,也可以像预期的那样来执行操作。
特别地,用于在脚本内部发现的每一个属性或函数的处理如下所示。判定块1308确定在脚本内部发现的选定属性或函数是否与读取cookie属性有关。当判定块1308确定所识别的属性或函数确实涉及读取cookie属性时,则使用一个get_cookie函数调用来替换所述读取cookie属性1310。作为选择,当判定块1308确定所识别的属性或函数不是读取cookie属性时以及在执行了操作1310之后,判定块1312确定所识别的属性或函数是否与写入cookie属性有关。当判定块1312确定所识别的属性或函数不与写入cookie属性有关时,则使用一个set_cookie函数调用来替换这个写入cookie属性1314。
另一方面,当判定块1312确定所识别的属性或功能不关联写入cookie属性时以及在进行了操作1314之后,判定块1316将会确定所识别的属性或函数是否涉及一种发起请求的写入属性。当判定块1316确定所识别的属性或函数涉及一种发起请求的写入属性时,则使用一个set_URL函数调用来替换这个发起(导致产生)请求的写入属性1318。作为选择,当判定块1316确定所识别的属性或功能不涉及发起请求的写入属性时,以及在执行了操作1318之后,则判定块1320将会确定所识别的属性或函数是否涉及一个返回URL的读取属性。当判定块1320确定所识别的属性或函数确实涉及一个返回URL的读取属性时,则使用一个恰当字串来替换这个返回URL的读取属性1322。
此外,在进行了判定1320之后,当所识别的属性或函数并未涉及一个返回URL的读取属性时,以及在进行了操作1322,判定块1324确定在脚本中是否发现了更多需要处理的属性或函数。当发现了附加属性或功能并且需要对其进行处理时,脚本修改处理1300返回到重复进行判定1308以及后续操作,由此能以相同方式来处理附加的属性或功能。另一方面,当判定块1324确定已经处理了那些在脚本内部发现的属性或函数时,脚本修改处理1300将会执行一个判定1326。当判定块1302确定没有发现脚本时,同样也执行判定1326。判定块1326确定是否还要扫描更多HTML数据。当判定块1326确定要扫描更多HTML数据时,所述脚本修改处理1300返回到重复执行操作1301以及后续操作。作为选择,当判定块1326确定不再扫描HTML数据时,脚本修改处理1300完成并结束。
在下文中提供了get_cookie函数、set_cookie函数、set_URL函数以及字串替换的典型实例。通过提供这些实例,有助于理解本发明的任何方面并且由此不应该将这些实例视为是对本发明的任何方面进行限制。以下实例将JavaScript用作脚本语言。
根据get_cookie函数和操作1310的第一实例如下所示。在这个实例中,所述脚本包括一个脚本指令
var c=document.cookie;
所述指令将关联于文档(页面)的cookie分配给变量c。在这里可以使用如下所示的指令来替换这个脚本指令:
var c=get_cookie(“othercookie=abc″)
其中所述指令将中间服务器上的cookie分配给文档(页面)和特定用户(例如“othercookie=abc″)的特定域。此外,get_cookie函数从中间服务器上获取cookie,以此作为其自变量并且向其添加脚本设定的cookie。
根据set_cookie函数以及操作1314的第二实例如下所示。在这个实例中,所述脚本包括了一个脚本指令:
document.cookie=″selection=ijk;expires=...″;
所述脚本指令保存了与浏览器中的文档(页面)相关联的cookie。在这里可以使用以下指令来替换这个脚本指令(语句)
document.cookie=set_cookie(″<domain>″,″selection=ijk;expires=...″;);
所述指令保存的是与浏览器中的文档(页面)相关联的cookie并且同样将其保存到中间服务器上。所述set_cookie函数包括两个自变量。第一个自变量识别的是具有脚本的页面域。第二个自变量则是初始分配给document.cookie属性的值。所述set_cookie函数组合这两个自变量并且设定一个没有截止时间并且名为servercookieX的cookie,其中X表示的是有区别的数值。游览器使这个cookie发送给中间服务器。然后,中间服务器可以将cookie引入用于用户的cookie存储器中。此外也可以使用cookie来终止用于用户的存储器中的现有cookie。一旦在中间服务器上保存了cookie,那么,由于不再需要servercookieX,因此中间服务器返回的下一个页面将会导致servercookieX终止。针对set_cookie函数的任何调用同样会添加servercookieX内部提供的任何cookie值。
为了进行更进一步的描述,设想以下实例,其中来自www.xyz.com的页面具有下列脚本:
document.cookie=″a=b″;
var x=document.cookie;
在这里同样假设www.xyz.com服务器先前向名为“id1”且值为“sam”的中间服务器返回了一个cookie。以上代码将会转换成:
document.cookie=set_cookie(″www.xyz.com″,″a=b″);
var x=get_cookie(″id1=sam″);
其中第一行会对值为“a=b~domain=www.xyz.com”的cookie“servercookie0”进行设定,因此整个cookie将会变成:
servercookie0=a=b~domain=www.xyz.com
应该注意的是,servercookie0的域部分仅仅由中间服务器使用,因此所述服务器知道设定这个cookie的是哪一个域。第二行调用了get_cookie函数,所述函数采用了其第一自变量(在改写脚本的同时由中间服务器填充)并且在浏览器上检查所有servercookie0的cookie。它将第一自变量连同其他servercookieX级连在了一起,并且返回如下结果:
id1=sam;a=b
应该注意的是,这个结果与没有改写初始页面时返回的结果是相同的。
根据set_URL和操作1318的第三实例如下所示。Set_URL函数通过进行操作来修改那些导致产生请求的属性。在这个实例中,脚本包含了一个脚本指令:
document.location=“http:www.xyz.com/foo.html”;
所述指令将浏览器引导到一个新的页面。这个脚本指令可以由以下指令替换。
document.location=set_URL(“”,”http:∥www,xyz.com/foo.html”);
set_URL函数调用采取了两个自变量。第一自变量是在改写脚本的同时由中间服务器填充的,其中包含了通常在后缀(例如“danainfo:”)中提供来跟随在一个URL之后的任何参数。如下文将要说明的那样,在这里并非始终都需要所述第一自变量。第二自变量是URL,但是它实际上可以是一个聚合或返回URL的脚本表述(例如函数调用)。
所述set_URL函数检查正在设定的URL并且将其改写成具有将浏览器引导到中间服务器的形式。如上所述,可以使用多种技术来实现针对URL的修改。
如果页面正在使用主机名称修改技术,那么,由于主机名称对必要信息进行了编码,因此没有必要对相关的URL进行修改。如果所述URL是一个完整的URL,那么set_URL函数具有转换URL所需要的全部信息。举例来说,在这里可以向URL追加一个后缀(例如“:danaInfo:host=xxx”)。因此,如果出现了脚本的页面正在使用主机名称修改技术,则set_URL函数不需要第一自变量。
作为选择,如果脚本所在的页面正在使用URL后缀技术,则传递到set_URL函数的相关URL需要将同一后缀应用于所述函数。在这种情况下,作为set_URL函数的第一自变量,中间服务器将会插入任何需要在后缀中传递的自变量。举例来说,如果页面的URL是:
https:∥secure.danastreet.com/quote/msft:danaInfo:host=www.xyz.com
并且页面上的脚本指令包括:
document.location=“/quote/ibm”;
那么改写的脚本指令像是:
document.location=set_URL(“Host=www.xyz.com”,“/quote/ibm”);
从set_URL函数返后的结果是:
/quote/ibm:danaInfo:host=www.xyz.com
而这将会产生一个来自浏览器的请求,以便请求:
https:∥secure.danastreet.com/quote/ibm:danaInfo:host=www.xyz.com
作为选择,如果插入脚本指令:
document.location=“https:∥www.abc.com/info/msft”;
则改写的脚本指令是:
document.location=set_URL(“Host=www.xyz.com”,“http:∥eee.abc.com/info/msft”);
并且从set_URL函数返回的结果是:
https:∥secure.danastreet.com/info/msft:danalnfo:host=www.abc.com
应该注意的是,在这种情况下,由于第二自变量是一个完整的URL并且包含了构造最终URL所必需的所有信息,因此不需要set_URL函数的第一自变量。
应该指出的是目前存在多种函数或属性,当被写入时,所述函数和属性会使浏览器获取一个URL,某些实例包括:
window.open(‘url’,...)
form.action=‘url’;
document.location=‘url’;
document.location.replace(‘url’);
image.src=‘url’;
相对于字串替换和操作1322的第四实例如下所示。字串替换通过进行操作来修改那些返回URL的属性。在这里,从一个返回URL的属性中读取的脚本指令是用一个恒定字串来替换的。在这个实例中,如果脚本包括
var url=document.location;
那么它将被替换成:
var url=“http:∥www.yahoo.com/foo.html”;
这个操作用于确保不会因为页面的实际URL不同于预期URL这一事实而使得任何检查其环境的脚本发生混乱。应该注意的是,在这里有可能存在一种以上的属性需要进行修改。可以进行这种修改的属性的某些实例包括:
document.location(返回完整的URL)
document.domain(只返回URL的主机名称部分)
图14是根据本发明一个实施例的电子邮件请求处理1400的流程图。举例来说,所述电子邮件请求处理1400适合用作在图6的块628上执行的电子邮件请求处理。
一开始,电子邮件请求处理1400接受一个与邮件客户机相连的安全连接1402。举例来说,在这里可以通过使用一个安全套接字层(SSL)来保证所接受1402的邮件客户机与中间服务器之间的安全连接的安全性。接下来则提示请求者进行验证1404。通常,在这里提示请求者输入至少一个可用于验证请求者的口令1404。然后,判定块1406确定是否接收到一个口令。通常而非必要的是,在这里以某种方式来对正在接收的口令进行编码。举例来说,在这里经常使用的是基-64编码。当判定块1406确定接收到口令时,则可以将口令分成邮件服务器口令和验证服务器口令1408。作为一个实例,接收到的口令可以同时包括由口令分隔符分离的邮件服务器口令以及验证服务器口令。
接下来,所述邮件服务器尝试对所述邮件服务器口令进行核实1410。大约在同一时间,可以使用验证服务器来核实所述验证服务器口令1412。接着,判定块1414确定块1410和1412的验证是否都取得了成功。当判定块1414确定这两个验证都已成功的时候,则保存所述口令的一个散列版本1416。然后则执行与电子邮件请求相关联的邮件操作处理1418。另一方面,当判定块1414确定块1410和1412的验证没有全部成功的时候,所述电子邮件请求将被拒绝1420。在执行了操作1418和1420之后,电子邮件请求处理1400完成并结束。
图15是根据本发明一个实施例的邮件操作处理1500的流程图。举例来说,所述邮件操作处理1500是由图14所示的块1418所执行的处理的一个实例。
邮件操作处理1500始于判定块1502,其中确定连接是否超时或者是否关闭了所述连接。在这里,这个连接指的是邮件客户机与中间服务器之间的安全连接。当判定块1502确定安全连接超时或关闭的时候,针对邮件服务器所进行的电子邮件访问将被拒绝1504。因此,在执行了块1504之后,邮件操作处理完成并且在安全连接超时或关闭的时候结束。然而,所述处理可以继续进行,以便向请求者返回一个登录页面,从而迫使请求者进行登录操作并进行验证,以便能够访问所述邮件服务器。
另一方面,当判定块1502确定一个现有连接没有超时或关闭时,判定块1506确定是否接收到一个来自邮件客户机的命令。当判定块1506确定没有接收到来自邮件客户机的命令时,邮件操作处理1500返回到重复执行判定1502以及后续操作的状态,直到接收了来自邮件客户机的命令或者直到所述连接超时或以其他方式关闭为止。
一旦判定块1506确定接收了来自邮件客户机的命令,则将所述命令转发到邮件服务器1508。接着,判定块1510确定是否接收了一个来自邮件服务器的响应。当判定块1510确定尚未接收到来自邮件服务器的响应时,邮件操作处理1500将会等待这个响应。一旦判定块1510确定接收到一个响应,则对响应内部的某些统一资源定位符(URL)进行修改1512。例如,作为内容转换的一部分,可以对链接或URL进行修改,从而通过中间服务器来重定向所述链接或URL。接着将所述响应发送到邮件客户机1514。在这里,所述响应是使用邮件客户机与中间服务器之间的连接发送到邮件客户机的。在执行了块1514之后,邮件操作处理1500返回到重复进行判定1502以及后续操作的状态,由此可以相对于邮件服务器来处理附加命令。
图16是根据本发明一个实施例的验证处理1600的流程图。验证处理1600代表了图14中描述的块1412的一个实施例。在这个实施例中,当满足某些条件时,中间服务器可以使用验证服务器来绕过或免除口令的实际验证。这样一来,在很多情况下可以快速进行验证,但却不需要加重请求者的负担或是打扰请求者。
验证处理1600始于判定块1602,其中确定了是否可以得到一个经过保存的散列口令。在先前保存散列口令(图14中的操作1416)的时候,稍后可以对所述散列口令进行检索并且将其用在这个方面。因此,在判定块1602确定可以得到保存的散列口令的时候,将会对所保存的口令进行检索1604,其中所保存的口令即为最后一次许可的口令以及最后一次使用的口令。通常,这个值保存在与中间服务器相关联的数据存储器中,并且这些值是请求者特有的存储值。
接着,判定块1606确定接收到的口令散列是否与所保存的散列口令相同。事实上,当判定块1606确定接收到的口令散列与保存的散列口令相同的时候,由于在会话的较早时候输入了经过验证的正确口令,因此请求者通过了验证。此外,判定块1610还确定从上次得到许可以来的时间是否大于一个最大会话时间。在这里,表明从上次得到许可以来的持续时间已经终止的持续时间将会与最大会话持续时间相比较。通常,最大会话持续时间是由请求者或中间服务器的系统管理员设定的。
无论发生那种情况,当判定块1610确定从上次得到许可以来的时间并未超出最大会话持续时间时,判定块1612确定从上次使用口令以来的时间是否超出了一个最大空闲时间。在这里,将表明从上次使用口令以来的持续时间已经期满的变量与最大空闲时间进行比较。当判定块1612确定从最后一次使用口令以来的时间没有超出最大空闲时间的时候,则在不必与验证服务器进行交互的情况下将验证服务器执行的验证视为是成功的1614。因此,当接收到的口令散列与所保存的散列口令相同的时候,如果从上次许可以来的时间没有超出最大会话持续时间并且从上次使用口令以来的时间没有超出最大空闲时间,则可以绕过相对于验证服务器所进行的验证。
另一方面,在没有这些特定条件时,所述口令是使用验证服务器来核实的1608。例如,当判定块1602确定不能得到所保存的散列口令时,所述核实1608是使用验证服务器实施的。同样,当判定块1606确定接收到的口令散列与所保存的散列口令不等时,所述口令的核实1608是使用验证服务器来进行的。此外,当判定块1610确定从上次许可以来的时间超出了最大会话时间或是判定块1612确定从上次使用口令以来的时间超出了最大空闲时间时,则需要使用验证服务器来对口令进行核实1608。
在执行了操作1608和1614之后,验证处理1600返回到执行其他处理的状态,也就是返回到图14所示的操作1414。因此,在由于存在上述特殊条件而能够绕过核实1608的时候,可以极大地简化验证处理并且通常避免了相对于验证服务器所执行的复杂验证处理的需要,也可以免除提示请求者输入验证信息的需要。
图17A和17B描述的是可以依照本发明使用的计算机系统的一个实例。举例来说,所述计算机系统可以对应于客户机设备、中间服务器或是远程或专用服务器中的任何一种设备。图17A显示了一个计算机系统1721,其中包括显示器1723、屏幕1725、机箱1727、键盘1729以及鼠标1731。鼠标1731可以具有一个或多个按钮,以便与图形用户界面进行交互。机箱1727收容了可移动介质(例如CD-ROM)驱动器1733、系统存储器以及硬盘(参见图17B),这些装置可用于保存和检索那些结合了实施本发明的计算机代码的软件程序以及供本发明使用的数据等等。尽管在这里将CD-ROM 1735显示为示范性的计算机可读存储介质,但是也可以使用其他计算机可读存储介质,其中包括软盘、磁带、DVD、闪存、系统存储器以及硬盘。此外,具体在载波中(例如在一个包含因特网的网络中)包含的数据信号可以是计算机可读存储介质。在一种实施方式中,在系统存储器、硬盘驱动器、CD-ROM 1735或其他计算机可读存储介质中提供了一个用于计算机系统1721的操作系统,并且所述操作系统用于引入实施本发明的计算机代码。
图17B显示的是用于执行本发明一个实施例的处理的计算机系统1721的系统框图。与图17A中一样,计算机系统1721包括监视器1723、键盘1729和鼠标1731。此外,计算机系统1721还包括子系统,例如中央处理器1751、系统存储器1753、固定存储器1755(例如硬盘)、可移除存储器1757(例如光盘)、显示适配器1759、声卡1761、扬声器1763以及网络接口1765。举例来说,中央处理器1751可以通过执行计算机程序代码(例如操作系统)来实施本发明。通常而非必要的是,在执行过程中,操作系统驻留在系统存储器1753中。其他适合与本发明一起使用的计算机系统可以包括附加或少数子系统。举例来说,其他计算机系统可以包括一个以上的处理器1751(也就是多处理器系统)或是一个缓冲存储器。
计算机系统1721的系统总线架构由箭头1767表示。然而,这些箭头描述的是用于链接子系统的任何互连方案。举例来说,在这里可以使用本地总线将中央处理器连接到系统存储器以及显示适配器。图17A所示的计算机系统1721只是一个适合与本发明结合使用的计算机系统的实例。而在这里也可以使用具有不同子系统结构的其他计算机架构。
尽管上述实施例涉及的是使用信息检索系统内部的一个单独的中间服务器,但是应该认识到,所述信息检索系统也可以包括多个中间服务器。不同的中间服务器各自接收来自客户机设备的请求并将这些请求转发到恰当的服务器,以及将响应经由中间服务器返回给客户机设备。借助于多个服务器,不但可以实现附加处理,而且还可以解决负载均衡、故障容忍度以及本地化的问题。
如上所述的本发明的不同方面、特征、实施例或实施方式既可以单独使用,也可以通过多种组合来加以使用。
本发明最好以软件方式实施,但是也可以采用硬件方式或以软件与硬件相结合的方式来实施。本发明还可以作为计算机可读代码保存在计算机可读介质上。所述计算机可读介质可以是任何一种能够保存数据的数据存储设备,此后可以由一个计算机系统来读取所述数据。计算机可读介质的实例包括只读存储器、随机存取存储器、CD-ROM、DVD、磁带、光数据存储设备以及载波。此外还可以将计算机可读介质分布到与网络耦合的计算机系统中,从而以一种分布方式来保存和执行计算机可读代码。
本发明的优点很多。不同的实施例或实施方式可以产生以下的一个或多个优点。本发明的一个优点是可以通过在远程服务器与客户机之间插入一个中间服务器来简化安全访问。本发明的另一个优点是通过改变客户机请求的内容而将后续的客户机请求引导到一个中间服务器,所述服务器转而为所述客户机获取所请求的内容。此外,本发明的另一个优点是中间服务器可以使用专用网络提供的本地验证来对试图访问专有网络上的资源的请求者进行验证。本发明的另一个优点是易于以合理的费用来为得到许可的人员提供针对专用网络的安全远程访问。本发明的另一个优点是在远程服务器与客户机之间插入了一个中间服务器,由此可以简化针对电子邮件资源所进行的安全访问。本发明的另一个优点是可以使用专用网络提供的本地验证来对试图访问专用网络的请求者进行验证。而本发明的另一个优点则是易于以合理费用来为得到许可的人员提供专用网络的安全远程访问。
从撰写的说明书中可以明显看出本发明的众多特征和优点,因此在这里意图通过附加权利要求来覆盖本发明的所有这些特征和优点。此外,由于本领域技术人员很容易想到多种修改和变化,因此在这里不希望将本发明局限于所描述和说明的确切结构。因此,在这里可以采取落入本发明范围以内的所有那些适当的修改和等价物。