实施方式提供了提高了使用远程装置激活用户装置上的应用程序的便利性的方法和设备。在一个实施方式中,响应于通过第二应用程序对激活响应的请求,用户装置上的第一应用程序将激活响应提供给用户装置上的第二应用程序。该激活响应包含激活数据,然后,该激活数据被第二应用程序使用以利用远程装置进行激活。这允许通过第一应用程序获得激活数据,而非从另一个来源(诸如发送给用户的电子邮件)获得激活数据。
该方法可以进一步包括:通过第一应用程序从远程装置请求激活响应;并且通过第一应用程序接收来自远程装置的用于提供给第二应用程序的激活响应。在这个实施方式中,第一应用程序被用作第二应用程序的代理,以从远程装置请求激活数据。因为已经使用远程装置激活了第一应用程序,故该远程装置可以委托第一应用程序向其提供激活数据。因为不需要额外的激活信息源,例如,电子邮件,故为用户简化了应用程序激活。
第一应用程序还可以获得第二应用程序的应用程序数据,然后,在请求来自远程装置的激活响应时提供应用程序数据。这可以提供进一步的安全性,例如,在提供激活响应之前,允许远程装置检查应用程序数据。可以通过任何合适的方式来获得应用程序数据,例如,可以从被包含在从第二应用程序到第一应用程序的请求内的元数据提取该应用程序数据,并且涉及关于应用程序的任何信息,例如,标识符或名称。
该方法可以进一步包括:通过第二应用程序从用户装置上的可以提供激活响应的一个或多个其他应用程序的组选择第一应用程序。用户装置上的一个以上的应用程序可以提供激活响应。在这种情况下,第二应用程序选择从其请求激活响应的特定应用程序。在一个实施方式中,从远程装置请求用户装置上的可以提供激活响应的一个或多个其他应用程序的组的细节。在另一个实施方式中,从与利用其请求激活的远程装置不同的第二远程装置请求用户装置上的可以提供激活响应的一个或多个其他应用程序的组的细节。
第一应用程序可以认证用于第一应用程序的用户证书。然后,仅仅响应于通过第一应用程序对用户证书的成功认证来提供激活响应。这通过在提供激活响应之前认证或重新认证用户证书而提高了激活系统的安全性。
用户可以将现有证书用于第一应用程序。这具有进一步的优点:用户已经知道证书并且不需要记住或从别处复制代码,例如,电子邮件。在一些实施方式中,第一应用程序始终提示用户在给第二应用程序提供激活响应之前认证证书。在其他实施方式中,第一应用程序可以在使用期间已经在用户装置上,并且预先请求用户认证,用于激活另一个应用程序或另一个目的,并且在这种情况下,如果从另一个应用程序接收激活请求,而不提示进一步进入证书,那么可以使用早先的认证。这不如始终提示用户证书安全,但是可以更方便。例如,如果用户在激活请求的预定时间内(例如,在5分钟、10分钟或15分钟内)向第一应用程序提供认证,那么可以使用第一应用程序的早先的认证。认证可以包括请求用户装置上的第一应用程序进入用户证书。可以在触摸屏上请求任何合适的认证,包括用户名和密码、生物识别ID(例如,指纹)以及预先定义的姿势。
该方法可以进一步包括:通过第一应用程序从远程装置请求用于第二应用程序的显示名称;由该第一应用程序接收该第二应用程序的显示名称;并且请求用户确认应激活具有显示名称的应用程序。响应于用户的合适的确认发送激活请求,否则不发送。这提高了该方法的安全性,这是因为第二应用程序的身份由远程装置独立验证,故可以允许识别恶意应用程序。远程装置可以是用于激活的相同的装置或者单独的远程装置。显示名称可以由远程装置以任何合适的方式进行确定。例如,第二应用程序可以具有唯一标识符,将该唯一标识符传送给远程装置并且用于查找与唯一标识符相对应的所存储的显示名称。
该第一应用程序可以具有与提供激活响应不同的主要功能。例如,第一应用程序可以将激活响应作为额外特征提供给其主要功能。
至少在下一次在该用户装置上启动该第二应用程序时,可以不重复该第二应用程序的激活。在一些实施方式中,第二应用程序的激活仅仅执行一次。例如,激活可以是一次性处理,以能够使用用户装置上的应用程序。
由第二应用程序对激活响应的请求可以包括相关代码(associated code)。然后,该相关代码可以与激活数据一起被第二应用程序用于请求激活中。相关代码可以是临时或其他单个或限制使用的代码,并且可以具有任何机器可读格式。例如,相关代码可以是随机生成的数。
在另一个实施方式中,远程装置响应于来自第一应用程序的请求,将用于该第二应用程序的包括激活数据的激活响应传输至该用户装置上的该第一应用程序。已使用该远程装置激活了第一应用程序,因此,可以通过远程装置委托第一应用程序。
在另一个实施方式中,响应于通过远程装置接收用户装置上的可用于激活软件装置上的其他应用程序的应用程序的细节的请求,该远程装置:识别该用户装置上的使用该远程服务器激活的并且可以向远程服务器提供用于其他应用程序的激活服务的应用程序;以及将所识别的应用程序的细节传输至该用户装置。这允许用户装置上的应用程序请求用户装置上的可以被用于激活的其他应用程序的细节。
在图1中示出了其中实施方式可以起作用的系统的实例。系统包括用户装置2、储存库(repository)4以及控制服务器6。用户装置2、储存库4以及控制服务器6中的每一个包含至少一个处理器、非瞬时性存储器以及网络接口。网络8连接所有的用户装置2、储存库4以及控制服务器6。
虽然为了清晰起见描述了单个网络8,但是本发明不限于单个网络8。其他实施方式可以包括单独的互连网络和额外的网络元件,包括但不限于在从一个网络到另一个网络的转变点(transition point)处(例如,在控制服务器6与网络8之间)的防火墙和网关。例如,网络8可以是无线网络,例如,符合由3GPP所设定的标准的网络,包括但不限于通用移动电信系统(UMTS)、长期演进(LTE)以及先进的长期演进。网络8还可以符合其他无线网络标准,例如,IEEE 802.11 Wi-Fi标准和IEEE802.16 WiMAX标准。还可以使用有线和无线网络的混合。例如,在一些实施方式中,可以在储存库4与控制服务器6之间设置有线网络。
用户装置2可以是能够存储和运行应用程序的任何装置。例如,用户装置2可以是移动装置,例如,移动电话(包括所谓的“智能电话”)、平板电脑、个人数字助理、寻呼机、膝上型电脑、内容消费和/或生成装置或者包括可以被配置为运行用户安装的应用程序的处理器的任何其他便携式装置。用户装置2的处理器被配置为运行存储在非瞬时性存储器内的应用程序,然后,这些应用程序可以通过网络8访问数据。在一些实施方式中,已通过储存库4激活的存储在非瞬时性存储器内的至少一个应用程序要求通过储存库4激活其至少一些功能,并且可用于利用储存库4来代表用户装置上的其他应用程序接收激活请求。
储存库4负责至少部分激活并且可选地配置用户装置2上的至少一个应用程序。它具有处理器,该处理器被配置为与用户装置上的应用程序通信并且提供应用程序的激活和/或配置。
控制服务器6为企业提供一种用于控制用户装置2上的应用程序的配置和激活的设备。它具有处理器,该处理器被配置为允许管理员远程地配置和激活位于用户装置2上的应用程序。可以通过与用户装置2的直接或间接通信来进行配置和激活。例如,可以通过与用户装置2的直接通信或者通过经由储存库4的间接通信来进行激活。
用户装置2可以被配置为运行两个或两个以上的应用程序。为了确保安全地并且根据特定用户的许可来配置两个或两个以上的应用程序,在它们能够被使用之前,需要通过远离用户装置的储存库4和/或控制服务器6激活应用程序。网络管理员可以与控制服务器6交互以改变用于用户装置和/或用户的应用程序许可和配置。
图2描述了根据实施方式的在激活用户装置上的第一应用程序10和第二应用程序12的处理中的信号流。在这个实施方式中,第二应用程序12可以将第一应用程序10用于至少一部分激活处理,这简化了用于用户的激活处理。
首先,在步骤14中,用户装置的用户安装并第一次启动第一应用程序10。例如,用户可以从远程应用程序商店(未示出)下载安装文件或包。在第一次运行第一应用程序10时,在步骤16中,第一应用程序10提示用户电子邮件地址和激活码。通过发送给电子邮件地址的电子邮件将激活码告知给用户。例如,在管理员使用控制服务器6增加第一应用程序10的授权用户时,为用户生成用作激活码的字母数字访问密钥,并且将其通过电子邮件发送给用户。在步骤16中,用户响应于提示而输入激活码。
然后,第一应用程序10使用激活码以利用储存库4和控制服务器6两者进行激活。可以利用储存库4和控制服务器6两者激活同一个代码。可替换地,为了提高安全性,激活码的散列可以供储存库4使用,并且原始激活码可以供控制服务器6使用。在这种情况下,在控制服务器向用户发送激活邮件的同时,通过控制服务器6预先通知储存库4访问码的散列。
在步骤18中,第一应用程序10将激活码(例如,通过用户输入的激活码的散列)发送给储存库4。储存库4检查激活码的有效性并且在步骤20中通过供应数据而做出响应。例如,这可以包括密钥和服务器数据,以能够允许第一应用程序10与控制服务器6通信。
接下来,在步骤22中,第一应用程序将激活数据(例如,通过用户输入的激活码)发送给控制服务器6。控制服务器6检查应用程序的有效性,并且在步骤24中通过应用程序所需要使用的数据(例如,应用程序的配置数据和服务器数据)而做出响应。在一些实施方式中,可以包括另外的激活步骤,在这些步骤中,在第一应用程序10与控制服务器6之间交换数据。例如,额外步骤可以涉及交换随机数据以进一步确保连接。
然后,在步骤26中,第一应用程序10提示用户设置密码或其他形式的证书,例如,登记的生物识别ID。然后,这个密码或其他形式的证书用于向第一应用程序认证用户,并且这还可以用于保护加密密钥和其他数据。
第一应用程序向用户提供主要的应用程序服务,例如,电子邮件或文档访问服务。另外,第一应用程序10可以为用户装置2上的其他应用程序提供激活服务。这些激活服务可以对用户完全透明。在开发期间,可以将所提供的激活服务加入到第一应用程序10,例如,这些激活服务可以构成用于开发第一应用程序10的标准框架的一部分。在步骤28中,控制服务器6利用储存库4将第一应用程序10登记作为用户装置2上的应用程序,该应用程序可以利用控制服务器6为其他应用程序提供激活服务。
如上所述,使用通过一些其他手段(例如,电子邮件)提供的激活码,通过储存库4和控制服务器6来激活第一应用程序10。第一应用程序10可以在用户装置2上使用,而不需要进一步使用在步骤26中设置的密码或其他证书来激活。现在将描述通过储存库4和控制服务器6激活第二应用程序12。这利用了由第一应用程序10所提供的激活服务,使得用户不需要输入通过其他方式所接收的激活码。
在步骤30中,用户安装并且运行用户装置上的第二应用程序12。例如,将安装文件预先下载到用户装置中。开发第二应用程序12以允许使用用户装置上的提供激活服务的另一个应用程序进行激活。在无需激活而运行第二应用程序12时,该第二应用程序寻找用户装置上的提供激活服务的其他应用程序的细节。在步骤32中,第二应用程序12向储存库4发送用户装置上的提供激活服务的应用程序的细节的请求。例如,可以发送装置ID。在这个阶段,由于还未使用储存库4激活第二应用程序12,所以该请求是匿名的。在步骤34中,储存库4做出响应。
在这个实例中,在步骤34中发送的细节仅包括第一应用程序10,这是因为该应用程序是被安装以提供激活服务的唯一的应用程序。然而,如果用户装置包含提供应用程序服务的一个以上的应用程序,则在步骤34中可以返回一个以上的应用程序的细节。在已经被安装在用户装置上的一个以上的应用程序可以提供激活服务时,那些应用程序中的一个可以被标记为用于向其他应用程序提供服务的一个应用程序。因为已经被安装在装置上的各个应用程序会需要不同的证书,故这避免了使用户混乱。选择一个应用程序以提供激活服务意味着所需要的证书对于激活的各个额外的应用程序来说是一致的。
在步骤36中,第二应用程序12测试用户装置上的第一应用程序10的存在,以确保该第一应用程序被安装并且可用于使用。如果这个测试失败,那么第二应用程序12不尝试使用第一应用程序10进行激活。在这种情况下,可以测试在步骤34中通知提供应用程序服务的其他应用程序,或者可以使用通过其他手段所告知的代码,例如,用于激活第一应用程序10并且在上面所描述的电子邮件激活码来激活第二应用程序。
假设在步骤36中针对存在第一应用程序10的测试时成功的,那么在步骤38中,第二应用程序12将激活请求发送给第一应用程序10。例如,这个请求可以使用进程间通信(Inter-Process Communication)(IPC)。激活请求可以包含第二应用程序12的细节,第一应用程序10可以使用该第二应用程序的细节以识别第二应用程序,例如,唯一标识符、用于验证应用程序的来源的数字签名信息、应用程序名称等。关于第二应用程序12的信息还可以由第一应用程序10通过激活请求而从由操作系统提供的元数据进行聚集。在一些实施方式中,第一应用程序10可以利用远程数据源检查第二应用程序12的细节。例如,第一应用程序10可以使用唯一标识符从储存库4或控制服务器6检索第二应用程序12的名称。
基于用户装置的基础操作系统而可以通过不同方式来实现IPC。在一个实例中,如果用户装置正在运行iOS操作系统,那么第二应用程序12可以通过第一应用程序10登记处理的自定义方案(custom scheme),使用URL来进行初始的“openURL”调用。关于第一应用程序10特有的自定义方案的信息可以提供给第二应用程序12,作为由用户装置上的可以提供激活响应的一个或多个其他应用程序构成的组的细节的一部分。在这种情况下,openURL调用传送第二应用程序12的由操作系统提供的“捆绑ID(bundle ID)”。“捆绑ID”可以被用作第二应用程序12的唯一标识符。同样,第一应用程序10可以通过第二应用程序12登记处理的自定义方案,使用URL进行openURL调用来将信息返回第二应用程序12。可以将关于第二应用程序12特有的自定义方案的信息提供给第一应用程序10,作为由第二应用程序12进行的初始openURL调用的URL的一部分。一系列这种openURL调用可以用于在这两个应用程序之间交换嵌入URL内的信息。另外,openURL调用可以用于交换TCP端口信息,该TCP端口信息允许这两个应用程序在第一应用程序10与第二应用程序12之间建立本地TCP通信信道,可以通过该信道交换另外的信息。
在另一个实例中,如果用户装置运行Android操作系统,那么第二应用程序12可以将“Intent”发送给第一应用程序10。可以将对Intent寻址(尤其是对第一应用程序10寻址)所需的信息(例如,类别名称、包装名称、活动、URI等)提供给第二应用程序12,作为由用户装置上的可以提供激活响应的一个或多个其他应用程序构成的组的细节的一部分。在这种情况下,Intent传送第二应用程序12的由操作系统提供的“包装名称”。包装名称可以被用作第二应用程序12的唯一标识符。同样,第一应用程序10可以通过给第二应用程序12发送Intent来使信息返回至第二应用程序12。可以将对Intent寻址(尤其解决第二应用程序12的寻址)所需的信息提供给第一应用程序10,作为由第二应用程序12发送的初始Intent的一部分。一系列这种Intent可以用于在这两个应用程序之间交换信息。此外,Intents可以用于交换TCP端口信息,该TCP端口信息允许这两个应用程序在第一应用程序10与第二应用程序12之间建立本地TCP通信信道,可以通过该信道交换另外的信息。其他实例可以使用适合于用户装置的特定操作系统的其他机构。
一旦接收到激活请求,在步骤40中,第一应用程序10提示用户证书。例如,可以请求在上面描述的步骤26中设置的密码。如果该请求成功,那么处理继续进行至步骤42,否则,第一应用程序10停止处理激活请求。
接下来,在步骤42中,第一应用程序10提示用户确认需要安装第二应用程序12。这可以防止在不通知用户的情况下在用户装置上安装应用程序。如果第一应用程序10从远程数据源检索到应用程序名称,那么可以显示该应用程序名称并且确认请求,作为正在安装的应用程序的身份的进一步检查。如果确认接收,那么第一应用程序10继续进行至步骤44。如果确认不接收,或者在没有用户响应的情况下的预定时间到期之后,第一应用程序10停止处理激活请求。
在该处理中的这个阶段,在步骤40中,第一应用程序10通过请求证书来对用户进行认证,并且在步骤42中,用户确认需要安装第二应用程序12。在一些实施方式中,这些步骤例如可以通过请求用户证书进行组合来确认安装第二应用程序12,使得用户证书的成功输入被解释为确认安装第二应用程序12。
现在,在步骤44中,第一应用程序10对控制服务器6做出对激活数据的请求,第二应用程序12可以使用该激活数据进行激活。一旦接收到激活数据的请求,控制服务器6委托第一应用程序10对用户进行认证,并且在步骤46中,在生成发送给第一应用程序10的激活码或检索先前生成的激活码之前,检查授权用户或用户装置所使用的第二应用程序12。在一些实施方式中,控制服务器6可以具有额外的检查,在发送激活码之前,在储存库4内登记第二应用程序12。例如,这个额外检查可以使用由第一应用程序10收集的关于第二应用程序12的数据。然后,通过防止向不在储存库4内的应用程序提供激活码来提高安全性。
例如,使用SSL协议将第一应用程序10与控制服务器6之间的通信加密,以确保激活码的安全性。激活码可以是用于第一应用程序10的上述的字母数字代码。在其他实施方式中,激活码可以具有其他形式。例如,因为不需要将激活码显示给用户或者由用户输入该激活码,所以激活码可以具有任何机器可读格式。因此,激活码还可以作为比特流(例如,二进制数)来发送。
在步骤48中,第一应用程序10在激活响应中将激活码转发给第二应用程序12。因此,基于与控制服务器6相关联的数据生成激活响应。可以在激活响应中包括其他用于激活的激活数据,例如,用户标识符或电子邮件地址。然后,在步骤50中通过储存库4并且在步骤52中通过控制服务器6激活第二应用程序12。在图2中未描述另外的步骤,这是因为第二应用程序12的激活可以遵循与上面对步骤18到24所描述的处理相同的处理。一旦激活,则第二应用程序12还可以提示用户设置密码或其他证书,这与上述步骤26相似。
在这个实施方式中,第二应用程序12可以使用第一应用程序10以获得激活数据。而不是用户输入来自外部源(例如,电子邮件)的激活数据,用户输入先前针对第一应用程序10设置的证书。这给用户提供了更高的便利性。在一些实施方式中,在安装了第一应用程序10之后,控制服务器6可以继续向用户发送具有激活代码的电子邮件。在其他实施方式中,控制服务器6可以仅发送电子邮件,并且激活码电子邮件用于第一应用程序10,这是因为可以使用第一应用程序10的激活服务来激活应用程序。在用户安装了一些应用程序以避免混淆接收几个相似的具有激活码的电子邮件时,这会是有利的。
图3描述了根据另一个实施方式的在激活用户装置上的第一应用程序10和第二应用程序12的处理中的信号流。除了以下情况以外,在图3中的信号流与在图2中的信号流相同:在步骤29中,第一应用程序10通过储存库4对自身进行登记,作为用户装置上的可以为用于其他应用程序的控制服务器6提供激活服务的应用程序。这代替了图2的步骤28。这对于第一应用程序10来说是有利的,通过这种方式登记自身以减少关于第一应用程序10的可用性的对控制服务器6的状态报告,从而为其他应用程序提供激活服务。
一些实施方式在步骤38中发送的激活请求中包括临时、或单个、或限制使用的代码。例如,该临时代码可以是由第二应用程序12生成的并且由第二应用程序12保持在存储器内的随机数,以供稍后使用。在步骤38中,该临时代码(nonce)通过激活请求而被传输给第一应用程序10。然后,在步骤44中,第一应用程序10将临时代码转发给控制服务器6。参照步骤46,如上所述,由控制服务器6将激活码提供给第一应用程序10。控制服务器6将临时代码存储在存储器内以供稍后使用,并且使其与所提供的激活码相关联,但不通过该激活码传输该临时代码。在步骤52中,第二应用程序12从其存储器中检索临时代码,并且通过发送给控制服务器6的激活请求而包括该临时代码。一旦接收到请求,控制服务器6验证通过激活请求所发送的临时代码与和激活码相关联的存储在其存储器内的临时代码的匹配。只要验证临时代码,通过控制服务器6激活第二应用程序12。临时代码的使用将由控制服务器6提供的激活码限制为授权的激活请求的山下文,并且提高安全性,这是因为在没有相关联的临时代码的情况下,不能使用激活码,没有利用激活码传输该相关联的临时代码。
在另一个实施方式中,例如,通过引发提供应用程序的激活服务可以回应的事件,第二应用程序12可以通过本地请求来确定常驻在用户装置上的提供激活服务的其他应用程序。在这些实施方式中,可以省略上述步骤32和34。
在一些实施方式中,用户装置可以具有所安装的与控制服务器6上的不同用户账户相关联的应用程序。在这种情况下,可以提供发送给第二应用程序12的激活服务的每个应用程序的细节可以包括用户账户标识符。这个用户账户标识符可以用于确定哪些应用程序向给定的用户账户提供激活服务,从而能够允许选择正确的用户账户。如果不止一个应用程序可以向给定的用户账户提供激活服务,那么算法可以选择其中的一个。这种算法可以选择单个应用程序同任何合适的方式提供激活授权服务。实例包括选择单个应用程序以至少部分基于:应用程序供应商、应用程序作者和/或应用程序标识符中的一个或多个,来提供激活委托服务。
在另一个实施方式中,可以具有不止一个控制服务器6和/或储存库4。例如,如果单个用户装置供不止一个企业使用,则会发生这种情况。在这种情况下,可以针对特定的控制服务器6提供用户装置上的激活服务的应用程序的细节的请求。
在另外的实施方式中,可以向用户显示是使用用户装置上的另一个应用程序的激活服务来激活第二应用程序12还是使用由其他装置(例如,电子邮件)通知的代码来激活的选项。
在又一另外的实施方式中,第一应用程序10可以通过控制服务器6建立某个预先共享的密钥,该密钥允许其生成激活数据而不与控制服务器6接触。在这个实施方式中,可以省略上面描述的并且与控制服务器6的激活数据的请求和接收相关的步骤44和46。由于预先共享的密码,所以仍基于与控制服务器6相关联的数据生成激活响应。
在另一个实施方式中,可以仅通过储存库4或者仅通过控制服务器6来激活应用程序。在通过控制服务器6激活应用程序的实施方式中可以省略储存库。在另外的实施方式中,储存库4和控制服务器6的功能可以被组合在单个装置中。
将理解的是,实际上可以由可选地作为芯片组、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)等提供的单个芯片或集成电路或多个芯片或集成电路来提供本文中所提及的处理器或处理系统或电路。这个或这些芯片可以包括电路(以及可能固件),用于实例化一个或多个处理器、一个或多个数字信号处理器、基带电路以及射频电路中的至少一个或多个,其可被配置为根据示例性实施方式进行操作。在这方面,示例性实施方式可以至少部分由存储在(非瞬时性)存储器内并且由处理器、由硬件或者由有形存储的软件和硬件(以及有形存储的固件)的组合可执行的计算机软件来实现。
虽然参照附图在本文中描述的实施方式的至少一些方面包括在处理系统或处理器中执行的处理,本发明还扩展为计算机程序,尤其是在载波上或内的计算机程序,其适合于实践本发明。程序可以具有非瞬时性源代码、目标代码、中间代码源和目标代码的形式,例如,在部分编译的形式中,或者在任何其他非瞬时性形式,其适合用于根据本发明的处理的实现方式中。载波可以是能够携带程序的任何实体或装置。例如,载波可以包括储存介质,例如,固态驱动器(SSD)或其它基于半导体的RAM;ROM,例如,CD ROM或半导体ROM;磁记录介质,例如,软盘或硬盘;通常是光学存储器装置等。
以上实施方式将被理解为本发明的说明性实例。设想本发明的另外的实施方式。要理解的是,参照任何一个实施方式描述的任何特征可以单独地或者与所描述的特征相结合地使用,并且还可以与任何其他实施方式或任何其他实施方式的组合中的一个或多个特征相结合地使用。而且,在不背离所附权利要求中限定的本发明的范围的情况下,还可以使用上面未描述的等同物和修改。