首页 / 专利库 / 银行与财务事项 / 票据交换所 / 使用代理安全访问资源

使用代理安全访问资源

阅读:238发布:2020-05-13

专利汇可以提供使用代理安全访问资源专利检索,专利查询,专利分析的服务。并且提供了一种认证和 访问 资源的方法。客户端设备可以将 请求 发送到代理设备以访问例如企业资源的资源。代理设备可以对与资源相关的一个或多个 服务器 进行认证。在认证期间,代理设备可以接收对由客户端设备控制的签名的请求。作为响应,代理设备可以向客户端设备发送对所述签名的请求。请求还可以包括识别在认证会话期间交换(将被交换的)的认证信息的数据结构的环境信息。如果客户端设备验证了环境信息,则客户端设备可以发送请求的签名。,下面是使用代理安全访问资源专利的具体信息内容。

1.一种认证方法,包括:
在代理设备和资源管理设备之间在对所述代理设备与所述资源管理设备进行认证的认证会话期间,由所述代理设备产生请客户端设备提供签名的请求,其中,请所述客户端设备提供签名的所述请求包括环境信息,并且其中所述环境信息识别以下项中的至少一项:
(1)在所述认证会话期间在所述代理设备和所述资源管理设备之间先前交换的认证信息以及(2)将在所述认证会话期间由所述代理设备发送到所述资源管理设备的认证信息;
在所述代理设备处从所述客户端设备接收所述签名;以及
将所述签名从所述代理设备发送到所述资源管理设备。
2.根据权利要求1所述的方法,还包括:
在所述代理设备处从所述客户端设备接收能够用于所述客户端设备的安全证书的列表;以及
选择用于所述认证会话的安全证书,
其中请所述客户端设备提供所述签名的所述请求包括选择的安全证书的标识。
3.根据权利要求1所述的方法,还包括:
在将所述签名发送到所述资源管理设备之后,在所述代理设备处接收对应于所述签名的会话密钥。
4.根据权利要求3所述的方法,还包括:
由所述代理设备使用所述会话密钥以从所述资源管理设备获得请求的资源。
5.根据权利要求4所述的方法,还包括:
将所述请求的资源从所述代理设备发送到所述客户端设备。
6.根据权利要求1所述的方法,其中所述认证会话包括SSL认证,并且其中所述环境信息包括在所述认证会话期间在所述代理设备和所述资源管理设备之间先前交换的SSL认证消息。
7.根据权利要求1所述的方法,其中所述认证会话包括Kerberos认证,并且其中所述环境信息包括识别Kerberos数据结构的信息。
8.根据权利要求7所述的方法,其中所述Kerberos数据结构包括抽象语法标记1。
9.根据权利要求1所述的方法,其中所述认证会话包括Kerberos认证,并且其中所述环境信息包括以下项中的至少一项:用于所述Kerberos认证的Kerberos域、与所述客户端设备相关的Kerberos主体名称、用于所述认证会话的密钥分配中心的标识符、请求的票据的有效期和已经在所述认证会话期间设置的Kerberos标记。
10.根据权利要求1所述的方法,其中所述环境信息识别与所述认证会话相关的时间戳。
11.根据权利要求1所述的方法,其中所述环境信息识别所述认证会话的协议类型。
12.根据权利要求1所述的方法,其中所述签名是从在所述客户端设备处的智能卡提供的。
13.一种代理设备,包括:
处理器;以及
存储器,其存储有当被所述处理器执行时引起所述代理设备执行以下动作的计算机可执行指令:
在所述代理设备和资源管理设备之间在对所述代理设备与所述资源管理设备进行认证的认证会话期间,生成请客户端设备提供签名的请求,其中请所述客户端设备提供签名的所述请求包括环境信息,并且其中所述环境信息识别以下项中的至少一项:(1)在所述认证会话期间在所述代理设备和所述资源管理设备之间先前交换的认证信息以及(2)将在所述认证会话期间由所述代理设备发送到所述资源管理设备的认证信息;
从所述客户端设备接收所述签名;以及
将所述签名发送到所述资源管理设备。
14.根据权利要求13所述的代理设备,其中所述存储器存储有当被所述处理器执行时引起所述代理设备执行以下动作的计算机可执行指令:
在将所述签名发送到所述资源管理设备之后,接收对应于所述签名的会话密钥。
15.根据权利要求14所述的代理设备,其中所述存储器存储有当被所述处理器执行时引起所述代理设备执行以下动作的计算机可执行指令:
使用所述会话密钥以从所述资源管理设备获得请求的资源。
16.根据权利要求13所述的代理设备,其中所述认证会话包括SSL认证,并且其中所述环境信息包括在所述认证会话期间在所述代理设备和所述资源管理设备之间先前交换的SSL认证消息。
17.根据权利要求13所述的代理设备,其中所述认证会话包括Kerberos认证,并且其中所述环境信息包括识别Kerberos数据结构的信息。
18.一种认证方法,包括:
在客户端设备处从代理设备接收请所述客户端设备提供签名的请求,其中请所述客户端设备提供所述签名的所述请求包括环境信息,并且其中所述环境信息识别以下项中的至少一项:(1)在所述代理设备与资源管理设备之间在对所述代理设备与所述资源管理设备进行认证的认证会话期间在所述代理设备和与请求的资源相关的资源管理设备之间先前交换的认证信息以及(2)将在所述认证会话期间由所述代理设备发送到所述资源管理设备的认证信息;
由所述客户端设备验证以下项中的至少一项:(1)在所述代理设备与所述资源管理设备之间在对所述代理设备与所述资源管理设备进行认证的认证会话期间在所述代理设备和与所述请求的资源相关的资源管理设备之间先前交换的认证信息以及(2)将在所述认证会话期间由所述代理设备发送到所述资源管理设备的认证信息;以及
响应于所述验证,将对应于安全证书的签名从所述客户端设备发送到所述代理设备。
19.根据权利要求18所述的方法,其中所述安全证书被存储在连接到所述客户端设备的智能卡上。
20.根据权利要求18所述的方法,还包括:
响应于请求,将包括能够用于所述客户端设备的一个或多个安全证书的列表从所述客户端设备发送到所述代理设备,
其中接收到的请所述客户端设备提供所述签名的所述请求包括从包括一个或多个安全证书的所述列表选择的安全证书的标识。

说明书全文

使用代理安全访问资源

[0001] 相关案例的交叉引用
[0002] 本申请要求于2013年5月3日提交的申请号为13/886,845的美国申请的优先权。
[0003] 领域
[0004] 本文描述的方面总体上涉及提供客户端设备使用代理设备来安全访问资源的方法。
[0005] 背景
[0006] 传统上,连接到公共网络的客户端设备使用虚拟专用网络(VPN)连接到专用网络。在VPN中,简单充当透明管道的代理设备可以在客户端设备和专用网络之间提供必要的连接。常规VPN存在各种问题。首先,很多信任置于客户端设备上,因为客户端设备可以直接访问专用网络上的资源。第二,必须针对资源和/或专用网络的通信协议来配置客户端设备。
第三,代理设备不能控制或监控客户端设备的活动。
[0007] 概述
[0008] 以下的内容呈现了本文描述的各个方面的简化概述。该概述并非广泛的综述,并且并非旨在确定关键或重要元素或描绘权利要求的范围。以下的概述仅仅以简化形式呈现一些概念作为对以下提供的更详细的描述的介绍性的前奏。
[0009] 为了克服以上描述的现有技术中的限制并且克服当阅读和理解本说明书时将明显的其它限制,本文描述的方面针对被配置为执行一种方法的系统、装置和/或计算机可读介质,所述方法包括:在代理设备处从客户端设备接收对资源的请求,将对资源的请求从代理设备发送到资源管理设备。代理设备和资源管理设备之间的认证会话可以被发起。代理设备可以产生请客户端设备提供签名的请求,其中请客户端设备提供签名的请求可以包括识别以下项中的至少一项的数据结构的环境信息:(1)在代理设备和资源管理设备之间先前交换的认证信息和(2)将由代理设备发送到资源管理设备的认证信息。代理设备可以接收来自客户端设备的签名(例如,如果客户端设备已经验证了环境信息)。签名可以被从在客户端设备的智能卡提供。代理设备可以将签名发送到资源管理设备。
[0010] 在一些实施例中,方法还可以包括在发起认证会话之后,在代理设备处从客户端设备接收可用于客户端设备的安全证书的列表。认证会话的安全证书可以被选择。此外,请客户端设备提供签名的请求可以包括选择的安全证书的标识。
[0011] 方法还可以包括在发送签名到资源管理设备之后,在代理设备接收对应于签名的会话密钥。代理设备可以使用会话密钥以从资源管理设备获得请求的资源。代理设备可以将请求的资源发送到客户端设备。
[0012] 在一些方面,认证会话可以包括SSL认证,并且识别数据结构的环境信息可以包括在认证会话期间在代理设备和资源管理设备之间先前交换的SSL认证消息。在其它方面,认证会话可以包括Kerberos认证,并且识别数据结构的环境信息可以包括识别Kerberos数据结构的信息。例如,Kerberos数据结构可以包括抽象语法符号1。附加地或可选地,识别数据结构的环境信息可以包括以下项中的至少一个:用于Kerberos认证的Kerberos域、与客户端设备相关的Kerberos主要名称、用于认证会话的密钥分配中心的标识符、请求的标签的有效周期和已经在认证会话期间设置的Kerberos标记。
[0013] 在一些实施例中,环境信息可以识别与认证会话相关的时间戳。附加地或可选地,环境信息可以识别认证会话的协议类型。在一些方面,代理设备包括处理器和存储计算机可执行指令的存储器,当计算机可执行指令被处理器执行时可以引起代理设备执行先前描述的方法步骤。
[0014] 系统、装置和/或计算机可读介质可以被配置为执行包括将对资源的请求从客户端设备发送到代理设备的方法。客户端设备可以从代理设备接收请客户端设备提供签名的请求。请客户端设备提供签名的请求可以包括识别以下项中的至少一项的数据结构的环境信息:(1)在代理设备和与所请求的资源相关的资源管理设备之间先前交换的认证信息和(2)将由代理设备发送到资源管理设备的认证信息。客户端设备可以验证数据结构,并且响应于验证数据结构,客户端设备可以将对应于安全证书的签名发送到代理设备。安全证书可以被存储在连接到客户端设备的智能卡上。方法还可以包括响应于请求,将包括可用于客户端设备一个或多个安全证书的列表从客户端设备发送到代理设备。被接收的请客户端设备提供签名的请求可以包括从包括一个或多个安全证书的列表选择的安全证书的标识。
[0015] 得益于在下文进一步详细论述的本公开,这些和附加的方面将被理解。
[0016] 附图简述
[0017] 通过参考考虑到附图的以下描述可以获得本文描述的方面及其优点的更完整的理解,其中相似的参考数字指示相似的特征,并且在附图中:
[0018] 图1示出了可以根据本文描述的一个或多个说明性方面使用的说明性计算机系统架构。
[0019] 图2示出了可以根据本文描述的一个或多个说明性方面使用的说明性远程访问系统架构。
[0020] 图3示出了可以根据本文描述的一个或多个说明性方面使用的说明性虚拟化(超级管理器)系统架构。
[0021] 图4示出了可以根据本文描述的一个或多个说明性方面使用的说明性基于的系统架构。
[0022] 图5示出了说明性企业移动管理系统。
[0023] 图6示出了另一个说明性企业移动管理系统。
[0024] 图7示出了具有客户端、代理、资源和/或认证服务的说明性系统。
[0025] 图8示出了客户端和代理的说明性详细视图。
[0026] 图9A是用于使用代理对资源进行认证和/或提供对资源的安全的访问的示例方法步骤的流程图
[0027] 图9B是用于使用代理对资源进行认证和/或提供对资源安全的访问的附加的示例方法步骤的流程图。
[0028] 图9C是用于使用代理对资源进行认证和/或提供对资源安全的访问的又一附加的示例方法步骤的流程图。
[0029] 详细描述
[0030] 在各个实施例的以下描述中参考了以上确认的附图,并且其形成本文的一部分,并且其中通过说明的方式示出了各个实施例,其中本文描述的各方面可以被实践。应当理解的是,其它实施例可以被利用,并且结构性的和功能性的修改可以被做出,而不偏离本文描述的范围。各个方面能够其它的实施例并且能够被以各种不同的方式来实践或实施。
[0031] 作为对下文更加详细描述的主题的一般介绍,本文描述的各方面针对在移动计算设备处使用托管移动应用控制对在企业计算系统的资源的远程访问。访问管理器可以执行确认请求对企业资源的访问的移动应用自身是否被准确地确认以及在安装在移动计算设备之后是否没有被随后改变的验证过程。以这种方式,访问管理器可以确保请求对企业资源访问的移动应用可以被信任以及不试图规避用于保护那些企业资源的安全机制。因此,与企业相关的个体可以有利地在他们的个人移动设备利用企业资源。
[0032] 应当理解的是,本文使用的措辞和术语是为了描述的目的,并且不应当被视为限制性的。相反,本文使用的短语和术语将被给出它们最广义的解释和含义。“包括(including)”和“包含(comprising)”及其变化的使用旨在包含其后列出的项以及其等价物以及其附加的项和等价物。术语“安装的(mounted)”、“连接的(connected)”、“耦合的(coupled)”、“定位的(positioned)”、“接合的(engaged)”以及类似术语的使用旨在包括直接和间接安装、连接、耦合、定位和接合两者。
[0033] 计算架构
[0034] 计算机软件硬件和网络可以被在各种不同的系统环境中使用,其中各种不同的系统环境除了别的之外包括独立的、联网的、远程访问(又叫做远程桌面)、虚拟化的和/或基于云的环境。图1示出了可以用于在独立的和/或联网的环境中实现本文描述的一个或多个说明性方面的系统架构和数据处理设备的一个示例。各个网络节点103、105、107和109可以经由广域网(WAN)101(例如互联网)来互连。其它网络也可以或可选地被使用,包括私人企业内部网、公司网络、LAN、城域网(MAN)无线网络、个人网络(PAN)等等。网络101是为了说明的目的并且可以用较少的或附加的计算机网络来代替。局域网(LAN)可以具有任何已知的LAN拓扑结构中的一个或多个以及可以使用各种不同的协议中的一个或多个(例如以太网)。设备103、105、107、109和其它设备(未示出)可以经由双绞线、同轴电缆、光纤、无线电波或其它通信介质连接到网络中的一个或多个。
[0035] 如在本文使用和在附图中描绘的术语“网络”不仅指的是其中远程存储设备经由一个或多个通信路径被耦合在一起的系统,而且指的是可以不时耦合到具有存储能的这样的系统的独立的设备。因此,术语“网络”不仅包括“物理网络”,而且包括“内容网络”,其由归因于驻留在全部物理网络的单个实体的数据组成。
[0036] 组件可以包括数据服务器103、web服务器105和客户端计算机107、109。数据服务器103提供数据库的总访问、控制和管理以及用于执行本文描述的一个或多个说明性方面的控制软件。数据服务器103可以连接到web服务器105,用户通过网页服务器105根据要求进行交互和获得数据。可选地,数据服务器103可以用作web服务器本身并且可以直接连接到互联网。数据服务器103可以通过网络101(例如互联网)经由直接或间接连接或经由一些其它网络连接到web服务器105。用户可以使用远程计算机107、109(例如使用网页浏览器)与数据服务器103交互以经由由web服务器105托管的一个或多个暴露在外的网站连接到数据服务器103。客户端计算机107、109可以与数据服务器103一致使用以访问其中存储的数据或可以用于其它目的。例如,从客户端设备107用户可以使用互联网浏览器(如本领域已知的)或通过执行通过计算机网络(例如互联网)与web服务器105和/或访问数据服务器103进行通信的软件应用来访问web服务器105。
[0037] 服务器和应用可以被组合在相同的物理机器上并且保持独立的虚拟或逻辑地址,或可以驻留在独立的物理机器上。图1仅仅示出了可以使用的网络架构的一个示例,并且本领域的技术人员将理解的是,所使用的特定的网络架构和数据处理设备可以变化,并且对于它们提供的功能是次要的(如本文进一步描述的)。例如,由web服务器105和数据服务器103提供的服务可以组合在单个服务器上。
[0038] 每个组件103、105、107、109可以是任何类型的已知的计算机、服务器或数据处理设备。数据服务器103例如可以包括控制速率服务器103的总操作的处理器111。数据服务器103还可以包括RAM 113、ROM 115、网络接口117、输入/输出接口119(例如,键盘鼠标、显示器、打印机等)以及存储器121。I/O 119可以包括用于读取、写入、显示和/或打印数据或文件的各种接口单元和设备。存储器121还可以存储用于控制数据处理设备103的总操作的操作系统软件123、用于指令数据服务器103以执行本文描述的方面的控制逻辑125和提供次要的支持和/或其它功能的其它应用软件127(其可以或不可以结合本文描述的方面来使用)。控制逻辑在本文还可以被称为数据服务器软件125。数据服务器软件的功能可以指的是基于编码成控制逻辑的规则自动进行的、由用户将输入提供到系统中手动进行的操作和决定和/或基于用户输入(例如查询、数据更新等)的自动处理的组合。
[0039] 存储器121还可以存储在执行本文描述的一个或多个方面时使用的数据(包括第一数据库129和第二数据库131)。在一些实施例中,第一数据库可以包括第二数据库(例如,作为单独的表格、报告等)。也就是说,根据系统设计,信息可以被存储在单个数据库中,或分离成不同的逻辑、虚拟、或物理数据库。设备105、107、109可以具有与关于设备103描述的架构类似的或不同的架构。本领域技术人员将理解的是,如本文描述的数据处理设备103(或设备105、107、109)的功能可以跨越多个数据处理设备而分布(例如以跨越多个计算机分配处理负荷)以基于地理位置、用户访问级别、服务质量(QoS)等来将事务分开。
[0040] 一个或多个方面可以以计算机可用或可读的数据和/或计算机可执行的指令(例如,在由如本文描述的一个或多个计算机或其它设备执行的一个或多个程序模中)来体现。通常,程序模块包括当由计算机或其它设备中的处理器执行时执行特定的任务或实现特定的抽象数据类型的例程、程序、对象、组件、数据结构等。模块以以随后被编译用于执行的源代码编程语言来写入或可以以例如(但不限于)HTML或XML的脚本语言来写入。计算机可执行指令可以被存储在计算机可读介质(例如非易失性存储介质)上。任何合适的计算机可读存储介质可以被利用,其包括硬盘、CD-ROM、光存储设备、磁存储设备和/或其任何组合。此外,表示如本文描述的数据或事件的各种传输(非存储)介质可以以经过信号传导介质(例如,金属线、光纤)和/或无线传输介质(例如,空气和/或空间)的电磁波的形式在源和目的地之间传递。本文描述的各个方面可以体现为方法、数据处理系统计算机程序产品。因此,各个功能可以全部或部分以软件、固件和/或硬件或硬件等价物(例如,集成电路、现场可编程阵列(FPGA)等等)来体现。特定数据结构可以用于更有效地实现本文描述的一个或多个方面,并且这样的数据结构被预期在本文描述的计算机可执行指令和计算机可用数据的范围之内。
[0041] 进一步参考图2,本文描述的一个或多个方面可以在远程访问环境中实现。图2示出了包括在说明性计算环境200中的通用计算设备201的示例系统架构,其可以根据本文描述的一个或多个说明性方面来使用。通用计算设备201可以用作被配置为提供客户端访问设备的虚拟机的单服务器或多服务器桌面虚拟化系统(例如远程访问或云系统)中的服务器206a。通用计算设备201可以具有用于控制服务器的总操作的处理器203及其相关组件(包括随机访问存储器(RAM)205、只读存储器(ROM)207、输入/输出(I/O)模块209和存储器215)。
[0042] I/O模块209可以包括鼠标、键盘、触摸屏扫描仪、光学阅读器和/或触针(或其它输入设备),通用计算设备201的用户通过其可以提供输入,并且还可以包括用于提供音频输出的扬声器和用于提供文本、视听和/或图形输出的视频显示设备中的一个或多个。软件可以被存储在存储器215和/或其它储存器内以向处理器203提供用于将通用计算设备201配置成专用计算设备以便执行如本文描述的各种功能的指令。例如,存储器215可以存储由计算设备201使用的软件(例如,操作系统217、应用程序219和相关的数据库221)。
[0043] 计算设备201可以在支持到例如终端240(也被称为客户端设备)的一个或多个远程计算机的连接的联网的环境中操作。终端240可以是个人计算机、移动设备、膝上型计算机、平板电脑、或包括以上关于通用计算设备103或201描述的很多或所有元件的服务器。在图2中示出的网络连接包括局域网(LAN)225和广域网(WAN)229,但是还可以包括其他网络。当在LAN联网环境中使用时,计算设备201可以通过网络接口或适配器223连接到LAN 225。
当在WAN联网环境中使用时,计算设备201可以包括调制解调器227或用于通过例如计算机网络230(例如互联网)的WAN 229建立通信的其它广域网络接口。将理解的是,所示出的网络连接是说明性的,并且可以使用在计算机之间建立通信链路的其它装置。计算设备201和/或终端240还可以是移动终端(例如,移动电话、智能电话、PDA、笔记本电脑等等),其包括各种其它组件(例如,电池、扬声器和天线(未示出))。
[0044] 本文描述的方面还可以利用众多其它通用或专用计算系统环境或配置来操作。可以适于与本文描述的方面一起使用的其它计算系统、环境和/或配置的示例包括但不限于个人计算机、服务器计算机、手持设备或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络PC、小型计算机、大型计算机、包括以上系统或设备中的任一个的分布式计算环境等等。
[0045] 如图2中所示,一个或多个客户端设备240可以与一个或多个服务器206a-206n(在本文通常称为“服务器206”)进行通信。在一个实施例中,计算环境200可以包括安装在服务器206和客户端机器240之间的网络设备。网络设备可以管理客户端/服务器连接,并且在某些情况下可以在多个后端服务器206之间对客户端连接负载均衡。
[0046] 客户端机器240可以在某些实施例中被称为单客户端机器240或单组客户端机器240,而服务器206可以被称为单服务器206或单组服务器206。在一个实施例中,单客户端机器240与多于一个服务器206进行通信,而在另一个实施例中,单服务器206与多于一个客户端机器240进行通信。在又一实施例中,单客户端机器240与单服务器206进行通信。
[0047] 在一些实施例中,客户端机器240可以通过以下非穷举术语中的任何一个来引用:客户端机器(多个);客户端(多个);客户端计算机(多个);客户端设备(多个);客户端计算设备(多个);本地机器(多个);远程机器(多个);客户端节点(多个);端点(多个);或端点节点(多个)。在某些实施例中,服务器206可以通过以下非穷举术语中的任何一个来引用:服务器(多个);本地机器;远程机器;服务器群(多个)或主计算设备(多个)。
[0048] 在一个实施例中,客户端机器240可以是虚拟机。虚拟机可以是任何虚拟机,而在一些实施例中,虚拟机可以是由1型或2型超级管理器(例如,由Citrix Systems、IBM、VMware开发的超级管理器)或任何其它超级管理器管理的任何虚拟机。在一些方面中,虚拟机可以由超级管理器管理,而在一些方面中,虚拟机可以由在服务器206上执行的超级管理器或在客户端240上执行的超级管理器来管理。
[0049] 一些实施例包括显示由在服务器206或其它位于远程的机器上远程执行的应用生成的应用输出的客户端设备240。在这些实施例中,客户端设备240可以执行虚拟机客户端代理程序或应用以在应用窗口、浏览器或其它输出窗口中显示输出。在一个示例中,应用是桌面,而在其它示例中,应用是生成或呈现桌面的应用。桌面可以包括为操作系统的实例提供用户界面的图形壳,其中,本地和/或远程应用可以被集成。如本文使用的应用是在操作系统(并且,可选地,也有桌面)的实例已经被加载后执行的程序。
[0050] 在一些实施例中,服务器206使用远程表示协议或其它程序以发送数据到瘦客户端或在客户端上执行的远程显示应用以呈现由在服务器206上执行的应用生成的显示输出。瘦客户端或远程显示协议可以是以下非穷举列表的协议中的任何一个:由Ft.Lauderdale,Florida的Citrix Systems公司开发的独立计算架构(ICA)协议;或由Redmond,Washington的微软公司制作的远程桌面协议(RDP)。
[0051] 远程计算环境可以包括多于一个服务器206a-206n,使得服务器206a-206n被逻辑组合成服务群206(例如,在云计算环境中)。服务器群206可以包括在地理上分散然而并且逻辑地组合在一起的服务器206或彼此靠近定位同时逻辑地组合在一起的服务器206。在一些实施例中,在服务器群206内的地理上分散的服务器206a-206n可以使用WAN(广域)、MAN(城域)或LAN(局域)进行通信,其中,不同的地理区域可以被表征为:不同的洲;洲的不同区域;不同的国家;不同的州;不同的城市;不同的校园;不同的房间;或前述地理位置的任何组合。在一些实施例中,服务器群206可以作为单个实体来管理,而在一些实施例中,服务器群206可以包括多个服务器群。
[0052] 在一些实施例中,服务器群可以包括执行实质上类似类型的操作系统平台(例如,WINDOWS、UNIX、LINUX、iOS、ANDROID、SYMBIAN等等)的服务器206。在其它实施例中,服务器群206可以包括执行第一类型的操作系统平台的第一组一个或多个服务器以及执行第二类型的操作系统平台的第二组一个或多个服务器。
[0053] 服务器206可以根据需要被配置为任何类型的服务器(例如,文件服务器、应用服务器、web服务器、代理服务器、应用、网络设备、网关、应用网关、网关服务器、虚拟化服务器、部署服务器、SSL VPN服务器、防火墙、web服务器、应用服务器)或被配置为主应用服务器、执行活动目录的服务器或执行提供防火墙功能、应用功能或负载均衡功能的应用加速程序的服务器。还可以使用其它服务器类型。
[0054] 一些实施例包括从客户端机器240接收请求、向第二服务器106b转发请求以及用来自第二服务器106b的响应来响应于由客户端机器240生成的请求的第一服务器106a。第一服务器106a可以获得可用于客户端机器240的应用的枚举以及与托管应用的枚举内识别的应用的应用服务器206相关的地址信息。第一服务器106a可以然后使用web接口呈现对客户端的请求的响应,并且直接与客户端240进行通信以向客户端240提供对识别的应用的访问。一个或多个客户端240和/或一个或多个服务器206可以通过网络230(例如,网络101)传输数据。
[0055] 图2示出说明性桌面虚拟化系统的高级架构。如所示出的,桌面虚拟化系统可以是单服务器或多服务器系统或云系统,其包括被配置为将虚拟桌面和/或虚拟应用提供到一个或多个客户端访问设备240的至少一个虚拟化服务器206。如本文所使用的,桌面指的是图形环境或空间,其中一个或多个应用可以被托管和/或执行。桌面可以包括为操作系统的实例提供用户接口的图形壳,其中,本地和/或远程应用可以被集成。应用可以包括在操作系统的实例(并且,可选地,还有桌面)已经被加载之后执行的程序。操作系统的每个实例可以是物理的(例如,每个设备一个操作系统)或虚拟的(例如,在单个设备上运行的OS的很多实例)。每个应用可以在本地设备上执行,或在位于远程的设备(例如,远程的)上执行。
[0056] 进一步参考图3,计算机设备301可以被配置为在虚拟化环境(例如,单服务器、多服务器或云计算环境)中的虚拟化服务器。在图3中示出的虚拟化服务器301可以被部署为图2中示出的服务器206的一个或多个实施例或其它已知的计算设备和/或由图2中示出的服务器206的一个或多个实施例来实现或由其它已知的计算设备来实现。包括在虚拟化服务器301中的是硬件层,其可以包括一个或多个物理磁盘304、一个或多个物理设备306、一个或多个物理处理器308和一个或多个存储器316。在一些实施例中,固件312可以被存储在物理存储器316中的存储器元件之内并且可以由物理处理器308中的一个或多个来执行。虚拟化服务器301还可以包括操作系统314,其可以被存储在物理存储器316中的存储器元件之内并且由物理处理器308中的一个或多个来执行。更进一步,超级管理器302可以被存储在物理存储器316中的存储器元件之内并且可以由物理处理器308中的一个或多个来执行。
[0057] 在物理处理器308中的一个或多个上执行的可以是一个或多个虚拟机332A-C(通常为332)。每个虚拟机332可以具有虚拟磁盘326A-C和虚拟处理器328A-C。在一些实施例中,第一虚拟机332A可以使用虚拟处理器328A来执行包括工具堆栈324的控制程序320。控制程序320可以被称为控制虚拟机Dom0、Domain 0或用于系统管理和/或控制的其它虚拟机。在一些实施例中,一个或多个虚拟机332B-C可以使用虚拟处理器328B-C来执行客户操作系统330A-B。
[0058] 虚拟化服务器301可以包括具有与虚拟化服务301进行通信的一件或多件硬件的硬件层310。在一些实施例中,硬件层310可以包括一个或多个物理磁盘304、一个或多个物理设备306、一个或多个物理处理器308和一个或多个存储器216。物理组件304、306、308和316可以包括例如以上描述的组件中的任何一个。物理设备306可以包括例如网络接口卡、视频卡、键盘、鼠标、输入设备、监控器、显示设备、扬声器、光驱、储存设备、通用串行总线连接、打印机、扫描仪、网络元件(例如,路由器、防火墙、网络地址转换器、负载均衡器、虚拟专用网络(VPN)网关、动态主机配置协议(DHCP)路由器等等)、或连接到虚拟化服务器301或与虚拟化服务器301进行通信的任何设备。在硬件层310中的物理存储器316可以包括任何类型的存储器。物理存储器316可以存储数据,并且在一些实施例中,可以存储一个或多个程序或可执行指令组。图3示出了其中固件312被存储在虚拟化服务器301的物理存储器316内的实施例。存储在物理存储器316内的程序或可执行指令可以由虚拟化服务器301的一个或多个处理器308来执行。
[0059] 虚拟化服务器301还可以包括超级管理器302。在一些实施例中,超级管理器302可以是由在虚拟化服务器301上的处理器308执行以创建和管理任何数量的虚拟机332的程序。超级管理器302可以被称为虚拟机监控器或平台虚拟化软件。在一些实施例中,超级管理器302可以是可执行指令和监控在计算机器上执行的虚拟机的硬件的任何组合。超级管理器302可以是2型超级管理器,其中,超级管理器执行在执行在虚拟化服务器301上的操作系统314之内。虚拟机然后以高于超级管理器的等级执行。在一些实施例中,2型超级管理器在用户的操作系统的环境内执行,使得2型超级管理器与用户的操作系统进行交互。在其它实施例中,在虚拟化环境中的一个或多个虚拟化服务器201可以相反包括1型超级管理器(未示出)。1型超级管理器可以通过直接访问硬件层310内的硬件和资源执行在虚拟化服务器301上。也就是说,尽管2型超级管理器302通过主操作系统314(如所示)访问系统资源,但是1型超级管理器可以直接访问所有系统资源而无需主操作系统314。1型超级管理器可以直接在虚拟化服务器301的一个或多个物理处理器308上执行,并且可以包括存储在物理存储器316中的程序数据。
[0060] 在一些实施例中,超级管理器302可以以模拟操作系统330或控制程序320直接访问系统资源的任何方式向执行在虚拟机332上的操作系统330或控制程序320提供虚拟资源。系统资源可以包括但不限于物理设备306、物理磁盘304、物理处理器308、物理存储器316和包括在虚拟化服务器301硬件层310中的任何其它组件。超级管理器302可以用于仿真虚拟硬件、对物理硬件进行分区、虚拟化物理硬件和/或执行提供到计算环境的访问的虚拟机。在另外的其它实施例中,超级管理器302针对执行在虚拟化服务器301上的虚拟机332控制处理器调度和存储器分区。超级管理器302可以包括由Palo Alto,California的VMWare公司制作的那些;XEN超级管理器,其开发由开源Xen.org团体监督的一种开源产品;由微软提供的HyperV、VirtualServer或虚拟PC超级管理器或其它超级管理器。在一些实施例中,虚拟化服务器301执行超级管理器302,其创建虚拟机平台,在其上可以执行客户操作系统。
在这些实施例中,虚拟化服务器301可以被称为主机服务器。这样的虚拟化服务器的一个示例是由Fort Lauderdale,FL的Citrix Systems公司提供的XEN SERVER。
[0061] 超级管理器302可以创建一个或多个虚拟机332B-C(通常为332),客户操作系统330在其中执行。在一些实施例中,超级管理器302可以加载虚拟机镜像以创建虚拟机332。
在其它实施例中,超级管理器302可以在虚拟机332内执行客户操作系统330。在另外的其它实施例中,虚拟机332可以执行客户操作系统330。
[0062] 除了创建虚拟机332之外,超级管理器302可以控制至少一个虚拟机332的执行。在其它实施例中,超级管理器302可以向至少一个虚拟机332呈现由虚拟化服务器301提供的至少一个硬件资源的抽象(例如,在硬件层310内可用的任何硬件资源)。在其它实施例中,超级管理器302可以控制虚拟机332以其访问虚拟化服务器301中可用的物理处理器308的方式。控制对物理处理器308的访问可以包括确定虚拟机332是否应当访问处理器308以及物理处理器能力如何呈现给虚拟机332。
[0063] 如图3中所示,虚拟化服务器301可以托管或执行一个或多个虚拟机332。虚拟机332是一组可执行指令,其当由处理器308执行时,模拟物理计算机的操作,使得虚拟机332可以很像物理计算设备一样执行程序和进程。尽管图3示出了其中虚拟化服务器301托管三个虚拟机332的实施例,但是在其它实施例中,虚拟化服务器301可以托管任何数量的虚拟机332。在一些实施例中,超级管理器302向每个虚拟机332提供物理硬件、存储器、处理器的唯一的虚拟视图和对该虚拟机332可用的其它系统资源。在一些实施例中,唯一的虚拟视图可以基于虚拟机许可中的一个或多个、到一个或多个虚拟机标识符的策略引擎的应用、访问虚拟机的用户、执行在虚拟机上的应用、由虚拟机访问的网络或任何其它期望的准则。例如,超级管理器302可以创建一个或多个不安全的虚拟机332和一个或多个安全的虚拟机
332。不安全的虚拟机332可以被防止访问资源、硬件、存储器位置和安全虚拟机332可以被许可访问的程序。在其它实施例中,超级管理器302可以向每个虚拟机332提供物理硬件、存储器、处理器的实质上类似的虚拟视图和对虚拟机332可用的其它系统资源。
[0064] 每个虚拟机332可以包括虚拟磁盘326A-C(通常为326)和虚拟处理器328A-C(通常为328)。在一些实施例中,虚拟磁盘326是虚拟化服务器301的一个或多个物理磁盘304的虚拟化视图或虚拟化服务器301的一个或多个物理磁盘304的一部分。物理磁盘304的虚拟化的视图可以由超级管理器302产生、提供和管理。在一些实施例中,超级管理器302向每个虚拟机332提供物理磁盘304的唯一的视图。因此,在一些实施例中,包括在每个虚拟机332中的特定的虚拟磁盘326可以是唯一的(当与其它虚拟磁盘326相比较时)。
[0065] 虚拟处理器328可以是虚拟化服务器301的一个或多个物理处理器308的虚拟化视图。在一些实施例中,物理处理器308的虚拟化视图可以由超级管理器302来产生、提供和管理。在一些实施例中,虚拟处理器328具有至少一个物理处理器308的实质上所有的相同的特性。在其它实施例中,虚拟处理器308提供物理处理器308的修改的视图,使得虚拟处理器328的特性中的至少一些特性不同于对应的物理处理器308的特性。
[0066] 进一步参考图4,本文描述的一些方面可以在基于云的环境中实现。图4示出了云计算环境(或云系统)400的示例。如图4中所示,客户端计算机411-414可以与云管理服务器410进行通信以访问云系统的计算资源(例如,主机服务器403、储存资源404和网络资源
405)。
[0067] 管理服务器410可以在一个或多个物理服务器上实现。管理服务器410可以运行例如由Ft.Lauderdale,FL的Citrix Systems公司的CLOUDSTACK或OPENSTACK(除了别的之外)。管理服务器410可以管理各种计算资源,其包括云硬件和软件资源,例如,主机计算机403、数据储存设备404和联网设备405。云硬件和软件资源可以包括私有和/或公共组件。例如,云可以被配置为将由一个或多个特定的顾客或客户端计算机411-414和/或通过私有网络使用的私有云。在其它实施例中,公共云或混合公共-私有云可以由其它顾客通过开放或混合的网络使用。
[0068] 管理服务器410可以被配置为提供用户接口,通过其云运营商和云顾客可以与云系统交互。例如,管理服务器410可以向一组API和/或一个或多个云运营商控制台应用(例如,基于web的独立应用)提供用户接口以允许云运营商管理云资源、配置虚拟化层、管理顾客账户和执行其它的云管理任务。管理服务器410还可以包括具有被配置为经由客户端计算机411-414从终端用户接收云计算请求(例如,创建、修改或破坏云内的虚拟机的请求)的用户接口的一组API和/或一个或多个顾客控制台应用。客户端计算机411-414可以经由互联网或其它通信网络连接到管理服务器410,并且可以请求对由管理服务器410管理的计算资源中的一个或多个的访问。响应于客户端请求,管理服务器410可以包括被配置为基于客户端请求来选择和提供在云系统的硬件层中的物理资源的资源管理器。例如,管理服务器410和云系统的附加的组件可以被配置为通过网络(例如,互联网)为在客户端计算机411-
414的顾客提供、创建和管理虚拟机和他们的操作环境(例如,超级管理器、储存资源、由网络元件提供的服务等等),向顾客提供计算资源、数据储存服务、联网能力和计算机平台以及应用支持。云系统还可以被配置为提供各种特定的服务,其包括安全系统、开发环境、用户接口等等。
[0069] 特定的客户端411-414可以是相关的,例如,创建虚拟机的不同的客户端计算机代表相同的终端用户或附属于相同的公司或组织的不同的用户。在其它示例中,特定的客户端411-414可以是不相关的(例如附属于不同的公司或组织的用户)。对于不相关的客户端,关于任何一个用户的虚拟机或储存器的信息可以对其它用户是隐藏的。
[0070] 现在参考云计算环境的物理硬件层,可用区域401-402(或区域)可以指的是一组并别的物理计算资源。区域可以与计算资源的全部云中的其它区域地理上分开。例如,区域401可以是位于California的第一云数据中心,并且区域402可以是位于Florida的第二云数据中心。管理服务器410可以位于可用区域中的一个或单独的位置。每个区域可以包括通过网关与在该区域的外部的设备(例如,管理服务器410)连接的内部网络。云的终端用户(例如,客户端411-414)可能或可能不知道区域之间的区别。例如,终端用户可以请求具有指定的内存量、处理能力和网络能力的虚拟机的创建。管理服务器410可以响应于用户的请求并且可以分配资源以创建虚拟机而无需用户知道是使用来自区域401的资源还是来自区域402的资源来创建虚拟机。在其它示例中,云系统可以允许终端用户请求虚拟机(或其它云资源)被分配在特定的区域中或在区域内的特定的资源403-405上。
[0071] 在该示例中,每个区域401-402可以包括各种物理硬件组件(或计算资源)403-405(例如,物理托管资源(或处理资源)、物理网络资源、物理储存资源、交换机和可以用于向顾客提供云计算服务的附加的硬件资源)的布置。在云区域401-402中的物理托管资源可以包括一个或多个计算机服务器403(例如以上描述的虚拟化服务器301),其可以被配置为创建和托管虚拟机实例。云区域401或402中的物理网络资源可以包括一个或多个网络元件405(例如,网络服务提供商),其包括被配置为向云顾客提供网络服务的硬件和/或软件,例如防火墙、网络地址转换器、负载均衡器、虚拟专用网络(VPN)网关、动态主机配置协议(DHCP)路由器等等。在云区域401-402中的储存资源可以包括储存磁盘(例如,固态驱动器(SSD)、磁性硬盘等等)和其它储存设备。
[0072] 在图4中示出的示例云计算环境还可以包括具有附加的硬件和/或软件资源的虚拟化层(例如,如在图1-3中示出的),附加的硬件和/或软件资源被配置为创建和管理虚拟机和使用云中的物理资源向顾客提供其它服务。虚拟化层可以包括如以上在图3中描述的超级管理器连同提供网络虚拟化、储存虚拟化等等的其它组件。虚拟化层可以作为与物理资源层分离的层,或可以与物理资源层共享一些或所有相同的硬件和/或软件资源。例如,虚拟化层可以包括安装在具有物理计算资源的虚拟化服务器403中的每个中的超级管理器。已知的云系统可以可选地被使用,例如WINDOWS AZURE(Redmond Washington的微软公司)、AMAZON EC2(Seattle,Washington的Amazon.com公司)、IBM BLUE CLOUD(Armonk,New York的IBM公司)或其它。
[0073] 企业移动管理架构
[0074] 图5表示用于在BYOD环境中使用的企业移动技术架构500。架构使得移动设备502的用户能够从移动设备502访问企业或个人资源以及使用移动设备502用于个人用途两者。用户可以使用由用户购买的移动设备502或由企业提供给用户的移动设备502访问这样的企业资源504或企业服务508。用户可以利用移动设备502仅用于商业用途或用于商业和个人用途。移动设备可以运行iOS操作系统和Android操作系统等等。企业可以选择实现策略以管理移动设备504。策略可以通过防火墙或网关以移动设备可以被识别、保护或安全验证以及被提供到企业资源的选择性或完全访问的这样的方式来植入。策略可以是移动设备管理策略、移动应用管理策略、移动数据管理策略、或移动设备、应用和数据管理策略的一些组合。通过移动设备管理策略的应用来管理的移动设备504可以被称为登记设备。
[0075] 移动设备的操作系统可以被分成受管分区510和非受管分区512。受管分区510可以具有应用到其以保护在受管分区上运行的应用以及存储在受管分区中的数据的策略。在受管分区上运行的应用可以是安全应用。安全应用可以是电子邮件应用、web浏览应用、软件即服务(SaaS)访问应用、Windows应用访问应用等等。安全应用可以是安全本地应用514、由安全应用启动器518执行的安全远程应用522、由安全应用启动器518执行的虚拟化应用526等等。安全本地应用514可以由安全应用包装器520来包装。安全应用包装器520可以包括当安全本地应用在移动设备502上执行时在该设备上执行的集成的策略。安全应用包装器520可以包括将在移动设备502上运行的安全本地应用514指向在企业托管的在执行安全本地应用514时安全本地应用514可以要求完成所请求的任务的资源的元数据。由安全应用启动器518执行的安全远程应用522可以被在安全应用启动器应用518内执行。由安全应用启动器518执行的虚拟化应用526可以利用在企业资源504的移动设备502上的资源等等。通过由安全应用启动器518执行的虚拟化应用526在移动设备502上使用的资源可以包括用户交互资源、处理资源等等。用户交互资源可以用于收集和传输键盘输入、鼠标输入、摄像机输入、触觉输入、音频输入、视觉输入、手势输入等等。处理资源可以用于呈现用户界面、从企业资源504接收的处理数据等等。通过由安全应用启动器518执行的虚拟化应用526在企业资源504使用的资源可以包括用户界面产生资源、处理资源等等。用户界面产生资源可以用于装配用户界面、修改用户界面、刷新用户界面等等。处理资源可以用于创建信息、读取信息、更新信息、删除信息等等。例如,虚拟化应用可以记录与GUI相关的用户交互并且将它们传输到服务器应用,其中服务器应用将用户交互数据用作到在服务器上运行的应用的输入。在该布置中,企业可以选择保持在服务器侧上的应用以及与该应用相关的数据、文件等等。尽管企业可以选择根据本文原理通过保护一些应用来“调动”它们用于部署在移动设备上,但是该布置还可以被选择用于特定应用。例如,虽然一些应用可以被保护用于在移动设备上使用,但是其它应用可能不被准备或适用于部署在移动设备上,因此企业可以选择通过虚拟化技术来提供移动用户到未准备的应用的访问。作为另一个示例,企业可以具有带有大而复杂的数据集的大型复杂应用(例如,材料资源规划应用),其中对于移动设备定制应用将是非常困难的或否则不受欢迎的,因此企业可以选择通过虚拟化技术提供到应用的访问。作为又一示例,企业可以具有保持高度安全的数据(例如,人力资源数据、顾客数据、工程数据)的应用,高度安全的数据可以被企业视为太敏感的(对于甚至安全的移动环境),因此,企业可以选择使用虚拟化技术以允许对这样的应用和数据的移动访问。企业可以选择在移动设备上提供充分安全的应用和充分功能性的应用两者以及虚拟化应用以允许对被视为更适于在服务器侧上运行的应用的访问。在实施例中,虚拟化应用可以在移动设备上的安全存储位置中的一个安全存储位置中存储一些数据、文件等等。例如,企业可以选择允许特定的信息被存储在电话上同时不允许其它信息被存储在电话上。
[0076] 结合如本文描述的虚拟化应用,移动设备可以具有被设计为呈现GUI并且然后记录用户与GUI的交互的虚拟化应用。应用可以把将由服务器侧应用用作用户与应用的交互的用户交互传输到服务器侧。作为响应,服务器侧上的应用可以向移动设备传回新的GUI。例如,新的GUI可以是静态页面、动态页面、动画等等。
[0077] 在受管分区上运行的应用可以是稳定的应用。稳定的应用可以由设备管理器524来管理。设备管理器524可以监控稳定的应用并且利用用于检测问题和纠正问题的技术(如果这样的技术没有被利用,则将导致非稳定的应用)以检测问题和纠正问题。
[0078] 安全应用可以访问存储在移动设备的受管分区510中的安全数据容器528中的数据。在安全数据容器中被保护的数据可以由安全包装的应用514、由安全应用启动器518执行的应用、由安全应用启动器518执行的虚拟化应用526等等访问。存储在安全数据容器528中的数据可以包括文件、数据库等等。存储在安全数据容器528中的数据可以包括限于特定的安全应用530、在安全应用532之间共享的数据等等。限于安全应用的数据可以包括安全通用数据534和高度安全的数据538。安全通用数据可以使用强加密形式(例如,AES 128位加密等等),而高度安全的数据538可以使用非常强的加密形式(例如,AES 256位加密)。当接收到来自设备管理器524的命令时,存储在安全数据容器528中的数据可以被从设备删除。安全应用可以具有双模式选项540。双模式选项540可以向用户呈现以非安全的模式操作安全的应用的选项。在非安全的模式中,安全应用可以访问存储在移动设备502的非受管分区512上的非安全的数据容器542中的数据。存储在非安全的数据容器中的数据可以是个人数据544。存储在非安全的数据容器542中的数据还可以由在移动设备502的非受管分区512上运行的非安全的应用548来访问。当存储在安全数据容器528中的数据被从移动设备
502删除时,存储在非安全的数据容器542中的数据可以保持在移动设备502上。企业可能想要从移动设备删除选择的或所有的由企业拥有、许可或控制的数据、文件和/或应用(企业数据),同时留下或以其它方式保留由用户拥有、许可或控制的个人数据、文件和/或应用(个人数据)。该操作可以被称为选择性清除。利用根据本文描述的方面布置的企业数据和个人数据,企业可以执行选择性清除。
[0079] 移动设备可以通过公共互联网548等等连接到在企业处的企业资源504和企业服务508。移动设备可以通过虚拟专用网络连接连接到企业资源504和企业服务508。虚拟专用网络连接可以特定于特定的应用550、特定的设备、移动设备上的特定的安全区域等等552。例如,电话的安全区域中的包装的应用中的每个包装的应用可以通过应用特定的VPN访问企业资源,使得到VPN的访问将基于与应用相关的属性(可能接合用户或设备属性信息)来授予。虚拟专用网络连接可以携带微软交换流量、微软活动目录流量、HTTP流量、HTTPS流量、应用管理流量等等。虚拟专用网络连接可以支持和实现单点登录认证过程554。单点登录过程可以允许用户提供单组认证凭证,其然后由认证服务558进行验证。认证服务558可以然后授权用户对多个企业资源504的访问,而不需要用户提供到每个单独的企业资源504的认证凭证。
[0080] 虚拟专用网络连接可以由访问网关560来建立和管理。访问网关560可以包括管理、加速和提高企业资源504到移动设备502的递送的性能增强功能。访问网关还可以重新路由从移动设备502到公共互联网548的流量,使得移动设备502能够访问在公共互联网548上运行的公共可用和非安全的应用。移动设备可以经由传输网络562连接到访问网关。传输网络562可以是有线网络、无线网络、云网络、局域网络、城域网络、广域网络、公共网络、专用网络等等。
[0081] 企业资源504可以包括电子邮件服务器、文件共享服务器、SaaS应用、网页应用服务器、Windows应用服务器等等。电子邮件服务器可以包括交换服务器、Lotus Notes服务器等等。文件共享服务器可以包括ShareFile服务器等等。SaaS应用可以包括Salesforce等等。Windows应用服务器可以包括被构建以提供旨在本地Windows操作系统上运行的应用的任何应用服务器等等。企业资源504可以是内建式资源、基于云的资源等等。企业资源504可以由移动设备502直接或通过访问网关560来访问。企业资源504可以由移动设备502经由传输网络562来访问。传输网络562可以是有线网络、无线网络、云网络、局域网络、城域网络、广域网络、公共网络、专用网络等等。
[0082] 企业服务508可以包括认证服务558、威胁检测服务564、设备管理器服务524、文件共享服务568、策略管理器服务570、社交整合服务572、应用控制器服务574等等。认证服务558可以包括用户认证服务、设备认证服务、应用认证服务、数据认证服务等等。认证服务
558可以使用证书。证书可以由企业资源504等等存储在移动设备502上。存储在移动设备
502上的证书可以被存储在移动设备上的加密位置中,证书可以被暂时存储在移动设备502上用于在认证时使用等等。威胁检测服务564可以包括入侵检测服务、未经授权的访问尝试检测服务等等。未经授权的访问尝试检测服务可以包括未经授权尝试访问设备、应用、数据等等。设备管理服务524可以包括配置、提供、安全、支持、监控、报告和停止运作服务。文件共享服务568可以包括文件管理服务、文件存储服务、文件协作服务等等。策略管理器服务
570可以包括设备策略管理器服务、应用策略管理器服务、数据策略管理器服务等等。社交整合服务572可以包括联系人整合服务、协作服务、与社交网络(例如,Facebook、Twitter和LinkedIn)的整合等等。应用控制器服务574可以包括管理服务、提供服务、部署服务、分配服务、撤销服务、包装服务等等。
[0083] 企业移动技术架构500可以包括应用商店578。应用商店578可以包括未包装的应用580、预包装的应用582等等。应用可以根据应用控制器574被填充于应用商店578中。应用商店578可以由移动设备502通过访问网关560、通过公共互联网548等等来访问。应用商店可以设置有直观和易于使用的用户接口。应用商店578可以提供对软件开发工具包584的访问。软件开发工具包584可以通过包装如先前在本描述中描述的应用来给用户提供保护由用户选择的应用的能力。已经使用软件开发工具包584包装的应用可以然后通过使用应用控制器574将其填充在应用商店578中来提供到移动设备502。
[0084] 企业移动技术架构500可以包括管理和分析能力588。管理和分析能力588可以提供与资源如何被使用、多久资源被使用等等相关的信息。资源可以包括设备、应用、数据等等。资源如何被使用可以包括哪些设备下载哪些应用、哪些应用访问哪些数据等等。多久资源被使用可以包括多久应用已经被下载、特定数据集已经被应用访问多少次等等。
[0085] 图6是另一个说明性企业移动管理系统600。为了简单起见,以上关于图5描述的移动管理系统500的组件中的一些组件已经被省略。在图6中示出的系统600的架构在很多方面类似于以上关于图5描述的系统500的架构并且可以包括以上未提到的附加的特征。
[0086] 在这种情况下,左手侧表示具有客户端代理604的登记移动设备602。客户端代理604可以包括在远程或移动设备上运行的代理。客户端代理604可以与包括远程设备的云资源的网关服务器606进行交互。网关服务器606可以用于访问各种企业资源608和服务609(例如,交换、Sharepoint、PKI资源、Kerberos资源、证书发行服务,如在右手侧上示出的)。
尽管未明确示出,移动设备602还可以与企业应用商店(店面)进行交互用于选择和下载应用。
[0087] 客户端代理604充当在企业数据中心中托管的Windows应用/桌面的UI(用户接口)媒介物,其被使用HDX/ICA显示远程协议来访问。客户端代理604还支持在移动设备602上的本地应用(例如本地iO或Android应用)的安装和管理。例如,在以上附图中示出的受管应用610(邮件、浏览器、包装的应用)全部是在设备上本地执行的本地应用。本架构的例如移动体验技术(MAMP)的客户端代理604和移动应用管理协议(在下文中缩写为“MAMP”)起作用以将例如连接性和SSO(单点登录)的策略驱动管理能力和特征提供到企业资源/服务608。客户端代理604处理到企业(例如到网关服务器606组件)的主要用户认证。客户端代理604从网关服务器606获得策略以控制在移动设备602上的MAMP受管的应用610的行为。
[0088] 在本地应用610和客户端代理604之间的安全IPC链接612表示管理信道,其允许客户端代理提供将由“包装”每个应用的MAMP框架614实施的策略。在移动设备602上的支持MAMP的应用可以合并MAMP(通过直接链接或通过包装处理)。因此,MAMP可以用于管理在移动设备602上的应用。为了简洁起见,MAMP本文用于描述用于管理应用的协议。然而,可以使用提供在移动设备上的代理的任何协议,该代理可以管理在移动设备602上的应用,其包括可以从服务器接收信息以及执行对移动设备602或移动应用的诊断的任何代理。IPC信道612还允许客户端代理604提供实现到企业资源608的连接性和SSO的凭证和认证信息。最后,IPC信道612允许MAMP框架614调用由客户端代理604实现的用户接口功能(例如在线和离线认证)。
[0089] 在客户端代理604和网关服务器606之间的通信本质上是来自包装每个本地受管应用610的MAMP框架614的管理信道的延伸。MAMP框架614从客户端代理604请求策略信息,客户端代理604转而从网关服务器606请求策略信息。MAMP框架614请求认证,并且客户端代理604登录到网关服务器606的网关服务部分(也被称为NetScaler访问网关)。客户端代理604还可以调用在网关服务器606上的支持服务,其可以产生输入材料以获得本地数据仓库
616的加密密钥,或提供客户端证书,其可以实现到PKI保护的资源的直接认证,如下文更充分说明的。
[0090] 更详细地说,MAMP框架614“包装”每个受管应用610。这可以经由明确的构建步骤或经由构建后处理步骤来并入。MAMP框架614可以在应用610的第一次启动时与客户端代理604“配对”以初始化安全IPC信道和获得关于该应用的策略。MAMP框架614可以执行本地应用的策略的相关部分(例如,客户端代理登陆依赖性和限制本地OS服务可以如何被使用或它们可以如何与应用610进行交互的遏制策略中的一些)。
[0091] MAMP框架614可以使用由客户端代理604通过安全IPC信道612提供的服务以便利认证和内部网络访问。专用和共享数据仓库616(容器)的密钥管理还可以由受管应用610和客户端代理604之间的适当的交互来管理。仓库616可以仅仅在在线认证以后是可用的,或可以在离线认证之后是可用的(如果策略允许的话)。仓库616的首先使用可以要求在线认证,并且离线访问可以限于至多在在线认证被再次要求之前的策略刷新周期。
[0092] 到内部资源的网络访问可以通过访问网关606从单独的受管应用610直接发生。MAMP框架614负责统筹代表每个应用610的网络访问。客户端代理604可以通过提供接着在线认证获得的合适的时间有限的次级凭证来便利这些网络连接。网络连接的多个模式可以被使用(例如反向网页代理连接和端到端VPN式隧道618)。
[0093] 邮件和浏览器受管应用610具有特定的状态并且可以使用可能不通常可用于任意包装的应用的设施。例如,邮件应用可以使用特定的后台网络访问机制(允许其在延长的时间段内访问交换,而不需要完全的AG登录)。浏览器应用可以使用多个专用数据仓库以隔离不同种类的数据。
[0094] 该架构支持各种其它安全特征的并入。例如,在一些情况下网关服务器606(包括其网关服务)将不需要验证AD密码。可以交给企业来判定是否将AD密码用作关于一些情况下一些用户的认证因素。如果用户是在线或离线的(即,连接到网络或未连接到网络),则可以使用不同的认证方法。
[0095] 提高认证是个特征,其中网关服务器606可以识别托管本地应用610,其被允许访问要求强认证的高度机密的数据,并且确保到这些应用的访问仅仅在执行适当的认证之后被许可,即使这意味着在先前较弱等级的登录之后用户需要重新认证。
[0096] 该解决方案的另一个安全特征是在移动设备602上的数据仓库616(容器)的加密。仓库616可以被加密,使得包括文件、数据库和配置的所有设备上数据被保护。对于在线仓库,密钥可以被存储在服务器(网关服务器)上,并且对于离线仓库,密钥的本地副本可以由用户密码来保护。当数据被本地存储在安全容器616中的设备602上时,优选的是,利用至少AES 256加密算法
[0097] 其它安全容器特征还可以被实现。例如,日志特征可以被包括,其中,在应用610内发生的所有安全事件被日志并且报告给后端。数据擦除可以被支持,例如,如果应用610检测到篡改,则相关的加密密钥可以被用随机数据来覆盖,不在文件系统上留下用户数据被破坏的暗示。屏幕截图保护是另一个特征,其中应用可以阻止任何数据被存储在屏幕截图中。例如,密钥窗口的隐藏属性可以被设置为YES。这可以使得无论什么内容当前被显示在将被隐藏的屏幕上,导致其中任何内容将正常存在的空白的屏幕截图。
[0098] 本地数据传输可以被阻止,例如,通过防止任何数据被本地传输到应用容器之外(例如,通过将其复制或发送其到外部应用)。键盘缓存特征可以运行以禁用敏感文本字段的自动校正功能。SSL证书验证可以是可操作的,因此应用特别地验证服务器SSL证书来代替其被存储在密钥链中。加密密钥生成特征可以被使用,使得使用由用户提供的密码(如果离线访问被要求)来生成用于加密在设备上的数据的密钥。如果离线访问没有被要求,则它可以与被随机生成并且存储在服务器侧上的另一个密钥进行异或。密钥导出功能可以运行,使得从用户密码生成的密钥使用KDF(密钥导出功能,尤其是PBKDF2),而不是创建它的密码散列。后者使得密钥易受暴力破解或字典攻击的影响。
[0099] 此外,一个或多个初始化向量可以被用在加密方法中。初始化向量将引起相同的加密的数据的多个副本产生不同的密码文本输出,阻止重放和密码分析攻击两者。如果用于加密数据的特定的初始化向量是未知的,则这将还阻止攻击者甚至使用被盗的加密密钥来解密任何数据。此外,认证然后解密可以被使用,其中应用数据仅仅在用户在应用内被认证之后被解密。另一个特征可能涉及存储器中的敏感数据,仅仅当其被需要时其可以被保持在存储器中(并且不在磁盘中)。例如,登录凭证可以在登录之后被从存储器擦除,并且加密密钥和objective-C实例变量内部的其它数据不被存储,因为它们可以被容易地引用。相反,存储器可以被手动分配用于这些。
[0100] 不活动超时可以被实现,其中,在不活动的策略定义的周期之后,用户会话被终止。
[0101] 可以以其它方式阻止MAMP框架614的数据泄露。例如,当应用610被放置在后台中时,在预定(可配置的)时间段之后可以清除存储器。当被作为后台时,可以获得应用的最后显示的屏幕的快照以加快前台设置进程。屏幕截图可以包含机密数据并且因此应该被清除。
[0102] 另一个安全特征涉及使用OTP(一次性密码)620,而不使用访问一个或多个应用的AD(活动目录)622密码。在一些情况下,一些用户不知道(或不被许可知道)他们的AD密码,因此这些用户可以使用OTP 620来认证,例如通过使用类似于SecurID的硬件OTP系统(OTP可以由不同的供应商来提供,也例如Entrust或Gemalto)。在一些情况下,在用户使用用户ID进行认证之后,文本被发送到具有OTP 620的用户。在一些情况下,这可以被实现仅仅用于在线使用(其中提示是单个字段)。
[0103] 离线密码可以被实现用于这些应用610的离线认证,对于其,经由企业策略许可离线使用。例如,企业可以想要以这样的方式来访问StoreFront。在这种情况下,客户端代理604可以要求用户设置定制离线密码,并且AD密码不被使用。网关服务器606可以提供策略以控制和实施关于最小长度、字符类组成和密码使用年限的密码标准(例如通过标准Windows服务器密码复杂度要求描述的,尽管这些要求可以被修改)。
[0104] 另一个特征涉及实现特定应用610的客户端侧证书作为次级证书(为了经由MAMP微VPN特征访问PKI保护的web资源的目的)。例如,例如@WorkMail的应用可以利用这样的证书。在这种情况下,使用ActiveSync协议的基于证书的认证可以被支持,其中,来自客户端代理604的证书可以由网关服务器606检索并且用在密钥链中。每个托管应用可以具有由在网关服务器中定义的标签识别的一个相关的客户端证书。
[0105] 网关服务器606可以与企业专用web服务进行交互以支持客户端证书的发行以允许相关的托管应用认证到内部PKI保护的资源。
[0106] 客户端代理604和MAMP框架614可以被增强以支持获得和使用到内部PKI保护的网络资源的认证的客户端证书。多于一个证书可以被支持,例如以匹配各种等级的安全和/或分离要求。证书可以由邮件和浏览器托管应用来使用,并且最终由任意包装的应用来使用(提供的这些应用使用web服务式通信模式,其中对于MAMP框架调解https请求是合理的)。
[0107] 对于每个使用周期,对iOS的MAMP客户端证书支持可以依赖于将PKCS 12BLOB(二进制大对象)导入到每个托管应用中的iOS密钥链中。MAMP客户端证书支持可以将HTTPS实现与专用存储器中的密钥储存一起使用。除了可能在被强保护的“仅仅在线”数据值中以外,客户端证书将永远不出现在iOS密钥链中并且将不被持续。
[0108] 相互SSL还可以被实现以通过要求移动设备602被认证到企业来提供附加的安全,并且反之亦然。用于到网关服务器606的认证的虚拟智能卡还可以被实现。
[0109] 有限的和完全的Kerberos支持两者可以是附加的特征。完全的支持特征涉及使用AD密码或受信任的客户端证书进行完全Kerberos登录到AD 622并且获得Kerberos服务票据以响应于HTTP协商认证挑战的能力。有限的支持特征涉及AGEE中的约束委派,其中AGEE支持调用Kerberos协议转换,因此它可以获得和使用Kerberos服务票据(受到约束委派)以响应于HTTP协商认证挑战。该机制以反向web代理(又称作CVPN)模式工作,并且当http(但不是https)连接时以VPN和微VPN模式来代理。
[0110] 另一个特征涉及应用容器定和擦除,其可以在检测到越狱或获得管理员权限时自动发生,并且作为来自管理控制台的推送的命令而发生,并且可以包括远程擦除功能(甚至当应用610不运行时)。
[0111] StoreFront和应用控制器的多站点架构或配置可以被支持,其允许用户在故障的情况下得到来自若干不同的位置中的一个的服务。
[0112] 在一些情况下,受管应用610可以被允许经由API(示例OpenSSL)访问证书和专用密钥。企业的受信任的受管应用610可以被允许利用应用的客户端证书和专用密钥执行特定的公共密钥操作。各种使用情况可以被识别并且被相应地处理,例如当应用行为类似浏览器并且没有证书访问被要求时,当应用读取“我是谁”的证书时,当应用使用该证书以构建安全会话令牌时,并且当应用使用专用密钥用于重要数据(例如,事务日志)的数字签名或用于临时数据加密时。
[0113] 使用代理安全访问资源
[0114] 图7示出了具有客户端设备705、代理设备710、资源720和/或认证服务715的说明性系统。图8示出了客户端设备705和代理设备710的说明性详细视图。这些元件可以实现本文描述的一个或多个方面。利用下文提供的附加的示例现在将提供这些方面的简要概述。客户端设备705可以使用代理设备710与一个或多个资源720和/或认证服务715进行通信。
在一些方面,客户端设备705可能不被配置为与资源720和/或认证服务715直接进行通信。
例如,客户端设备705和资源720可以使用不同的认证和/或通信协议。代理设备710可以在这些不同的协议之间进行转化。附加地或可选地,代理设备710可以提供附加的益处(如将在下文示例中描述的)。
[0115] 客户端设备705可以将对资源720(例如,文档、电子邮件、服务、文件等等)的请求发送到代理设备710。代理设备710可以将该请求转发到资源720,并且作为响应,代理设备710和资源720之间的认证可以被发起。在认证期间的一个或多个点,资源720可以请求例如来自客户端证书的签名。代理设备710可能不直接访问客户端证书,因此代理设备710可以在认证过程中涉及客户端设备705(例如如果客户端设备705控制到客户端证书的访问)。例如,代理设备710可以请求客户端设备705使用客户端证书(或包括在其中的私人密钥)对认证消息进行签名或解密,或返回可用的安全证书的列表或特定的安全证书的用户的选择。
[0116] 代理设备710可以给客户端设备705提供环境信息,其识别在代理设备710和资源/认证服务器之间的认证会话。例如并且如将在下文示例中进一步详细描述的,环境信息可以识别在代理设备710和资源720和/或代理设备710和认证服务715之间交换(或将交换)的认证信息的数据结构。客户端设备705可以使用环境信息以验证或以其它方式确认代理设备710和资源/认证服务器之间的认证会话。一旦环境信息通过验证,则客户端设备705可以将请求的签名提供给代理设备710,并且代理设备710可以完成与资源720和/或认证服务715的认证。然后,代理设备710可以获取客户端设备705请求的资源并且将其提供给客户端设备705。
[0117] 客户端设备705可以包括终点设备、客户端计算机107或109、终端240、客户端计算机411-414、移动设备502、移动设备602或任何其它设备中的任何一个。例如,移动设备可以包括智能电话、平板电脑等等中的任何一个。一个或多个应用可以在客户端设备705上运行。应用可以期望访问被保护的资源(例如企业资源),并且包括在该应用(或其它应用)中的模块可以促进访问这些被保护的资源。例如并且参考图8,在客户端设备705上运行的应用可以将对资源的请求(例如,HTTP请求)发送到MAMP框架805,其可以促进与代理设备710的通信。在一些方面,MAMP框架805可以运行为客户端设备705上的特权应用。MAMP框架805可以包括由MAMP框架614提供的功能的全部或一部分(如先前描述的)。
[0118] 客户端设备705还可以具有PK操作SDK(PKOperation SDK)模块810,其促进到密钥存储器815的访问,密钥存储器815存储有可以被使用以针对认证目的进行签名的一个或多个客户端证书。例如,客户端设备705可以授权访问代表客户端设备705的用户的客户端证书或拥有代表客户端设备705的用户的客户端证书。在一些方面,证书可以是企业发行的证书。证书可以被绑定到具有加密模块的物理智能卡。换言之,加密的秘密可能局限于智能卡。用户可以授权客户端设备705访问智能卡保护的证书。可选地,证书可以被绑定到虚拟智能卡,其可以使用硬件和/或软件模块以保护密钥。客户端设备705和/或客户端设备705的可移动硬件模块可以被配置过程授权以存储证书和私人密钥。用户可能需要使用客户端设备705输入PIN码以授权涉及客户端证书私人密钥的操作。与客户端设备705分离的另一个外部设备(例如,另一个智能电话)可以控制证书,并且客户端设备705可以利用定制读卡器接口以访问由外部设备控制的证书。
[0119] 在一些实施例中,客户端证书和/或私人密钥可能局限于客户端设备705或物理智能卡。因此,客户端设备705可以维持密钥的控制。如果需要使用密钥的认证,则客户端设备705可能需要参与认证过程。这允许客户端设备705保证利用证书私人密钥执行的操作是客户端设备705想要的操作。一些组织可以使用智能卡以实现某些操作的不可抵赖性,其可以要求用户具有对由该组织发行的证书的全部使用的授权。例如,文档签名可能需要明确的用户授权,然而到特定系统的认证可能不需要明确的用户授权。用于提供这样的保证的合适的机制可能取决于被访问的资源的性质、涉及的代理设备和客户端设备705如何操作。
[0120] 代理设备710可以包括以下项中的一项或多项:服务器(例如,服务器201、206、301、410)、计算设备、访问网关560、网关服务器606或任何其它设备。代理设备710可以促进客户端设备705和企业资源或其它网络之间的通信。例如,客户端设备705的用户可能期望访问需要认证的企业资源,并且代理设备710可以作为中介进行访问。如果例如客户端设备
705不能够直接访问资源,则客户端设备705可以使用代理设备710以访问资源。例如,客户端设备705可能不能配置成用于由企业资源使用的协议。在一些方面,企业资源可以用PKINIT实现Kerberos用于认证,但是客户端设备705可能不用PKINIT实现Kerberos。类似地,企业资源可以用客户端证书认证实现SSL,但是客户端设备705可能不用客户端证书认证实现SSL。相反,客户端设备705和代理设备710可以使用具有标准组件和适合公知认证框架的协议进行通信。代理设备710可以在到资源的第一协议(例如,Kerberos或SSL)和到客户端设备705的第二不同的协议(例如,HTTP或HTTPS)之间进行转化。通过使用代理设备
710,客户端设备可能不需要理解和运行由企业资源使用的复杂和不同的协议。在这些例子中,代理设备710可以充当客户端色。然而,代理设备710可能不具有对客户端证书私人密钥的控制。
[0121] 代理设备710可以用于促进在其它情况对资源的访问(例如,如果客户端设备705不被允许直接访问资源,如果客户端设备705的访问能力是有限的和/或如果代理设备710通过提高性能或提供优选的接口来增强访问)。代理设备710还可以促进增强的安全性。例如,Kerberos资源认证可以需要从Kerberos KDC获得服务票据(例如,活动目录域控制器)。然而,KDC本身可以包括敏感企业资源,其不应当被一些客户端设备直接访问。对于这些情况。Kerberos认证可能需要使用被信任的代理设备710。作为另一个示例,代理设备710可以是被部署在企业的DMZ网络中的加强的(hardened)通信网关。为了提供额外的安全优势,代理设备710可以能够检查被代理到企业资源的通信,而不是允许在客户端设备705和企业资源之间的透明的端到端通信流(好像代理设备710不存在)。也就是说,代理设备710可以了解客户端设备705正在使用什么资源和代理设备705利用什么协议。如将在以下示例中进一步详细论述的,代理设备710还可以向客户端设备705提供环境信息,其识别代理设备710和认证设备715和/或资源720之间的认证会话的一个或多个方面。客户端设备705可以使用该环境信息以确定是否对由代理设备710提供的需要签名的数据进行签名。
[0122] 参考图8,代理设备710可以包括数据包引擎820,其可以是硬件模块和/或软件模块。数据包引擎820可以促进与客户端设备705和/或资源的通信。代理设备710还可以包括会话缓存825。如将在以下示例中进一步描述的,会话缓存825可以存储会话密钥和/或票据(例如,用于Kerberos会话)以实现代理设备710和一个或多个资源或存储资源的服务器之间的通信。代理设备710可以包括客户端侧认证模块830,其被配置为管理与客户端设备705的认证(例如从客户端设备705获得签名)。对于Kerberos认证,客户端侧认证模块830可以包括PKINIT模块(其可以被称为同样的守护进程),其实现Kerberos认证协议(例如,PKINIT协议)的公开密钥形式的客户端侧。例如,这可以是可获得自Kerberos的开源实现的kinit命令行程序。
[0123] 代理设备710还可以包括库模块835(例如,PK操作代理SDK 835),其由客户端侧认证模块830使用以抽象用于访问客户端证书私人密钥的细节。对于Kerberos,PK操作代理SDK 835可以被使用,其实现用于访问绑定到智能卡的客户端证书的PKCS#11API规范。PK操作代理SDK 835可以实现PKCS#11的部分,并且将相关的证书操作打包成可以被远程发送到客户端设备705的形式。通过使用PKCS#11API,不需要修改Kerberos实现,其可以包括标准Kerberos实现,例如,MIT。这使得更容易维持Kerberos产品,例如如果安全补丁被应用于产品。数据包引擎820、会话缓存825、客户端侧认证模块830和PK操作代理SDK 835可以包括硬件模块和/或软件模块,并且它们可以实现的操作将被在以下示例中进一步详细描述。在一些方面,代理设备710可以包括一个或多个处理器和存储计算机可执行指令的存储器,当计算机可执行指令被处理器执行时引起代理设备710提供数据包引擎820、会话缓存825、客户端侧认证模块830和PK操作代理SDK 835和/或以执行数据包引擎820、会话缓存825、客户端侧认证模块830和PK操作代理SDK 835的操作。
[0124] 客户端设备705和代理设备710可以使用标准框架(例如,HTTP框架)进行通信。在一些方面并且如将在以下示例中进行描述的,客户端设备705和代理设备710可以交换一个或多个认证消息。它们可以交换HTTP状态码(例如用于请求认证和/或挑战响应消息的HTTP 401码)。在一些实施例中,如果接收401认证挑战的客户端设备705不支持客户端私人证书的安全交换,则客户端设备705可以将401消息识别为客户端设备705不理解的认证挑战。客户端设备705可以用适当的错误处理行为做出反应,例如将操作不能被完成的消息显示给用户,因为客户端设备705不支持客户端私人证书的安全的交换。支持公开密钥操作远程发送的HTTP级别编码可以是相对简单的。数据包引擎820和MAMP框架805可以处理HTTP级别编码。通信可以是类似于在RFC 4559中描述的HTTP协商认证方案的结构,其通过引用以其整体并入本文。Base64编码的二进制大对象(blob)可以被使用WWW认证和/或认证报头在客户端设备和代理设备之间来回交换。二进制大对象可以被生成并且在每个设备由各自的PK操作SDK(810、835)处理。
[0125] 在一些实施例中,在客户端设备705和代理设备710之间的通信路径中的HTTP感知的组件可能不与认证过程结合。例如,客户端设备705和代理设备710之间的HTTP代理服务器可以意识到:到代理设备710的连接不应当被重复使用以发送来自其它客户端设备和/或用户的请求。此外,从代理设备710返回的任何HTTP数据的缓存应当正确地设定范围,使得数据不被发送到另一个客户端设备。
[0126] 在一些方面,客户端设备705和代理设备710之间的认证可以将例如web认证的标准认证框架或通用安全服务应用程序接口(GSSAPI)与定制机制一起使用。对象可以被从代理设备710传送到客户端设备705。客户端设备705可以处理对象并且通过标准加密的机制(例如,具有名称检查的证书路径验证)来验证它们。
[0127] 在客户端设备705和代理设备710之间的专门的通信信道可以被创建。例如,专门的通信信道可以被用于中继证书操作请求和结果。利用专门的通信信道可以提供额外的加密的保护(除了通过客户端设备705和代理设备710之间的标准SSL信道提供的以外)。考虑到被远程发送的加密的操作的输入和输出的敏感度,这可以是适当的。在一些示例中,客户端设备705和代理设备710之间的Diffie-Hellman密钥交换可以发生。该交换可以提供客户端设备705和代理设备710之间的相互认证。在一些实施例中,相互认证可以在由客户端设备705请求访问资源之前已经被建立。如在RFC5929(其据此通过引用以其整体并入)中描述的信道绑定可以用于将专门的通信信道加密地链接到外部SSL会话。简要参考图8,针对数据(例如PK操作有效负载)建立专门的通信信道可以利用客户端设备705和数据包引擎820之间的多重交换。这可能对于除了PK操作SDK 810和PK操作代理SDK 835之外的每件事物都是不透明的。
[0128] 用于经由专门的通信信道来提供额外的保护的一个原因是SSL实际上可以由联网设备(例如在代理设备710前面的卸载设备)来终止。卸载设备可以针对SSL连接处理被优化(例如通过使用用于加速CPU密集型操作的包含在SSL连接中的专门的硬件)。硬件模块还可以被认证以满足商业上重要的加密的处理标准(例如联邦信息处理标准(例如,FIPS-140))。用于提供额外的保护的另一个原因是检查设备可以被授权访问SSL证书密钥以便对通信进行解码。检查设备可以包括安全设备,其被设计为监视网络流量用于遵守安全策略(例如,通过检测将机密信息发送到被信任的网络区外部的尝试或与不被信任的或不被授权的服务器进行通信的尝试)。这些检查设备中的一些可以被配置为在SSL连接握手(handshake)期间模仿其它服务器,以便防止检查过程被加密的通信信道的使用阻止。使用专门的通信信道可以防止敏感的数据不必要的和/或不适当的暴露到卸载设备和/或检查设备。因此,从使用智能卡等价物客户端证书期望的不可抵赖属性可以被保护。例如,专门的通信信道可以防止待被签名的数据被通过外部设备和/或解密的数据的泄露而修改。
[0129] 可以以很多方式来实现专门的通信信道。例如并且如先前所指出的,在标准HTTP认证协议内部操作的定制GSSAPI机制可以被使用。该实现提供了几个非排他的优点。第一,代理设备710可以以标准方式(例如HTTP)向客户端设备705指示需要到资源和/或认证服务器的认证以完成所请求的资源访问。第二,任意二进制协议可以在客户端设备705和代理设备710之间进行多个循环(如果有必要)。第三,实现允许安全通信机制被协商并且应用来以标准方式传送数据(例如,在GSSAPI等级)。在一些实现中,在标准HTTP认证协议内部操作的定制GSSAPI机制还可以允许GSSAPI的平台实现与被添加的定制机制(例如,MICROSOFT NegoEx机制)一起使用。
[0130] 参考图7,一个或多个认证服务715(或运行认证服务715的服务器)可以存在。认证服务715可以实现一种或多种类型的认证(包括Kerberos或SSL)。本文描述的方面可以针对涉及客户端证书私人密钥操作的任何认证协议而实现。例如,对于Kerberos,认证服务器可以负责发行票据(包括票据授予票据和/或会话票据)。认证服务器可以通过一个或多个信道与代理设备710进行通信。此外,一个或多个信道可以使用与由客户端设备705使用以与代理设备710进行通信的通信协议不同的通信协议。在一些方面,即使实现本文描述的方面,认证服务715可以保持不变。换言之,认证服务715可以存在于传统的基础设施中。认证服务715可以包括例如以上指出的认证服务558。
[0131] 一个或多个资源720(或存储资源720的服务器)可以存在。资源720可以与使用认证服务器用来与代理设备710进行通信的相同的或不同的协议中的一个或多个来与代理设备710进行通信。在一些方面,即使实现本文描述的方面,资源可能保持不变。换言之,资源可以存在于传统的基础设施中。资源的非限制性示例可以包括但不限于文件资源、web资源、邮件资源、Sharepoint资源等等。这些资源可以包括结构查询语言(SQL)数据库、远程过程调用(RPC)服务器、分布式组件对象模块(DCOM)服务器、简单对象访问协议(SOAP)web服务、代表性状态传送(REST)web服务和可以使用GSSAPI或类似的安全框架用于认证的其它专有资源。这些资源中的一个或多个可以被内部设备(例如在相同的网络上作为资源或在另一个被保护的网络中的计算机)直接访问。资源可以包括以上指出的企业资源504、508和/或608和/或企业服务508和/或609。此外,资源可以被存储在一个或多个服务器(例如图2中示出的服务器206)上。可以通过多层系统访问资源。代理设备710可以与前端服务器进行通信,其可以转而与后端服务器进行通信(并且作为请求用户进行认证)。具有无约束的委托的Kerberos可以用于这种类型的系统,并且代理设备710可以将用户的已转发的TGT提供给前端服务器。
[0132] 图9A-C是用于使用代理认证和/或提供到资源的安全访问的示例方法步骤的流程图。图9A-C示出了被客户端设备705、代理设备710、认证服务715和/或资源720中的一个执行的每个步骤。然而,方法步骤可以由客户端设备705、代理设备710、认证服务715、资源720和/或其组合中的任何一个来执行。如先前指出的,资源720和认证服务715可以由相同的服务器(或一组服务器)来提供。可选地,资源720和认证服务715可以由不同的服务器(或一组服务器)提供。为简单起见,方法步骤中的一些在图9A-C中被示出为由单个资源/认证服务实体(例如,服务器或一组服务器)执行。然而,认证服务可以由认证服务器(或成组的认证服务器)提供,并且资源可以由不同的服务器(或一组服务器)来提供。
[0133] 在步骤902中,用户可以被客户端设备705认证。例如,用户可以提供例如用户名和/或密码的凭证以登录到客户端设备705。
[0134] 在步骤904中,客户端设备705可以认证代理设备710。附加地或可选地,在步骤906中,代理设备710可以认证客户端设备705。换言之,客户端设备705和代理设备可以执行相互认证。为了执行认证,客户端设备705可以连接到使用具有服务器认证的SSL的代理设备710。代理设备710可以请求客户端设备705和/或客户端设备705的用户在授权访问代理设备710之前对代理设备710进行认证。在一些方面,客户端设备705可以使用企业客户端证书用于本认证。企业客户端证书可以是由客户端设备705使用以对文档和/或认证消息进行签名的相同的证书(如在下文示例中进一步详细描述的)。可选地,企业客户端证书可以包括不同的证书。例如,客户端设备705可以具有多个证书,其每个用于不同的目的。如果物理智能卡被使用,则多个证书可以被存储在相同智能卡或不同的智能卡上。
[0135] 类似地,客户端设备705可以请求认证代理设备710以确立代理设备710是已知的受信任的实体,并且可以请求资源的标识,用户被通过委托认证的方式通过代理来认证到该资源。客户端设备705还可以对代理设备710认证客户端设备705的用户(例如使用可用于设备、作为SSL握手的一部分的客户端证书,或通过在SSL连接内部运行单独的用户认证协议(例如,通过HTTP))。资源720还可以期望知道到资源720的访问正在由代理设备710介导(例如,通过使用资源访问协议)。因此,相互认证或识别可以针对所有三个实体执行:客户端设备705/用户、代理设备710和资源720。
[0136] 在认证和/或识别三个实体中的一个或多个之后,客户端设备705可以将针对一个或多个资源的请求发送到代理设备710,所述一个或多个资源例如为,web资源、企业资源(例如,来自网络文件服务器)或可以由代理设备710访问但可以要求基于客户端证书的用户认证的其它资源。对资源的请求可以由客户端设备705通过HTTP、HTTPS或由客户端设备支持的任何其它访问协议来发送。代理设备710可以将由客户端设备705使用的访问协议(例如,HTTP或HTTPS)转化为由资源使用的访问协议或从由客户端设备705使用的访问协议(例如,HTTP或HTTPS)桥接(bridge)到由资源使用的访问协议。在转化之后,代理设备710可以在步骤910中将请求转发到资源和/或认证服务或以其它方式尝试访问请求的资源。
[0137] 在步骤912中,资源可以请求来自代理设备710的认证。例如,资源可以指示将被执行的认证的类型(例如,SSL、基于域的认证(例如Kerberos)等等)。基于认证的类型,资源可以发送认证挑战(例如,Kerberos认证的401协商消息或SSL认证的客户端证书挑战)。对于Kerberos认证,PKINIT协议可以被使用,并且代理设备710可以执行PKINIT协议中的客户端的角色以将由客户端证书识别的用户认证到Kerberos领域(例如,MICROSOFT活动目录域)。资源服务器可以产生Kerberos认证挑战(例如HTTP 401协商)。对于SSL认证(例如,使用客户端证书),代理设备710可以向资源指出代理设备710能够访问用户的客户端证书和/或密钥。代理设备710可以尝试与资源的直接认证(而不是与如在Kerberos认证中的特定的域)。
附加地或可选地,代理设备710可以意识到在尝试访问请求的资源之前需要认证。在任一情况下,代理可以确定和发起与资源的相关认证协议交互。这些交互可能涉及附加的实体(例如,运行由资源信任的认证服务的认证服务器)。
[0138] 在步骤914中,代理设备710可以确定可以用于发起与资源(或具有资源的服务器)的安全的通信会话的会话密钥是否是可用的。会话密钥可以基于与资源或认证服务的先前认证会话已经先前由代理设备710获得并且被存储(例如,缓存)在代理设备。对于Kerberos认证,会话密钥可以与Kerberos票据(例如,票据授予票据(TGT)或其它有时间限制的票据)一起被存储。参考图8并且对于Kerberos认证,代理设备710的数据包引擎820可以调用其Kerberos认证响应逻辑,其检查以看看是否已经在会话缓存825中存在资源(例如,web资源)的服务票据。在一些方面,响应于检查,客户端侧认证模块830可以调用PKINIT(如果代理设备710知道客户端证书认证被需要和/或支持)。对于SSL认证,会话密钥可以用于恢复先前的SSL连接(例如SSL会话)。如果会话密钥(和/或票据)是可用的(步骤914:是),则代理设备710可以继续到使用会话密钥(和/或票据)的步骤954(获得请求的资源),如将在下文示例中进一步详细描述的。
[0139] 对于第一次认证,会话缓存可以是空的(例如,不存储有效的会话密钥和/或票据)(步骤914:否)。因此,代理设备710可以开始与资源的认证。参考图8并且对于Kerberos认证,数据包引擎820可以将内部PKINIT命令发布到客户端侧认证模块以获得TGT。为了进行认证,代理设备710可以确定其需要基于可由客户端设备705访问的客户端证书的一个或多个客户端证书和/或签名。这些证书和/或签名可能不可被代理设备710直接访问。参考图8,客户端侧认证模块830可以将命令(例如,内部P11获得证书命令)发送到PK操作代理SDK 835以获得来自客户端设备705的证书。客户端侧认证模块830可以包含Kerberos客户端实现,其支持例如标准PKCS#11库接口的公开密钥加密标准(PKCS)作为寻求PKINIT的合适的客户端证书的一种方式。PK操作代理SDK 835可以实现PKCS#11API功能的相关子集以支持PLINIT特征。
[0140] 在步骤916中,代理设备710可以将对客户端设备705可获得和/或可访问的证书的列表的请求发送到客户端设备705。该请求可以被编码到HTTP报头中。例如,该请求可以被编码在HTTP中的401状态码中,其指示认证被需要并且挑战客户端设备705用于认证。参考图8,代理SDK 835可以需要到数据包引擎820的定制接口,代理SDK 835可以使用其以使证书请求(例如,PK操作请求)被发送到客户端设备705并且接收结果(如果客户端设备705对请求做出响应)。如果证书请求需要被远程发送,则代理SDK 835可以将请求编码到二进制结构中(视情况而定具有加密/完整性包装器)并且提交给数据包引擎820。数据包引擎820可以引起具有定制认证挑战的HTTP 401响应被发送到客户端设备705以响应于初始的HTTP请求(包含被编码在WWW认证报头中的二进制结构)。
[0141] 在一些方面,代理设备710可能未接收到对应于对客户端设备705的证书的列表的请求的响应。特别地,不存在保证:客户端设备705将对证书(例如,PK操作)请求做出响应。例如,客户端设备705可能已经崩溃或以其它方式不能够对请求做出响应。此外,客户端设备705可能已经尝试获得用户同意来操作(例如,通过请求用户输入PIN以解锁密钥存储器
815),但是同意可能被拒绝。为了处理其中客户端设备705不返回客户端证书的列表的情况,代理设备710(例如代理SDK 835组件)可以使用超时(timeout)以最终放弃证书请求操作。代理设备710可以在这些情况下返回合适的错误代码。在PKINIT登录期间,一些PK操作可以被发送到设备,直到PKINIT登录成功、失败或被放弃或超时失效为止。
[0142] 在步骤918中,客户端设备705可以从代理设备710接收证书列表请求并且作为响应,识别可用于客户端设备705或以其它方式可访问客户端设备705的证书。例如并且参考图8,客户端设备705的MAMP框架805可以从代理设备710接收具有定制认证挑战的消息(例如,HTTP 401请求)。将其识别为证书请求(例如,PK操作“认证”协议),MAMP框架805可以将消息从接收的报头格式进行解码并且将二进制结构的消息传递到PK操作SDK 810。PK操作SDK 810可以了解可用的客户端证书。如先前指出的,客户端证书可以呈物理智能卡、虚拟智能卡等等的形式。PK操作SDK 810可以对请求进行解码(包含处理任何加密/完整性包装器),并且将其分派到适当的内部处理程序。处理程序可以处理请求并且产生可用的证书的列表。可以根据被请求的操作的相关性来过滤证书的列表(例如,以仅仅包括具有适当的密钥使用指示符的证书)。证书的列表可以被过滤直到仅仅剩余一个证书。例如,还可以通过将UI呈现给客户端设备705的用户来过滤列表以挑选应该被用于操作的证书。该列表可以以呈现操作结果的二进制结构。PK操作SDK 810可以将证书列表(其可以仍然以二进制结构)返回到MAMP框架805或者,如果列表不能被生成,发出错误条件信号。
[0143] 参考图9B,在步骤924中,客户端设备705可以将消息(包括可用证书的列表)发送到代理设备710。在一些方面,消息可以作为HTTP或HTTPS消息来发送。例如,MAMP框架805可以重放来自代理设备的原始的HTTP请求,但是使用附接到该请求的定制认证报头,其包括可用的证书的列表。在发送之前,消息可以被在加密/完整性包装器中密封和/或编码以适应HTTP报头。
[0144] 在步骤926中,代理设备710可以从客户端设备705接收消息(和解密/解码,如果有必要)。参考图8,数据包引擎820可以识别到:从客户端设备705接收的HTTP请求是由代理设备810发送的原始的证书请求的重发。数据包引擎820可以将来自认证报头的二进制结构的数据经由客户端侧认证模块830提交到代理SDK 835。代理SDK 835可以解包(unpack)二进制结构(包括加密/完整性包装器)并且将解包的数据返回到客户端侧认证模块830。接着,代理设备710可以(从证书列表)选择用于将代理设备710与资源/认证服务器进行认证的证书(例如适合于认证会话(即,以将代理设备710与资源/认证服务器进行认证)的证书)。在一些实施例中,Kerberos和SSL标准可以指定被期望或需要的密钥使用。例如,如果认证会话包括Kerberos认证,则代理设备710可以需要获得Kerberos票据并且可以选择适合于获得Kerberos票据的证书。如果在步骤924中客户端设备705返回多个证书,则代理设备710可以将选择请求发送客户端设备,寻求用户输入以从证书的列表进行选择。
[0145] 代理设备710和资源可以在认证会话期间继续交换消息。在认证会话期间的一个或多个点,代理设备710可以被需要利用客户端设备705的签名(例如,私人密钥)来执行加密的操作。私人密钥可能不直接可用于代理设备710。相反,私人密钥可能保持在客户端设备705的控制之下并且不直接暴露于代理设备710。代理设备710可以通过专门的通信信道与客户端设备705进行交互以获得签名(例如,私人密钥)。
[0146] 在步骤928中,代理设备710可以产生对相应于从客户端设备705选择的证书的签名的请求。代理设备710还可以产生将被签名的一段数据。对于Kerberos认证,该段数据可以包括使用选择的证书的认证服务请求(AS_REQ)消息。AS_REQ消息可以可选地随将被发送到客户端设备705的对签名的请求被包括。如果客户端设备需要在提供签名之前确定认证环境的全部细节,代理设备710可以将未签名的AS_REQ消息发送到客户端设备705。如果客户端设备和代理设备之间的通信协议和/或Kerberos认证实现不支持将AS_REQ消息发送到客户端设备705,代理设备710可以不将AS_REQ消息发送到客户端设备705。如将在以下示例中论述的,一旦AS_REQ消息已经被客户端设备705签名,代理设备710可以将签名的AS_REQ消息发送到认证服务715和/或资源720用于认证。
[0147] 在步骤930中,代理设备710可以确定认证环境信息将被包括在对签名的请求中。在一些方面,环境信息可能不限于大小或格式。例如,代理设备710可以将环境信息作为二进制大对象(BLOB)发送。通常,环境信息可以包括识别代理设备710和资源/认证服务器之间的认证会话的信息。如将在以下示例中进一步详细描述的,客户端设备705可以使用环境信息以验证或以其它方式确认代理设备710和资源/认证服务器之间的认证会话。
[0148] 现在将提供环境信息的内容的示例。环境信息可以识别在代理设备710和资源/认证服务器之间先前交换的认证信息的数据结构。例如,如果代理设备710和资源已经交换了认证消息,并且当前在认证的过程中,则环境信息可以包括交换的认证消息的全部或一部分。附加地或可选地,环境信息可以识别将由代理设备710在将来发送到资源/认证服务器的认证信息的数据结构。例如,在Kerberos认证中,环境信息可以包括将由代理设备710发送到资源/认证服务器的部分或全部AS_REQ消息。
[0149] 环境信息可以包括与认证会话相关的时间戳信息。时间戳可以识别如由代理设备710确定的当前时间。对于Kerberos/PKINIT,认证服务715和/或资源720可以在认证期间验证时间戳。一般而言,时间戳应当在由认证服务715和/或资源720确定的当前时间的合理的紧密容限内(例如,在X秒内)。因为时间戳用于进行代理设备710与认证服务715和/或资源
720的认证,所以时间戳还可以用于由客户端设备705验证。更大的容限阈值(例如,X+Y秒)可以由客户端设备705使用,因为客户端设备705和代理设备710可能不如代理设备710和认证服务715在时间上密切地同步。客户端设备705可以使用时间戳信息以验证认证会话是最近的(例如,在最近一分钟内、在最近一天内等等)。
[0150] 环境信息可以识别被代理设备710和资源/认证服务器使用的认证协议的类型。例如,如果Kerberos认证被使用,则环境信息可以总体上识别Kerberos或如果Kerberos的PKINIT特征被使用,则环境信息可以识别PKINIT/Kerberos。作为一个示例,“为PKINIT签名”可以被使用。环境信息还可以识别请求签名的应用或特定的代理设备710实现。例如,“由NetScaler为PKINIT签名”或“由XenApp为PKINIT签名”可以被使用。如果SSL认证被使用,则环境信息可以识别SSL。作为一个示例,“为SSL客户端认证签名”可以被使用。环境信息还可以识别代理设备710正在执行哪个SSL认证操作(例如,操作1、操作2等等)以及代理设备710正在进行与哪个资源的认证。
[0151] 环境信息可以识别代理设备710从由客户端设备705提供的证书列表选择的证书(例如,步骤926)。通过提供选择的证书,客户端设备705可以能够断定正由代理设备710和资源使用的认证协议的类型。
[0152] 环境信息可以识别认证会话的数据结构(例如Kerberos数据结构或SSL数据结构)。例如,Kerberos认证会话可以包括抽象语法标记1(ASN.1)结构,代理设备710可以经由环境信息对其进行识别。特别地,将被签名的可以是AS_REQ的部分的AuthPack可以具有客户端设备705可以识别的定义明确的ASN.1结构。对于SSL认证,数据结构可以包括证书验证(CertificateVerify)结构。
[0153] 环境信息可以包括客户端设备705可以用于验证认证会话的特定的信息片段。特定的信息片段还可以用于识别认证会话的数据结构。例如,如果认证会话包括Kerberos认证,则环境信息可以包括例如与Kerberos认证相关的校验和、用于Kerberos认证的Kerberos域(例如,特定的认证服务器服务的领域)、与客户端设备705相关的Kerberos主体名(例如,分配给客户端设备705的用户名)、用于认证会话的密钥分配中心(KDC)的标识符、请求的票据的有效期(例如,TGT票据或会话票据)和在认证会话期间已经被设置的Kerberos标记(例如,基于到目前为止在代理设备710和资源/认证服务器之间交换的认证消息)。客户端设备705可以验证的示例标记是“可转发的”标记,其可以指示产生的票据可以被转发到另一个设备。如先前指出的,将被客户端设备705签名和将被发送到资源/认证服务器的AS_REQ消息的一部分或全部可以被发送到客户端设备705。
[0154] 对于SSL认证,特定的信息片段单独可能不足以使客户端设备705识别代理设备710和资源/认证服务之间的SSL认证会话的环境。例如,特定的信息片段将对于客户端设备
705将看起来像是随机的数据,因为SSL认证创建已经在代理设备710和资源之间往返的整个系列的数据包的散列。因此,在一些实施例中,用于SSL认证的环境信息可以包括在请求来自客户端设备705的签名之前在代理设备710和资源之间的全部(或接近全部)认证对话。
换言之,全部的SSL操作(例如,握手消息)可以被提供到客户端设备705。代理设备710产生SSL操作执行的累积摘要。因此,客户端设备705可以检查客户端设备705期望检查的握手的任何部分,允许客户端设备705确认正被访问的资源的身份和确认握手是良好形成的。在一些方面,代理设备710可以将全部的SSL握手进程通过证书操作接口委托给客户端设备705。
当握手完成时,客户端设备705可以针对客户端和代理之间的专门的通信信道提供受到密钥交换保护的主秘密。
[0155] 在步骤932中,客户端设备705可以从代理设备710接收对签名的请求并且提取包括在其中的环境信息。例如,客户端设备705可以对请求信息进行解码和/或解密。环境信息的示例被先前列出。在步骤934中,客户端设备705可以尝试验证环境信息。客户端设备705可以使用环境信息以验证代理设备710和资源/认证服务器之间的认证会话是有效的。例如,客户端设备705可以使用环境信息以确定代理设备710正在与资源/认证服务器进行通信和在它们之间发生的通信的类型。客户端设备705可以认识到资源认证协议或代理的认证环境的相关部分(或全部)足以使客户端设备705自身满足例如被访问的资源是想要的资源、被请求的加密的操作是期望的协议的部分以及加密的操作的结果将或可以仅仅有用地用作在代理设备710和资源之间的特定的协议交互的部分。例如,客户端设备705可以检查已经要求客户端设备705签名的数据(例如,用于Kerberos认证的AS_REQ消息),以确保数据(或附加的数据)对应于由期望的认证协议的构建使用的公知的结构(例如,Kerberos、SSL等等)。该数据还可以潜在地包括可以由客户端设备705验证的特定的数据元素。可选地或附加地,客户端设备705可以在客户端设备705提供签名之前在该数据中寻找可识别的和/或可验证的期望的结构。
[0156] 如果环境信息未通过验证(步骤934:否),则客户端设备705可以发送指示环境信息不能通过验证的消息。例如,客户端设备705可以发送不包括请求的签名的响应。对于Kerberos认证,如果时间戳在由客户端设备705设置的容限阈值之外,则验证可能失败。对于SSL和Kerberos认证,客户端设备705可以对认证/资源服务器证书执行证书链验证,其由于很多原因中的任何原因可能失败。Kerberos的证书链验证可能需要单独的PK操作步骤(处理AS_REP,其是对AS_REP的回复)。对于SSL,如果代理设备710和资源之间的SSL认证消息的相关部分被发送到客户端设备705,则链验证可以是可能的。
[0157] 在一些方面,如果客户端设备705不能基于已经由代理设备710提供的环境信息进行验证,则客户端设备705可以请求来自代理设备710的附加的环境信息。如果代理设备710决定提供附加的环境信息,则代理设备710可以返回到步骤930并且找到附加的环境信息以提供给客户端设备。附加的环境信息可以具有不同类型的环境信息。例如,如果代理设备710先前提供了识别代理设备710选择的证书的信息,则代理设备710可以提供来自在代理设备710和资源/认证服务器之间交换的认证信息的特定的信息(例如,在Kerberos认证会话期间设置的Kerberos标记或在SSL认证会话期间交换的握手信息)。代替发送没有签名的消息,客户端设备705可能不对代理设备的签名请求做出响应。
[0158] 在步骤938中,代理设备710可能产生指示签名是不可用的消息并且将该消息转发到资源/认证服务器。在步骤970中,资源/认证服务器可以确定代理还未被认证,并且作为响应,可以终止认证会话。换言之,资源/认证服务器可能不向代理提供会话密钥(或票据,在Kerberos的情况下)。
[0159] 环境信息可以通过验证(步骤934:是)。对于Kerberos认证,如果例如接收的时间戳在客户端设备的当前时间的容限内和/或如果在接收的AuthPack中的校验和匹配由客户端设备计算的校验和(在其中AS_REQ被提供为环境信息的情况下),则验证可能成功。如果环境信息通过验证,则在步骤942中,客户端设备705可以使用证书对由代理设备710提供的数据进行签名,证书可以已经在步骤926中由代理设备710选择。例如,对于Kerberos认证,如果代理设备710将未签名的AS_REQ消息提供给客户端设备705(例如,在步骤930中),则客户端设备705可以对AS_REQ消息进行签名。如先前指出的,提供未签名的AS_REQ是可选的。作为可选方案,对于Kerberos和SSL认证两者,由代理设备710提供的数据可以包括任何数据块(例如八位字节序列),根据其签名将被计算。在对数据进行签名之后,客户端设备705可以在步骤944中将具有签名和/或签名的数据的消息发送给代理设备710。
[0160] 在步骤946中,代理设备710可以接收消息并且提取签名和/或签名的数据。例如,签名(其可以是另一个八位字节序列)可以返回到代理设备并且由代理设备插入到将被发送到资源或认证服务的适当的认证消息中,如将在下文进一步详细论述的。参考图8,数据包引擎820可以接收消息并且将该消息转发到代理SDK 835。代理SDK 835可以将签名提供给客户端侧认证模块830。
[0161] 在步骤948中,代理设备710可以将包括签名的认证消息发送到资源/认证服务器。认证消息可以响应于在步骤912中由资源/认证服务器发送的认证请求。一般而言,认证消息可以用于获得用于代理设备710的会话密钥以获得由客户端设备705请求的资源。在Kerberos认证中,例如,认证消息可以包括用于获得会话密钥和票据(例如TGT)的AS_REQ消息,该会话密钥和票据可以被代理设备710使用以获得用于与资源的安全的通信会话的票据。如果代理设备710从客户端设备705接收签名的AS_REQ消息,则代理设备710可以将签名的AS_REQ消息转发到资源/认证服务器。如果代理设备710单独地接收到签名,则代理设备
710可以产生AS_REQ消息并且将签名附加到AS_REQ消息。在一些方面,AS_REQ消息可以被以PA-PK-AS-REQ格式(如在RFC4556中描述的,其通过引用以其整体并入本文)进行编码。
[0162] 在步骤950中,资源/认证服务器可以接收认证消息并且确定该认证消息是否具有有效的签名。如果签名是无效的,则资源/认证服务器可以执行步骤970,其被先前论述(例如,确定代理设备710未认证和/或终止与代理设备710的认证会话)。
[0163] 在步骤952中,如果签名是有效的(步骤950:是),则资源/认证服务器可以产生和/或发送会话密钥到代理设备710。在Kerberos认证中,资源/认证服务器还可以发送票据(例如TGT或服务票据)到代理设备710。可以使用代理设备710和/或客户端设备705可以解密的另一个密钥来封装会话密钥和/或票据。在一些方面,消息可以作为Kerberos AS_REP消息来发送。
[0164] 在步骤953中,代理设备710可以接收会话密钥和/或票据并且存储(例如,缓存)会话密钥和/或票据。它们可以被缓存以供随后使用。例如,如果客户端设备705请求附加的资源,则会话密钥和/或票据可以被在将来使用。参考图9A,在步骤914中,在代理设备710下一次需要为客户端设备705获得资源时,代理设备710可以确定会话密钥是可用的。参考图8并且对于Kerberos认证,客户端侧认证模块830可以用TGT和/或服务票据和它们的相应的会话密钥来填充Kerberos票据缓存用于用户会话。
[0165] 在一些实施例中,代理设备710可能不具有密钥以对具有从资源/认证服务器接收的会话密钥和/或票据的消息进行解密。相反,例如,如果客户端设备705不完全信任代理设备710,则客户端设备705可以控制到密钥的访问。在这些实施例中,代理设备710和客户端设备705可以可选地交换附加的一组消息(例如,在附加的证书操作中)以对包括会话密钥和/或票据的封装的消息进行解密。此交换可以发生来代替代理设备710在步骤953中对会话密钥和/或票据进行解密和存储。
[0166] 例如,在Kerberos认证中,PKINIT可以使用Diffie-Hellman密钥交换以协商AS回复密钥用于包装TGT会话密钥,如在RFC4556中的章节3.2.3.1中描述的,其通过引用以其整体并入本文。可选地,公开密钥加密可以被KDC利用以加密其利用证书的公开RSA密钥来产生的AS回复密钥,如在RFC 4556中的章节3.2.3.2中描述的。这可以促使代理设备710请求客户端设备705对回复密钥进行解密。在这些示例中,客户端设备705可以选择保留它所保护的回复密钥和其它密钥,例如TGT会话密钥,以允许它对任何使用TGT来请求另外的票据进行控制(并且如果它期望的话,也控制这些服务票据的使用)。因此,代替在步骤953中代理设备710存储会话密钥和/或票据,客户端设备705可以存储会话密钥和/或票据。如果客户端设备705对代理设备710具有适度的信任但不是全部的信任,则这可能是适当的。
[0167] 现在将描述关于使用公开密钥加密的另外的细节。如果RSA公开密钥加密被用于返回AS回复密钥,则代理设备710可以向客户端设备705请求利用从资源接收的会话密钥和/或票据对在回复消息的数据字段中的子结构进行证书私人密钥解密,所述数据字段例如为KRB-AS-REP回复消息的encKeyPack字段。得自于由客户端设备705进行的解密的二进制大对象可以是签名的数据结构(如在RFC3852的章节5.1中限定的,其通过引用以其整体并入本文)。签名的数据结构可以具有内容类型id-pkinit-rkey数据和包含如在RFC4556的章节3.2.3.2中限定的ReplyKeyPack结构的内容字段。关于签名的数据的签名字段可以包括允许客户端设备705执行证书路径验证以确认KDC的身份的KDC的证书。因此,如果RSA公开密钥交换被使用,则客户端设备705可以具有完全验证代理设备710正在向其认证的KDC的身份的能力。如果Diffie-Hellman密钥交换被使用,则代理设备710可以看到KDC的证书并且执行路径验证。代理设备710可能不需要使客户端设备705涉及完成密钥交换。
[0168] 可选地,客户端设备705可以对代理设备710具有高度信任并且允许代理设备710对包含会话密钥和/或票据的消息进行解密。在这些实施例中,代理设备可以解密消息并且存储会话密钥和/或票据,如先前参考步骤953描述的。例如,代理设备710可以控制Diffie-Hellman密钥交换,其允许代理设备710恢复(例如,与TGT相关的)会话密钥而不需另外的客户端设备705支持。在这种情况下,代理设备710可以由客户端设备705授予无约束委托权限,因为代理设备710可以行使对TGT的全部控制。
[0169] 附加地或可选地,代理设备可以利用Microsoft活动目录环境以获得会话密钥和/或票据。在Microsoft活动目录环境中,代理设备710可以支持PKINIT过程的扩展,其允许代理设备710从域控制器接收用户的密码散列(例如,NTLM凭证)。这允许代理设备710响应于NTLM认证挑战以及Kerberos认证挑战。除非客户端设备保持AS回复密钥以便保持对TGT会话密钥的控制(如先前描述的),代理设备710和客户端设备705之间可以不需要附加的交互以恢复NTLM密码散列,因为它可以被利用用于传达TGT会话密钥的相同的AS回复密钥进行加密。
[0170] 在步骤954中,代理设备710可以使用会话密钥获得请求的资源。在步骤956中,服务器或其它数据库可以基于会话密钥提供请求的资源。对于Kerberos认证,资源/认证服务器可以已经在步骤952中提供了TGT和相关的会话密钥。在该示例中,代理设备710可以代表客户端设备705的用户通过使用TGT获得用于请求的资源的附加的Kerberos服务票据来执行内联认证。参考图8,如果PKINIT和Kerberos票据取出成功以重试到资源的代理HTTP请求,则客户端侧认证模块830可以通知数据包引擎820。这可以在会话密钥/票据缓存被填充时执行。数据包引擎820可以附加包含从服务票据和会话密钥产生的适当的Kerberos二进制结构(AP_REQ)的认证报头以获得资源。如先前指出的,客户端设备705可能不完全信任代理设备710。在这些示例中,客户端设备705可以保留拥有TGT会话密钥,并且可以当请求关于单独的资源的服务票据时可能需要代理设备710与客户端设备705交互。以这种方式,客户端设备705可以确保由代理设备710代表自身被访问时的资源的身份的可见性。
[0171] 在步骤958中,一旦代理设备710获得了资源,则代理设备710可以发送资源到客户端设备705。在步骤960中,客户端设备705可以接收请求的资源并且根据需要对其进行使用,例如通过访问数据或服务(例如企业数据或服务)。如先前论述的,数据和服务可以被在数据仓库616中进行加密以保护客户端设备705上的数据或服务。
[0172] 在一些实施例中,客户端设备705可以使用VPN隧道(例如,通过代理设备710)或其它类型的通信信道与资源720(例如Sharepoint)进行通信。代替代理设备710从资源720接收资源认证挑战(例如,在图9A中示出的步骤914中),客户端设备705可以经由VPN隧道接收挑战。客户端设备705可以建立与代理设备710的第二并行对话(或通过先前建立的信道与代理设备进行通信)以使代理设备710能够帮助认证。这是有利的,因为客户端设备705可能不具有执行特定类型的认证(例如,Kerberos认证)的功能。在第二并行对话期间,客户端设备705可以将资源认证挑战呈现给代理设备710。代理设备710可以然后与认证服务715进行通信(例如KDC,在Kerberos认证的情况下)并且获得客户端设备705访问资源所需的会话密钥(和Kerberos票据,在Kerberos认证的情况下)。此时,在客户端设备705、代理设备710和认证服务715之间执行的步骤可以包括例如先前参考图9A-C中论述的步骤914,916,918,924,926,928,930,932,934,936,938,970,942,944,946,948,950,952,和/或953中的任一个。在代理设备710从认证服务715接收会话密钥和/或票据之后,代理设备710可以通过客户端设备和代理设备之间的安全通信信道将密钥和/或票据返回到客户端设备705。客户端设备705可以现在使用该会话密钥和/或票据对从资源720接收的资源认证挑战进行响应并且获得请求的资源。可选地,代替代理设备710将密钥和/或票据返回到客户端设备705,代理设备710可以本身构建对资源认证挑战的响应并且将认证响应发送到客户端设备705。客户端设备705可以将该响应转发到资源720以获得请求的资源。
[0173] 在图9A-C中示出的步骤可以被应用以对文档(例如电子邮件或其它文档类型)进行签名和/或对由证书私人密钥保护的数据进行解密。在对文档进行签名的示例中,代理设备710可以向客户端设备705提供作为本文描述的环境信息的、待被签名的文档。
[0174] 图9A-C中示出的步骤还可以被应用于虚拟化环境,例如桌面和/或应用虚拟化。在虚拟化环境中,客户端设备705可以运行虚拟化应用,例如图6中示出的客户端代理604,或用于建立远程显示连接的任何其它客户端应用(例如,CITRIX ICA、CITRIX RDP等等)。如先前指出的,客户端设备705还可以保护私人证书(例如,存储在物理或虚拟智能卡中的密钥)。
[0175] 代理设备710可以包括应用或桌面虚拟化服务器(例如图3中示出的虚拟化服务器301)或是其的一部分。这样的服务器可以运行应用并且可以与资源(例如,企业资源)进行通信。在虚拟化环境中的代理设备710和客户端设备705之间的通信可以通过显示远程协议(例如,CITRIX ICA协议或CITRIX RDP协议)进行处理。资源可以包括以上指出的企业资源
504、508和/或608和/或企业服务508和/或609。
[0176] 在一些实施例中,图9A-C中示出的步骤可以用于虚拟化环境。可选地,可以进行一些变化。客户端设备705和代理设备710之间的HTTP通信可以利用使用显示远程协议(例如CITRIX ICA协议或CITRIX RDP协议)的通信进行替换。PKOp代理SDK 835可以包括第三方应用。因此,以上描述的由PK操作代理SDK 835执行的步骤可以由第三方应用执行。在一些方面,代理设备710可以调出第三方应用以执行这些步骤。
[0177] 现在将描述示例虚拟化实施例。其中虚拟化服务器运行OS(例如,Microsoft Windows)的标准OS Kerberos实现可以被使用。例如,Kerberos安全服务提供商(Kerberos SSP)认证数据包(SSP/AP)可以被使用。到Kerberos SSP的各种编程接口可以被使用,其包括但不限于LsaCallAuthenticationPackage和KERB_CERTIFICATE_LOGON。智能卡等价物客户端证书结合定制凭证提供商和定制密钥存储器提供商(KSP)可以用于调用先前论述的PKINIT Kerberos登录协议。KSP可以暴露于PKINIT的特定的协议元素,其可以被用私人密钥(例如,AuthPack结构的校验和)来签名。此外,Kerberos SSP可以使用OS API以调用加密的操作(例如,用于计算校验和的散列API,其是在生成签名中的初始步骤)。通过截获由Kerberos SSP进行的散列API调用,协议元素(基于其将计算签名)可以被看到。通过使用定制SSP可以截获散列API调用,定制SSP被加载到受信任的LSASS过程中,其中Kerberos SSP执行PKINIT。
[0178] 如先前指出的,将被签名的元素可以包括在RFC4556的章节3.2.1中描述的AuthPack结构。此外,协议元素可以具有一些形式良好的结构,例如遵循ASN.1二进制编码规则的结构。此外,结构可以包括表示当前时间的时间戳,这允许客户端设备705针对客户端设备自己对当前时间的认识来执行基本验证检查。为了允许在实践中可以是可能的时间变化,客户端设备705可能希望允许比例如认证服务器(例如,KDC)将允许的更广泛范围的变化。例如,客户端设备705可以接受在其自身的时间值的24小时内的时间值而不是KDC可以允许的5分钟。
[0179] 在一些实施例中,KSP可以可靠地定位KRB-REQ-BODY二进制结构,其可以已经在调用证书签名操作(其最终调用KSP)之前在Kerberos SSP中准备。如果该结构可以被定位(例如从堆栈审核回到Kerberos SSP),则AuthPack的全部验证可以是可能的。可选地,通过截获由Kerberos SSP进行的OS散列API调用,以计算KRB-REQ_BODY的校验和作为AuthPack结构的准备的部分,KRB-REQ-BODY结构可以是直接可见的。结构的副本可以然后由代理设备710发送到客户端设备705作为PK操作请求的部分。类似地,AuthPack结构可以作为签名结构的部分对散列API是可见的。如先前指出的,客户端设备705和代理设备710之间的特别的通信信道可以包括定制GSS-API机制。在虚拟化实施例中,特别的通信信道可以在显示远程协议中的虚拟信道内部。例如,SSPI虚拟信道可以被使用。在一些方面,如果SSPI协商不能完成认证本身,则由显示远程协议支持的其它认证方法可以被代替使用。
[0180] 在一些实施例中,本文描述的方面可以应用于CITRIX XenAPP和/或XenDesktop。XenApp和XenDesktop可以支持使用智能卡虚拟信道(其将远程化智能卡读卡器接口(例如,PC/SC))的智能卡远程化。为了Windows登录的目的,本文描述的方面可以替换PC/SC远程化。一旦会话已经被建立,则智能卡可以被访问例如以支持使用智能卡以对文档进行签名的应用。这可以通过以下方法来实现:适当地配置由XA/XD使用的智能卡API钩子,引起它们不应用在Windows登录过程(例如,winlogon.exe、logonui.exe等等)中,但是仍然正常应用于其它过程。
[0181] 从客户端设备705的角度来看,被远程化的证书操作可以与PKINIT的特定的形式相关(例如,“从XenApp为PKINIT签名”),并且用于PKINIT的智能卡环境可以在终结时被立即释放,使得应用引起附加的PIN提示(如果需要的话)。附加地或可选地,智能卡环境可以在PKINIT请求之前已经被使用(例如通过客户端设备705)以对SSL执行到代理设备710或到另一个设备或服务器的客户端证书认证。以这种方式,单个PIN提示可以足以实现由客户端设备705到代理服务器的认证,其识别将被用于资源访问操作的代理设备710(来自可以执行该服务的多个设备)。被选择的代理设备710可以然后执行PKINIT而无需附加的PIN提示并且不需要使所需的明确的PIN由客户端设备705缓存。在到应用或桌面虚拟化服务器的域登录的情况下,对于远程智能卡认证的传统的方法,可以实现重要的性能改进。此外,这可以被实现而无需实现全部的读卡器和关于虚拟智能卡的智能卡接口。
[0182] 可以进行对以上描述的方面的各种修改。每个实体(客户端设备705、代理设备710、认证服务715和/或资源720)可以意识到其它实体的活动。例如,每个实体可以被提供有关于其它实体中的一个或多个的标识符。可以在先前关于附图9A-C描述的消息交换中的任何一个期间提供标识符。例如,代理设备710可以将识别客户端设备705的信息注入到代理设备710发送到资源/认证服务器的信息数据包中。代理设备710还可以将识别资源/认证服务器的信息注入到代理设备710发送到客户端设备705的信息数据包中。以类似的方式,客户端设备705(例如,PC、平板电脑、智能电话等等)的类型可以被提供到其它实体。在一些方面,如在据此通过引用以其整体并入本文的RFC6113中描述的Kerberos协议扩展(例如,MS-KILE)可以被利用以使得实体的活动是其它实体可利用的。通过将识别信息提供到资源
720,资源720可以确定谁正在访问数据和/或也限制到数据的访问。
[0183] 对于Kerberos的情况,在一些实现中(例如,Windows服务器2012实现)在网络服务认证期间提供两个主要的身份是可能的。代理设备710可以使用其自身的Kerberos身份(例如,TGT)以对TGS交换进行“装甲(armor)”(如在微软Kerberos协议扩展文档[MS-KILE]和RFC6113中描述的)。该技术被称为FAST(也在RFC6113中进行了描述)。关于用户/客户端设备705和代理设备710的复合身份可以被创建。在Windows服务器2012中,该复合身份可以被暴露于资源,其在Windows ACL框架的顶部操作,其具有使ACL检查机器身份和其它要求的能力。虽然已经描述了Windows服务器2012实现,但是本领域的普通技术人员将认识到:可以利用使用不同的操作系统的任何其它实现。
[0184] 代理设备710可以使用广义的要求机制以也提供与客户端设备705本身相关的信息,其将反映其身份(如果从其它装置获知,例如由SSL到代理设备710的设备证书认证)或设备的其它相关属性,例如其类型、OS、版本或安全状态,其可以在认证或资源访问过程期间从客户端设备705到代理设备710得知)。
[0185] 对以上描述的方面的另一个修改可以包括调节用户体验以通知使用客户端证书的操作的用户。代理设备710提供到客户端设备705的信息可以显示给用户。在另一个示例中,显示器可以指示客户端设备705在登录过程的中间,其还可以利用客户端证书。PIN提示还可以被显示(例如针对使用1类读卡器的智能卡)。可以提供到用户的忠实地表示将被进行的操作的更详细的显示。例如,对于用客户端证书对文档进行签名,文档可以被显示给用户用于回顾。还可以显示将被执行的事务的合适的概要指示符。可以在智能卡读卡器类别中的任何一个(例如4类)中使用详细的显示。在一些实施例中,客户端设备705可以模拟智能卡读卡器(或支持使用这样的读卡器(如果与物理智能卡交互))。
[0186] 与用户的不必要的交互可以被避免。例如,远程证书操作的范围可以被适当地分组(例如,有界的),使得其是相同的组的部分的多个操作(例如,一组使用相同的资源认证协议的操作)可以被识别为相同的组的部分,并且逻辑组可以被创建。在一些方面,针对相同的组内的操作,一个信息显示或提示可以被显示给用户。大约来说,该逻辑分组对应于在传统的物理智能卡的情况下获得和释放智能卡环境。
[0187] 尽管已经以特定于结构特征和/或方法行为的语言描述了主题,但是应当理解的是,在所附权利要求中定义的主题不必限于以上描述的特定的特征或行为。相反,以上描述的特定的特征和行为被描述为所附权利要求的示例实现。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈