转移状态和数据的交互模型的制作方法

文档序号:6349208阅读:220来源:国知局
专利名称:转移状态和数据的交互模型的制作方法
转移状态和数据的交互模型
背景技术
消费者购买的用于与他们的计算机一起使用的软件产品时常具有关联的产品密钥或类似的软件或硬件许可证。这些产品密钥典型地印刷在销售给消费者的盘或盒上,或者对于一些在线购买而言以电子方式传送给消费者。为了激活或使用该产品,消费者在他或她的计算机中输入产品密钥,并且该计算机访问激活服务器以使该产品密钥得到认证并激活软件产品。然后,将该产品密钥与接收激活请求的消费者的计算机的唯一计算机硬件 “签名”相关联。尽管产品密钥的这种用途可以帮助避免软件盗版,但是它不是没有它的问题。用户经常最终存留他们必须记住的多个盘或盒以保持产品密钥,并且可能难以将该软件产品转移(transfer)到另一个计算机,因为该产品密钥与接收激活请求的特定计算机相关联。这样的问题可能减少这种软件产品的可用性并且可能增加用户挫折。

发明内容
提供该发明内容以简化的形式引入概念的选择,在下文的具体实施方式
中进一步对其进行描述。该发明内容不旨在标识要求保护的主题的关键特征或必要特征,也不旨在用于限制要求保护的主题的范围。根据一个或多个方面,从绑定到用户的用户ID的数字许可证识别与数字许可证相关联的一方。该数字许可证标识针对软件产品的一组权利。作出关于何时进行与软件许可证相关联的附加销售的确定,并且生成所述一方被认可(recognize)为与该附加销售相关联的指示。根据一个或多个方面,许可证管理系统包括添加许可证模块、恢复许可证模块和显示许可证模块。添加许可证模块被配置成从第一设备接收第一用户请求以将绑定到用户的用户ID的数字许可证添加到由许可证管理系统维护(maintain)的许可证仓库(store)。 恢复许可证模块被配置成从第一设备接收第二用户请求以从许可证仓库恢复绑定到用户的用户ID的一个或多个数字许可证。显示许可证模块被配置成显示关于绑定到用户的用户ID的一个或多个数字许可证中每一个的许可证详细信息。


贯穿附图,相同的数字用于引用相同的特征。图1图示了根据一个或多个实施例的实现转移状态和数据的交互模型的实例系统。图2图示了根据一个或多个实施例的实现转移状态和数据的交互模型的实例系统。图3图示了根据一个或多个实施例的实例数字许可证。图4图示了根据本发明的一个或多个实施例的可以向用户显示以允许用户选择他或她的用户ID是否将要绑定到数字许可证的实例产品激活窗口。图5图示了根据一个或多个实施例的实例许可证管理系统。
图6是图示根据一个或多个实施例的用于获得并存储数字许可证的实例过程的流程图。图7是图示根据一个或多个实施例的用于运行软件产品的实例过程的流程图。图8是图示根据一个或多个实施例的用于返回所请求的数字许可证的实例过程的流程图。图9是图示根据一个或多个实施例的用于使用数字许可证的实例过程的流程图。图10是图示根据一个或多个实施例的用于自动更新基于时间的许可证的实例过程的流程图。图11图示了根据一个或多个实施例的可被配置成实现转移状态和数据的交互模型的实例计算设备。
具体实施例方式本文讨论转移状态和数据的交互模型。一般地,软件产品经由一种设备使用与该软件产品相关联的产品密钥来激活。作为激活过程的一部分,将该软件产品的数字许可证返回给该设备。可以包括产品密钥的该数字许可证被绑定到该设备的用户的用户ID。还可以可选地创建用户的用户ID作为绑定过程的一部分。绑定到用户ID的数字许可证和产品密钥还由远程许可证服务存储。用户随后可以让多个不同的设备取回(retrieve)绑定到他或她的用户ID的数字许可证和产品密钥,从而允许该用户将数字许可证转移到这些设备并且根据数字许可证的条款(terms )在这些设备上使用软件产品。这些不同的设备可以为该用户所拥有,或者可替代地可以为其他人拥有但仅仅正被该用户使用。关于软件产品和/或数字证书的各种附加信息也可以由远程许可证服务来维护,这将在下面更详细地讨论。图1图示了根据一个或多个实施例的实现转移状态和数据的交互模型的实例系统100。系统100包括多个(η个)可以经由网络106与许可证服务104通信的设备102。网络106可以是多种不同的网络,包括因特网、局域网(LAN)、公用电话网、内联网、其他公共和/或专有网络、这些网络的组合等等。许可证服务104维护与设备102的一个或多个用户的用户标识符(ID)相关联或绑定的许可证。设备102和/或许可证服务104还可以经由网络106与一个或多个(m个)在线服务108通信。每个设备102可以是能够运行(例如消费)软件的多种不同设备。例如,设备102 可以是台式计算机、服务器计算机、移动站、娱乐设备、通信地耦合到显示设备的机顶盒、无线电话、个人数字助理、游戏控制台、汽车计算机等等。因此,设备102的范围可以是从具有充分的存储器和处理器资源的全资源设备(例如个人计算机、游戏控制台)到具有有限的存储器和/或处理资源的低资源设备(例如,传统的机顶盒、手持式游戏控制台)。许可证服务104以及每个在线服务108可以由多种不同的计算设备中的一个或多个实现。类似于设备102的讨论,实现许可证服务104和每个在线服务108的计算设备可以是多种不同的设备,其范围是从具有充分的存储器和处理器资源的全资源设备到具有有限存储器和/或处理资源的低资源设备。此外,应当理解,服务104和108可以由不同的计算设备实现,或者可替代地服务104和108的一个或多个可以由相同的计算设备实现。而且,服务104和108的每一个可以由多个彼此通信以向设备102的用户提供无缝体验的不同系统实现。每个设备102包括许可证客户端模块112。设备102与一个或多个在线服务108 通信以使用产品密钥激活设备102上的软件产品,并且获得该软件产品的数字许可证。本文使用的软件产品是指可以在设备102上运行或执行的软件程序。该软件程序可以是独立程序,或可替代地是被设计成与另一个软件程序联合工作的模块或组件。软件产品可以是多种不同类型的软件程序,比如游戏程序、应用程序、字处理程序、数据库程序、操作系统、 绘图程序等等。此外,尽管典型地为软件程序,但是软件产品还可以是或包括固件模块或组件或其他固件指令。一旦被激活,用户于是可以根据数字许可证的条款在设备102上使用软件产品。 设备102上的许可证客户端模块112还与许可证服务104通信以存储绑定到设备102的用户的用户ID的数字许可证。许可证服务104存储绑定到用户ID的数字许可证和产品,从而允许具有该用户ID的用户随后在相同或不同的设备102上取回数字许可证。该用户ID 由在线服务的认证服务认证和/或由该认证服务提供,如下面更详细地讨论的。这里,参考加密和密码术,其可以包括对称密钥加密和密码术以及具有公/私密钥对的公钥加密和密码术。尽管这种密钥密码术对本领域技术人员而言是公知的,但是为了辅助读者,这里包括了这种密码术的简要概述。在公钥密码术中,实体(比如用户、硬件或软件组件、设备、域等等)已将其与公/私密钥对相关联。可以使得该公钥可公开获得,但是该实体将私钥保密。在没有私钥的情况下,对使用公钥加密的数据进行解密在计算上非常困难。所以,数据可以由任何实体利用公钥加密,且仅由具有对应私钥的实体解密。此外, 可以通过使用数据和私钥生成用于该数据的数字签名。在没有私钥的情况下,创建可以使用公钥校验的签名在计算上很困难。任何具有公钥的实体可以使用公钥通过比较使用公钥获得的校验值与原始数据来校验数字签名,并且如果这两个相同,则确保没有人已篡改或改变被数字签名的数据。另一方面,在对称密钥密码术中,两个实体都知道并保密共享密钥(也被称为对称密钥)。具有共享密钥的任意实体典型地能够对利用该共享密钥加密的数据进行解密。在没有共享密钥的情况下,对用该共享密钥加密的数据进行解密在计算上非常困难。所以,如果两个实体都知道共享密钥,则每一个实体都可以加密可以被另一个实体解密的数据,但是其他实体在不知道共享密钥的情况下不能解密该数据。图2图示了根据一个或多个实施例的实现转移状态和数据的交互模型的实例系统200。系统200根据一个或多个实施例以附加细节图示了图1的系统100的各种组件的实例。系统200包括设备202,其可以是例如图1的设备102。系统200还包括许可证管理服务204,其可以是例如图1的许可证服务104。系统200还包括附加的服务,其可以是例如图1的在线服务108。这些附加的服务包括软件激活服务212、用户ID认证服务214、软件购买服务216、关系服务218、产品验证(validation)服务220和产品注册服务222。系统200还包括许可证仓库224,在该许可证仓库中可以由许可证管理服务204存储数字许可证。服务204和212-222还可以被称为远程服务,因为它们典型地位于不同于设备202的物理位置(例如,位于不同房间、不同的建筑物、不同的州或国家等等)。设备202包括许可证客户端模块232、软件保护客户端模块234和本地仓库236。 本地仓库236被实现在设备202的本地存储设备上,比如磁盘、光盘、固态存储器(例如,闪存、RAM等)等等。设备202的这个本地存储设备可以是固定的或可移动的存储介质或媒质。用户ID认证服务214是用于在线服务的认证服务。该在线服务可以向设备202的用户提供多种特征和功能。在一个或多个实施例中,该在线服务是互联网服务的Microsoft Windows Live 网络。关于互联网服务的Microsoft Windows Live 网络的附加信息是可从华盛顿的雷蒙德的微软公司获得的。然而,应当理解,可替代地可以使用其他在线服务。不管所使用的特定在线服务如何,设备202的用户具有用于该在线服务的用户 ID。用于该在线服务的用户ID标识该特定用户并允许使他或她区别于该在线服务的其他用户。用户可以通过向许可证客户端模块232提供他或她的标识信息而登录到或签名于在线服务,该许可证客户端模块又将该标识信息传递给用户ID认证服务214。该标识信息的这种传递典型地以安全方式执行,比如通过加密该标识信息来执行。该标识信息可以采取多种不同的形式,比如用户ID和口令的组合、指纹、特定口令短语(passphrase)、数字证书等等。服务214接收该标识信息并将接收到的信息与服务214先前存储的信息进行比较。如果接收到的信息与先前存储的信息匹配(例如,相同),则用户被认证并且用户证书 (credential)被返回到模块232。如果接收到的信息与先前存储的信息不匹配(例如,不同),则用户不被认证并且用户证书不被返回到模块232。用户证书标识设备202的当前用户,该当前用户是登录到或签名于在线服务的用户。用户证书可以采取多种不同形式。在一个或多个实施例中,该证书是设备202的当前用户的用户ID的声明(statement),且该声明被服务214数字地签名。该声明也可以被称为安全票(ticket)或令牌(token),并且在一个或多个实施例中被使用服务214的公/私密钥对中的私钥数字签名。设备202可以将用户证书传递到其他设备和服务(例如许可证管理服务204),其又可以依靠用户证书中的用户ID (如作为设备202的当前用户的用户 ID)。这样的其他设备和服务可以具有这样的依靠,因为用户证书由受信方(用户ID认证服务214)提供。软件激活服务212由设备202访问以激活软件产品。该软件产品可以以多种不同方式被设备202的用户购买或以其他方式获取。在一个或多个实施例中,软件产品可以在线获得或从软件购买服务216以电子方式获得。软件购买服务216可以例如是销售软件产品的在线或电子仓库。此外,软件产品可以从其他来源获得,比如本地软件仓库(例如,传统商业)、设备转售者或分配者、另一个用户等等。不管获取软件产品的方式如何,该软件产品具有相关联的产品密钥。与软件产品相关联的产品密钥帮助校验软件产品尚未被不适当地复制。该产品密钥可以采取多种不同的形式。在一个或多个实施例中,该产品密钥是字母数字(alphanumeric)字符的序列,尽管可替代地可以使用其他符号或字符。例如,产品密钥可以是序列号、5个一组的5-字符串等等。与软件产品相关联的产品密钥可以以多种不同的方式获得,比如被印刷在软件产品的盒或分布介质(例如光盘)上、作为在线或电子购买的一部分被向用户显示或以电子方式邮寄给用户,等等。然而,在其他实施例中,产品密钥可以采取不同的形式。例如,产品密钥可以是特定硬件设备存在于设备202处的指示,比如特定光盘(例如CD或DVD)的存在、特定固态存储器设备(例如通用串行总线(USB)闪存设备)的存在、特定智能卡的存在、加密狗(dongle)的存在等等。产品密钥可以存储在这种硬件设备上并且被软件保护客户端模块234获得,或者可替代地,软件保护客户端模块234可以检测这种硬件设备的存在并生成产品密钥(例如,证明模块234已经检测到特定设备的存在的签名的数字证书)。给定与软件产品相关联的产品密钥,软件保护客户端模块234将产品密钥传送给软件激活服务212。模块234与服务212之间的该通信可以以安全方式进行,比如使用多种不同的加密技术。软件激活服务212分析产品密钥并基于该产品密钥确定软件产品是否可以被激活。该分析可以以多种方式执行,并且可以包括确定产品密钥是否可信 (authentic)、确定产品密钥是否先前已被激活(并且后来尚未被去激活),等等。基于对产品密钥的分析,软件激活服务212确定是否将激活软件产品。如果服务 212确定了软件产品将不被激活,则这种对激活软件产品的否定或拒绝的指示被返回到软件保护客户端模块234。然而,如果服务212确定软件产品将被激活,则服务212尝试生成数字许可证。如果服务212可以生成数字许可证,则服务器212将软件产品的数字许可证返回到模块234。如果服务212由于某种原因(例如产品密钥已被用于激活产品)不能生成许可证,则没有数字许可证被返回到模块234。服务212可以生成该数字许可证,或者可替代地,另一个组件或模块可以代表服务212生成数字许可证。软件激活服务212还可选地将软件产品是否被激活的确定的指示传送到许可证管理服务204和/或产品验证服务220。 该指示允许基于产品密钥的激活的历史被维护,如下面更详细地讨论的。如果软件产品将被激活,则数字许可证被返回到软件保护客户端模块234。在一个或多个实施例中,数字许可证以安全方式被返回,比如经由加密的通信信道、通过利用软件保护客户端模块234和/或设备202的公钥来加密该数字许可证等等。由服务212 (或代表服务212)生成的数字许可证标识设备202的用户针对相关联的软件产品具有的权利。这些权利也被称为数字许可证的条款,或用户必须使用相关联的软件产品的许可。该数字许可证还典型地包括从软件保护客户端模块234接收的产品密钥。多种不同的权利可以在数字许可证中被标识,比如运行程序的权利、将程序安装在特定数量的机器上的权利、程序可以运行的持续时间(例如一个月、一年等)、程序的哪些特征被启用和/或禁用等等。要在数字许可证中指示的特定权利可以由服务212 (或另一组件或模块)以多种不同的方式标识,例如基于将权利与产品密钥相关联的数据库或其他记录、基于其他规则或算法等等。数字许可证典型地也使用服务212或代表服务212生成数字许可证的另一个组件或模块的公/私密钥对中的私钥来数字地签名。数字许可证可以以多种不同的方式实现。在一个或多个实施例中,数字许可证以标记语言(比如XrML (可扩展权限标记语言)语言)实现。可替代地,数字许可证可以使用其他公共和/或专有语言或技术来实现。数字许可证可以以多种不同方式生成。在一个或多个实施例中,响应于来自软件保护客户端模块234的请求生成数字许可证,该请求包括产品密钥。附加条件也可以置于数字许可证的生成中,并且/或者可以响应于不同的请求生成数字许可证。例如,可以对软件产品开发者的代表进行电话呼叫,并且该代表可以响应于生成数字许可证的用户请求 (例如,用户通过电话向所述代表提供用户拥有的产品密钥)生成许可证并将其发送到软件保护客户端模块234。通过另一个实例,附加条件可以指示为了生成数字许可证,应当校验诸如用户指纹的扫描之类的生物测定信息(例如,由软件保护客户端模块234提供给软件激活服务212)。通过又一个实例,附加条件可以指示为了生成数字许可证,应当校验用户的数字证书(例如由软件保护客户端模块234提供给软件激活服务212)。图3图示了根据一个或多个实施例的实例数字证书300。数字证书300包括多个字段或部分302-340,其包括用于许可证300的各种信息。应当理解,在实例数字许可证300 中所示的这些字段仅仅是实例,并且实例许可证300中所示的一个或多个字段可以从数字许可证中移除,一个或多个其他字段可以添加到该数字许可证,一个或多个字段可以组合, 一个字段可以被分成多个字段,等等。此外,应当注意,数字许可证300可以被加密,并且/ 或者字段302-340中的各个字段可被加密(例如使用上文所讨论的对称密钥和/或公钥加密术)。图3是附加地参考图2的组件讨论的。激活日期字段302存储标识对应于数字许可证300的产品密钥(例如包括在下文所讨论的产品密钥字段328中)最近被用于激活软件产品的日期(和可选地时间)的数据。 当对应于数字许可证300的软件产品被激活时,激活日期字段302由软件激活服务212设置,或者可替代地由创建许可证300的另一个组件或模块设置。创建的日期字段304存储标识创建数字许可证300的日期(和可选地时间)的数据。当许可证300被创建时,创建的日期字段304由软件激活服务212设置,或者可替代地由创建许可证300的另一个组件或模块设置。项目信息字段306存储描述数字许可证300的数据。该数据可以是例如描述数字许可证的各种特性(例如数字许可证300的尺寸、数字许可证300中存在的字段的指示等等)的扩展标记语言(XML)文档。在许可证300被创建时,项目信息字段306由软件激活服务212设置,或者可替代地由创建许可证300的另一个组件或模块设置。数字许可证ID字段308存储数字许可证300的标识符,从而允许许可证300区别于其他数字许可证。在一个或多个实施例中,许可证300的标识符是本地唯一标识符,从而允许数字许可证300在较小群组内(例如小于全局)区别于其他数字许可证。当许可证300 被创建时,数字许可证ID字段308由软件激活服务212设置,或者可替代地由创建许可证 300的另一个组件或模块设置。有效日期字段310存储标识数字许可证300的有效日期(和可选地时间)的数据。 该有效日期用于基于时间的许可证,其中用户具有的针对软件产品的权利(如在数字许可证300中进一步被标识的)具有有限的持续时间。用户针对软件产品所具有的权利的持续时间在有效日期字段310中被标识。有效日期字段310由软件激活服务212或可替代地由创建许可证300的另一个组件或模块设置,并且可以可选地随后由许可证管理服务204和 /或软件保护客户端模块234更新。文件字段312存储描述数字许可证的数据。该数据包括例如如上讨论的利用数字许可证赋予用户的一组权利,比如软件产品的多少个拷贝可以同时在不同的设备上运行的指示、可以启用的软件产品的特定特征的指示,等等。该数据还可以包括其他信息,比如向设备分配与产品密钥(且因此数字许可证)相关联的软件产品的初始设备制造商(OEM)的标识符、与产品密钥(且因此数字许可证)相关联的软件产品的转售者的标识符等等。文件字段312由软件激活服务212或可替代地由创建许可证300的另一个组件或模块设置,并且可以可选地随后由许可证管理服务204和/或软件保护客户端模块234更新。存在于数据库中标志字段314是指示许可证300是否存储于许可证仓库2M中的标志。存在于数据库中标志字段314由许可证管理服务204设置为第一值(例如“1”)以指
9示许可证300被存储在许可证仓库2M中,并且由服务204清除并设置为第二值(例如“0”) 以指示许可证300未被存储在许可证仓库224中。许可证描述字段316存储描述许可证300的数据。该数据可以例如是文件字段 312中标识的权利的总体描述、拥有许可证300的人或实体的名称或其他标识符等等。许可证描述字段316由软件激活服务212在许可证300被创建时设置或可替代地由创建许可证300的另一个组件或模块设置,并且可以可选地随后由许可证管理服务204和/或软件保护客户端模块2;34更新。全局软件许可证ID字段318存储标识许可证300从而允许许可证300区别于其他数字许可证的数据。在一个或多个实施例中,标识许可证300的数据可以是全局唯一 ID (⑶ID)。全局数字许可证ID字段318使许可证300在全局规模上区别于其他数字许可证, 而数字许可证ID字段308允许使许可证300在更小规模上区别于其他数字许可证。全局数字许可证ID字段318由软件激活服务212在许可证300被创建时设置或可替代地由创建许可证300的另一个组件或模块设置。用户ID字段320是在数字许可证300被创建时设备202的当前用户的标识符。字段320中维护的用户ID允许数字许可证300被绑定到特定用户,如下面更详细地讨论的。 用户ID字段320可以包括例如从上文所讨论的用户ID认证服务214接收的证书或仅仅包括来自这些证书的用户ID。用户ID字段320由许可证管理服务204或许可证客户端模块 232在数字许可证300绑定到特定用户时设置。数字许可证300所绑定到的用户ID也可以随后由服务204和/或客户端模块232改变,如下文更详细地讨论的。修改日期字段322存储标识数字许可证300最近被修改的日期(和可选地时间)的数据。修改日期字段322由许可证管理服务212和/或许可证客户端模块232在许可证 300被修改时设置。产品友好名称字段3M存储标识与数字许可证300相关联的软件产品的用户友好的名称的数据。产品友好名称字段324由软件激活服务212在许可证300被创建时设置, 或者可替代地由创建许可证300的另一个组件或模块设置。产品友好名称字段3M还可以可选地随后由许可证管理服务204和/或许可证客户端模块232比如响应于改变产品友好名称的用户请求来改变。产品ID字段3 是与数字许可证300相关联的软件产品的标识符。在一个或多个实施例中,标识与许可证300相关联的软件产品的数据可以是GUID。产品ID字段326由软件激活服务212在许可证300被创建时设置,或者可替代地由创建许可证300的另一个组件或模块设置。产品密钥字段3观是从软件保护客户端模块232接收的,并且是由软件激活服务 212激活的软件产品的产品密钥。当产品被激活时,通过软件激活服务212使该产品密钥包括在许可证300中,或者可替代地通过另一个组件或模块(例如由许可证客户端模块232) 将其包括在许可证300中。产品列表ID字段330是软件产品的标识符列表。许可证300可以可选地与多个不同的软件产品相关联,并且这些多个不同的产品的列表包括在产品列表ID字段330内。在一个或多个实施例中,标识与许可证300相关联的软件产品的每一个的数据可以是GUID。 产品列表ID字段330由软件激活服务212在许可证300被创建时设置,或者可替代地由创建许可证300的另一个组件或模块设置。产品名称字段332存储标识与数字许可证300相关联的软件产品的正式名称的数据。产品名称字段332由软件激活服务212在许可证300被创建时设置,或者可替代地由创建许可证300的另一个组件或模块设置。购买日期字段334存储标识购买与许可证300相关联的软件产品的日期(和可选地时间)的数据。购买软件产品的日期可以以不同方式标识,比如从软件购买服务216接收、由设备202的用户输入等等。购买日期字段304由软件激活服务212在许可证300被创建时设置,或者可替代地由创建许可证300的另一个组件或模块设置。EULA (终端用户许可证协议)链接字段336是到用于许可证300的终端用户许可证协议的链接。该终端用户许可证协议是总体书写的、易于被具有对软件产品的权利的用户读取的描述,所述权利是许可证300给予用户的。这允许用户回顾和知道他或她利用许可证300具有的权利。EULA链接字段336由软件激活服务212在许可证300被创建时设置,或者可替代地由创建许可证300的另一个组件或模块设置。更新消息字段338存储指示在许可证管理服务204尝试将许可证300添加到许可证仓库2M之后成功或失败的数据。如果许可证300成功地被添加到许可证仓库224,则指示成功的消息由服务204存储在更新消息字段338中。如果许可证300未成功地添加到许可证仓库224,则指示错误的消息(和可选地错误是什么的描述)由服务204存储在更新消息字段338中。附加的有效载荷字段340是可以可选地包括在许可证300中并用于存储许可证 300的未被存储在上文讨论的字段302-338中的附加属性的附加部分。这些附加属性可以由各种服务或模块的一个或多个标识并存储在许可证300中,比如由软件激活服务212在许可证300被创建时标识,由创建许可证300的另一个组件或模块标识,由许可证管理服务 204标识、由许可证客户端模块232标识等等。返回到图2,当使用产品密钥激活产品时,软件保护客户端模块234接收用于相关联的软件产品的数字许可证。如上文所讨论,用于激活的产品的产品密钥包括在数字许可证中。软件产品的激活也被称为针对该用户ID的该软件产品的激活。软件保护客户端模块234可以可选地将数字许可证存储在本地仓库236中。软件保护客户端模块234还与许可证客户端模块232通信,从而请求模块232向许可证管理服务204发送数字许可证。响应于该请求,许可证客户端模块232将设备202 的当前用户的用户证书和数字许可证传递到许可证管理服务204。这些用户证书是从上文讨论的用户ID认证服务214获得的证书。如果用户尚未登录到该在线服务,则许可证客户端模块232提示用户登录到在线服务。许可证客户端模块232与许可证管理服务204之间的通信典型地以安全方式执行,比如使用加密术。许可证管理服务204从许可证客户端模块232接收数字许可证并且将接收到的数字许可证存储在许可证仓库2 中。许可证仓库2 可以使用多种不同存储介质中的一个或多个实现,该存储介质比如磁盘、光盘、RAM、闪存等等。许可证仓库2M可以在与实现服务204相同的一个或多个设备上实现,或者可替代地服务204和仓库2M可以在不同设备上实现。从许可证客户端模块232接收的数字许可证被绑定到设备202的当前用户的用户
11ID。该绑定可以是将数字许可证绑定到例如从上文所讨论的用户ID认证服务214接收的证书或绑定到仅来自这些证书的用户ID。该绑定将数字许可证与用户ID相关联,并且可以以多种不同方式执行。在一个或多个实施例中,数字许可证本身包括如上文所讨论的用户 ID。用户ID可以例如由许可证客户端模块232或许可证管理服务204添加到数字许可证。 数字许可证中的该用户ID是该数字许可证所绑定的用户ID。在其他实施例中,绑定可以以不同方式执行。例如,许可证管理服务204可以维护标识绑定到特定用户ID的特定数字许可证的表或其他记录。通过另一个实例,不同的文件夹或位置可以与特定用户ID以及存储在与特定用户ID相关联位置处或文件夹中的、绑定到特定用户ID的数字许可证相关联。此外,在一个或多个实施例中,许可证管理服务204维护将用户ID与数字许可证相关联的表或其他记录。独立的表或记录可以针对每个软件产品维护,或可替代地该表或记录还可以包括将用户ID和数字许可证与软件产品相关联的信息。维护这样的表或记录允许许可证管理服务204在数字许可证被请求时更快地标识绑定到特定用户ID的软件产品的数字许可证。应当注意,在设备202的当前用户尚未具有用户ID的情况下可能出现多种情形。 在这样的情形中,可以生成当前用户的用户ID作为将数字许可证绑定到当前用户的用户 ID的过程的一部分。用户ID认证服务214可以例如被调用(例如,通过许可证客户端模块 232或许可证管理服务204调用)以辅助生成用户ID。当设备202的用户或可替代地其他组件或模块请求运行软件产品时,软件保护客户端模块234检查该软件产品的数字许可证是否可用。模块234通过与本地仓库236和/ 或许可证客户端模块232通信来执行该检查。模块234请求模块232从服务204获得数字许可证的拷贝。模块232向许可证管理服务204发送针对与软件产品(针对该软件产品运行的请求被接收)相关联的数字许可证的拷贝的请求。模块232还发送设备202的当前用户的用户证书。这些用户证书是从上文所讨论的用户ID认证服务214获得的证书。如果用户尚未登录到在线服务,则许可证客户端模块232提示用户登录到在线服务。响应于对数字许可证的请求,许可证管理服务204确定由用户证书标识的用户是否具有用于所请求的软件产品的数字许可证。该确定可以例如通过检查许可证仓库2M或数字许可证的另一个记录以求具有与接收的用户证书中的用户ID匹配(例如与其相同)的用户ID以及与所请求的软件产品(如从模块232接收请求)的产品ID匹配(例如与其相同) 的产品ID的数字许可证来执行。此外,如果由用户证书标识的用户具有所请求的产品的数字许可证,则许可证管理服务204根据数字许可证的条款确定数字许可证是否可以被返回到许可证客户端模块 232。例如,服务204检查以校验当前日期(和/或时间)没有超过数字许可证的有效日期。 通过另一个实例,服务204还检查以校验在服务器202未完结的数字许可证的拷贝数量不超过阈值数量(例如,该阈值数量作为数字许可证的条款之一而被包括)。如果由用户证书标识的用户具有所请求的软件产品的数字许可证并且该数字许可证可以根据数字许可证的条款被返回到许可证客户端模块232,则服务204将该数字许可证返回到模块232。该数字许可证可以由模块232存储在例如本地仓库236中。可替换地,所述数字许可证可能不能返回到模块232。相反地,用户具有所请求的软件产品的数字许可证的指示可以明确地或自然地被返回到模块232 (例如可以发送指示用户具有数字许可证的消息,如果用户具有数字许可证则软件产品的图像可以流送到消费者设备202)。然而,如果由用户证书标识的用户没有所请求的软件产品的数字许可证或如果数字许可证根据数字许可证的条款不能被返回到许可证客户端模块232,则失败指示被返回到模块232 并且所请求的软件产品的数字许可证不会被返回到模块232。此外,许可证管理服务204维护绑定到该用户ID的数字许可证的多少个拷贝已经返回到许可证客户端模块232的记录或计数。该计数每当许可证管理服务204将数字许可证返回到许可证客户端模块232时增加,并且每当许可证客户端模块卸载或移除数字许可证时减少。维护该计数或记录允许许可证管理服务204容易地识别在设备202处未完结的数字许可证的拷贝数量是否超过阈值数量。在一个或多个实施例中,模块234检查本地仓库236以确定数字许可证是否可用。 该检查可以在模块232针对数字许可证与服务204进行核对之前或之后(或同时)执行。此外,在对服务204的访问不可用的情况下出现多种情形。在这样的情形中,存储在本地仓库 236中的数字许可证可以被至少临时用于运行软件产品。来自本地仓库236的数字许可证的持续时间(例如,天数、访问次数等)可以以不同的方式被标识,比如模块232的设置或配置、从数字许可证中所包括的权利等等。在该持续时间之后,模块234不再允许来自本地仓库236的数字许可证被用于运行该软件产品。本地仓库236中的数字许可证的持续时间也可以基于数字许可证中的权利中反映的商业逻辑或商业情报改变。在一个或多个实施例中,本地仓库236中的数字许可证的持续时间是具有绑定到软件的用户ID的用户使用设备202的持续时间。可以以不同方式检测用户何时停止使用设备202,比如何时用户请求断电或退出设备202、何时用户请求退出在线服务(针对在线服务用户从用户ID认证服务214获得证书)、何时用户请求从设备202 卸载或删除数字许可证,等等。当用户停止使用设备202时,可以从设备202删除、卸载或以其他方式移除数字许可证。可替代地,数字许可证可以通过将来自本地仓库236的数字许可证的持续时间设置为在用户停止使用设备202时结束来自然地被无效。使得数字许可证的持续时间与用户使用设备202的时间相关联允许用户基于绑定到他或她的用户ID的数字许可证在多个设备上使用软件产品,而不管所述多个设备位于什么地方。例如,那些设备可以是在他或她的家或办公室中的用户自己的设备,或者可以是其他用户的设备,比如朋友家中的设备、图书馆或网吧中的设备等等。如果没有数字许可证可用于被请求运行的软件产品,则软件保护客户端模块234 不允许软件产品被运行。然而,如果数字许可证是可用的,则模块234根据数字许可证中标识的条款和/或权利允许软件产品被运行。模块234负责实施数字许可证中标识的条款和 /或权利。在一个或多个实施例中,软件产品的数字许可证的拥有者的标识符被显示或以其他方式呈现,同时运行软件产品。该标识符可以从数字许可证获得。例如,拥有者的名称可以被显示同时运行软件产品,从而允许用户和观看设备显示器的其他任何人看到软件产品被许可给谁。这样的显示例如在阻止盗版方面是有帮助的,因为用户将知道如果他们正在运行未被授权给他们的软件产品时,正观看显示器的其他人将能够看到他们未购买正在运行的软件产品。
13
此外,应当注意,软件产品可以以多种不同方式运行。在一个或多个实施例中,软件产品被安装在设备202上并且在软件产品的数字许可证可用的情况下运行。在其他实施例中,软件产品的图像可以被存储在一个或多个远程服务处,并且在软件产品的数字许可证可用的情况下这些图像可以被流送到设备202并运行。在这样的实施例中,软件产品可以基于所需获得。许可证管理服务204也可以与一个或多个其他服务通信以获得对应于特定数字许可证的附加信息。这样的服务的实例包括关系服务218、产品验证服务220和产品注册服务 222。关系服务218维护将与产品密钥相关联的各种实体或各方关联到数字许可证的记录。这些不同的各方可以包括例如软件产品的经销商、软件产品的转售商、软件产品的制造商等等。许可证管理服务204可以从服务218获得这些关联并且将它们与数字许可证一起在许可证仓库2 中维护。这些关联的标识可以包括在许可证仓库2 中的数字许可证中,或者可替代地这些关联的单独记录可被维护。作为实例,特定产品密钥可以由软件产品的特定制造商生成并被给予初始设备制造商(OEM),其又将设备连同软件产品分发给转售商。该产品密钥与该制造商、该OEM和该转售商的关联可以由关系服务218维护。关系服务218可以以多种不同方式被告知该关联, 比如通过制造商、OEM和/或转售商来告知。当具有该产品密钥的数字许可证被许可证管理服务204接收时,服务204可以从关系服务218获得制造商、OEM和转售商的身份并且在许可证仓库224中维护这些身份与所接收的数字许可证相关联。产品验证服务220基于与该数字许可证相关联的产品密钥来维护用于数字许可证的历史的每个数字许可证的记录。该历史可以包括例如数字许可证的产品密钥何时用于激活软件产品、数字许可证是否和何时被撤销(revoke)、数字许可证是否和何时被重新启用等等的日期和/或时间。该历史还可以包括产品密钥是否被撤销和重新激活、产品密钥何时被撤销和重新激活等等的指示。产品验证服务220从其他服务获得该历史,该其他服务比如许可证管理服务204、软件激活服务212等等。许可证管理服务204可以从产品验证服务220获得该历史并将该历史与数字许可证一起在许可证仓库2M中进行维护。这些历史可以包括在许可证仓库224中的数字许可证中,或者可替代地这些历史的单独记录可以被维护。产品注册服务222基于与数字许可证相关联的产品密钥为每个数字许可证维护该数字许可证的产品注册信息的记录。当用户注册相关联的软件产品时,该产品注册信息可以包括从设备202的用户收集的各种信息。例如,该信息可以包括用户的年龄、用户生活或工作的地理位置、用户的爱好和/或兴趣和/或用户选择要泄露的任何其他信息。许可证管理服务204可以从产品注册服务222获得该产品注册信息并且将该产品注册信息与数字许可证一起在许可证仓库224中进行维护。该产品注册信息可以包括在许可证仓库2 中的数字许可证中,或者可替代地该产品注册信息的单独记录可以被维护。在一个或多个实施例中,仅在接收到用户同意(consent)将用户的用户ID绑定到数字许可证之后,用户ID才被绑定到数字许可证。该用户同意可以是选择参加(opt-in) 同意,其中用户采取肯定行动以请求用户ID被绑定到数字许可证。可替代地,该用户同意可以是选择退出(opt-out)同意,其中用户采取肯定行动以请求用户ID不绑定到数字许可证。如果用户不选定选择退出该绑定,则用户暗示同意执行该绑定。而且,应当注意,用户ID到数字许可证的绑定可以允许许可证管理服务204区分不同的用户,但是不需要包括标识特定用户的任何个人信息。例如,用户可以经由用户ID 认证服务214利用特定用户ID登录到在线服务,但是不需要维护用户ID与实际个人之间的关联。相应地,数字许可证可以被绑定到该用户ID,而同时服务204不具有该用户实际上是谁的知识。图4图示了根据一个或多个实施例的可以向用户显示以允许用户选择他或她的用户ID是否被绑定到数字许可证的实例产品激活窗口 400。当用户正激活他或她的软件产品时显示该实例窗口 400。应当理解,不同的用户界面可以可替代地被显示,并且该用户界面可以可替代地在不同时间显示。例如,允许用户选择参加或选择退出绑定他或她的用户ID到数字许可证的用户界面可以响应于改变绑定到不同用户ID的用户请求、响应于将数字许可证添加到图2的许可证管理服务204的用户请求等等来显示。此外,在图4的实例中,产品密钥具有特定格式(5个5-字符串,也被称为5x5密钥)。应当理解,产品密钥的该特定格式是一个实例,并且产品密钥可以采取如上所讨论的不同形式。产品激活窗口 400包括描述402,其解释如何激活软件产品并注册该软件产品的产品密钥。描述402还包括产品密钥看起来像什么的实例。到如何找到产品密钥的更详细描述的链接404也被显示。向用户解释用户ID为何与该软件产品的许可证相关联(例如, 绑定到许可证)的描述406也被显示。到激活是什么的更详细的描述的链接408和到隐私声明的链接410也被显示。如果用户选择链接410,则隐私声明被显示,向用户解释用户的信息如何保密。文本输入字段412也在窗口 400中被显示,用户可以将软件产品的产品密钥输入到该文本输入字段中。此外,用户能够选择复选框414以选择参与用户的用户ID到许可证的关联或绑定。该用户还能够保持复选框414不被选择以选择退出用户的用户ID到许可证的关联或绑定。一旦在希望时产品密钥被输入且复选框414被选择,则用户可以选择“确定”按钮416来激活产品。用户还可以选择“取消”按钮418来终止产品激活过程。如果用户选择了复选框414,则从激活软件产品接收的数字许可证与用户的用户ID相关联。如果用户没有选择复选框414,则从激活软件产品接收的数字许可证被存储在设备上,但与用户的用户ID不关联。应当理解,复选框和“确定”和“取消”按钮仅仅是可以呈现给用户以便选择参与或选择退出绑定的用户界面的实例,并且可替代地可以使用多种其他常规的用户界面技术。 应当理解,产品激活窗口 400的各个部分可以从窗口 400中排除,比如链接408、链接410、 链接404、描述402等等。返回图2,许可证管理服务204可以使多种不同的增强功能对设备202的用户而言可用。该功能的实例包括将新数字许可证添加到许可证仓库224,将产品密钥从许可证仓库2 恢复到设备202,自动代表用户更新许可证仓库224中的数字许可证,从许可证仓库 224删除数字许可证,在许可证仓库224中取回关于数字许可证的细节(例如可以取回来自数字许可证或与数字许可证相关联的信息),从设备202卸载产品密钥(例如使得它能够用在另一个设备上),等等。此外,许可证管理服务204还可以使将数字许可证从一个用户转移(transfer)到另一个用户的能力对设备202的用户而言是可用的。这允许例如用户将他或她的数字许可证赠予或卖给另一个用户。为了转移数字许可证,用户向许可证管理服务204 (例如经由许可证客户端模块232)提交转移数字许可证的请求。服务204然后获得转移的数字许可证的接受者的用户ID并将该数字许可证存储为绑定到转移的数字许可证的接受者的用户 ID。服务204可以以不同方式获得用户ID。在一个或多个实施例中,提交转移数字许可证的请求的用户还提交转移的数字许可证的接受者的用户ID。在其他实施例中,响应于转移数字许可证服务204的请求,服务204告知软件激活服务212与数字许可证中的产品密钥相关联的软件产品已被去激活。去激活的记录可以也可以存储在产品验证服务220中。相应地,转移的数字许可证的接受者可以将产品密钥输入到他或她的设备中并且如上所讨论地使用产品密钥激活软件产品。在一个或多个实施例中,许可证管理服务204还允许用户管理与他或她的用户ID 相关联的数字许可证。关于数字许可证的各种信息可以被提供给用户,比如激活历史、用户提供的注册信息、有效日期等等。此外,关于数字许可证的各种信息可以被用户修改,比如允许用户请求服务MO自动更新数字许可证、允许用户输入描述许可证的用户友好名称等寸。许可证管理服务204还可以监视许可证仓库224中的数字许可证并且当服务204 标识对数字许可证的条款的不遵守时撤销数字许可证。数字许可证的撤销可以以多种不同的方式执行,比如将指示数字许可证已被撤销的数据存储在数字许可证中,维护已被撤销的数字许可证的单独记录或列表,从许可证仓库2 移除数字许可证,等等。许可证管理服务204可以以各种不同方式并依靠各种商业逻辑或商业情报来确定对数字许可证的条款的不遵守。例如,数字许可证可以包括有效日期,且当该有效日期过去时,服务204可以确定对数字许可证条款的不遵守。通过另一个实例,数字许可证可以包括在任意一个时间可在设备处未完结的许可证的拷贝数量的指示。如果拷贝的该数量超过阈值数量,则服务204 可以确定对数字许可证条款的不遵守(例如,且假设数字许可证所绑定到的用户ID已受到损害(compromised))。而且,在一个或多个实施例中,设备202的用户可以请求从设备202卸载或移除数字许可证。该请求可以是显式请求,比如对指示数字许可证将被从设备202卸载或移除的所显示的链接或菜单项的选择。该请求还可以是隐式请求,比如是退出在线服务所固有的 (例如,经由用户ID认证服务214)。响应于这种请求,许可证客户端模块232删除绑定到存储在本地仓库236中的用户ID的任何数字许可证或以其他方式使之无效。模块232还向许可证管理服务204发送卸载请求,从而告知服务204许可证已被从设备202卸载。这允许服务204更新未完结的数字许可证的拷贝数量的其计数或记录。除了管理数字许可证和使关于数字许可证的各种功能对用户而言可用,许可证管理服务204还允许附加的产品或服务各种出价被显示或以其他方式呈现给用户。时常,用户不知道可用的附加或升级的产品以及提供有附加或升级产品的服务。当用户访问服务 204 (直接地或经由许可证客户端模块234)时,服务204知道绑定到用户的用户ID的数字许可证。服务204可以访问软件产品或服务的列表或其他记录,并且基于绑定到用户的用户ID的数字许可证标识一个或多个对用户而言可用的附加或升级的产品。这些各种产品以及购买产品的选项可以呈现给用户。
16
例如,假设特定用户的用户ID被绑定到用于用户设备上的操作系统的数字许可证。如果用户在设备上重新安装操作系统或请求关于与操作系统相关联的数字许可证的消息,则许可证管理服务204可以检查看看操作系统的升级版本对要购买的用户而言是否可用。如果操作系统的这种升级版本是可用的,则服务204可以向用户显示升级版本的指示、用户将利用升级版本获得的添加的益处和/或服务的描述、以及购买该升级版本的选项。用户然后可以选择购买该升级版本,从而获得该升级版本的附加益处和/或服务。升级版本的购买可以由服务204来管理,或可替代地由另一个服务(例如,软件购买服务216) 管理。此外,该升级版本可以具有用于激活如上文所讨论的激活的升级版本的新产品密钥, 或可替代地来自已被激活的产品的先前版本的产品密钥可以用于产品的升级版本的数字许可证。图5图示了根据一个或多个实施例的实例许可证管理系统502。在一个或多个实施例中,许可证管理系统502是图2的许可证管理系统204或图1的许可证服务104。在其他实施例中,许可证管理系统502至少部分地在其他组件、模块或服务中实现。例如,许可证管理系统502的至少一部分可以在设备202中实现,比如许可证客户端模块232的一部分。在这样的实施例中,系统502可以提供用户界面并从设备202的用户接收请求,并且与许可证管理服务204通信以实现所述请求。这种用户界面可以以多种不同方式被显示或另外地呈现给用户,比如经由操作系统控制面板选项、经由系统或产品属性标签或窗口等等。许可证管理服务502包括添加许可证模块504、恢复许可证模块506、显示许可证模块508和基于时间的许可证管理模块510。尽管被示为单独的模块504、506、508和510, 但是应当理解模块504-510中一个或多个的功能可以被组合在一起。此外,应当理解,模块 504-510中一个或多个中的每一个的功能可以被分成不同的模块。设备(例如图2的设备202)的用户可以向许可证管理系统502以多种不同方式输入管理她或她的许可证的请求。例如用户可以选择管理许可证的链接,可以选择管理许可证的菜单项或按钮,可以输入管理许可证的文本命令,等等。当用户启动或登录到设备时, 当用户登录到在线服务(例如,且由图2的用户ID认证服务210认证)时,等等,链接或其他用户界面结构可以由运行在设备上的软件产品呈现给用户。不管做出管理用户许可证的请求的方式如何,响应于该请求,许可证管理系统502经由允许用户输入各种请求并管理绑定到他或她的用户ID的数字许可证的设备向用户显示或另外地呈现用户界面。许可证管理系统502允许用户管理绑定到他或她的用户ID的数字许可证。相应地,用户的用户ID被提供给系统502。提供给系统502的用户ID是如上文所讨论的用于用户的用户证书(例如从图2的用户ID认证服务214获得的)。添加许可证模块504管理绑定到用户的用户ID的数字许可证到许可证仓库(例如图2的仓库224)的添加。在一个或多个实施例中,当软件产品被激活时,数字许可证可以绑定到用户ID并被传送到许可证管理系统502。添加许可证模块504允许用户在其他时间输入使数字许可证绑定到他或她的用户ID的请求。模块504接收用于用户的用户证书(向模块504提供用户的用户ID)和要添加的产品密钥作为输入。该产品密钥可以以不同方式提供给模块504,比如由用户手动输入,由用户、由标识用于许可证的源(例如另一服务)的用户从另一个源拷贝(或剪切)或粘贴,等等。如果用户标识的产品密钥已经被用于激活软件产品,则对应于该产品密钥的数字许可证已在用户的设备上。相应地,模块504与设备的许可证客户端模块(例如,图2的模块232)通信以从设备的本地仓库取回数字许可证。如果数字许可证尚未绑定到用户的用户ID,则模块504将该数字许可证绑定到用户的用户ID。如果用户标识的产品密钥未被用于激活软件产品,则软件激活服务(例如图2的服务212)被访问以激活软件产品。许可证管理系统502可以访问软件激活服务以激活软件产品,或者可替代地另一个组件或模块可以访问软件激活服务以激活软件产品。添加许可证模块504从正被用户使用的设备接收数字许可证,或者可替代地从软件激活服务接收。如果尚未绑定到用户的用户ID(例如,通过使用户ID包括在数字许可证中),则模块504将数字许可证绑定到用户的用户ID。模块504还将数字许可证存储在许可证仓库(例如图2的仓库224)中。添加许可证模块504还可以可选地允许用户提供关于数字许可证的附加信息并且使该附加信息包括在数字许可证中。例如,用户可以提供他或她更容易理解的许可证(例如友好的名称)和/或软件产品的描述。这种友好的名称可以例如存储在图3的产品友好名称字段324中。恢复许可证模块506允许用户输入重新得到或恢复绑定到他或她的用户ID的数字许可证的请求。可能出现用户期望重新得到他或她的数字许可证的情形。例如用户可能拥有他或她期望将他或她的软件产品转移至的新机器,用户可能在他或她的设备上重新安装了操作系统(或安装新操作系统)并期望重新安装他或她的软件产品,用户可能已经改变他或她的机器中的硬件并且期望重新安装他或她的软件产品,等等。由许可证管理系统502呈现的用户界面允许用户输入恢复或重新得到他的或她的数字许可证的请求。响应于这种请求,恢复许可证模块506标识来自许可证仓库(例如图 2的仓库224)的绑定到用户的用户ID的许可证。这些数字许可证的列表被显示或另外地呈现给用户。该数字许可证列表可以以不同方式呈现,比如通过由用户提供的产品名称和友好名称(如果有)的列表,和/或列出来自数字许可证的其他信息。然后,用户可以从由模块506呈现的列表中的数字许可证中选择。模块506然后将所选的数字许可证传递到正被用户使用的设备(假设数字许可证中的权利允许用户在该设备上使用它们)。一旦要被恢复或重新得到的数字许可证被选择,则用于将所选的数字许可证返回到设备的过程与本文其他地方所讨论的相同(例如参考下文讨论的图8的过程 800)。显示许可证模块508向用户显示或另外地呈现许可证详细信息。模块508可以呈现绑定到用户的用户ID的数字许可证列表,并且用户可以从该列表中选择一个或多个许可证。该数字许可证列表可以以不同方式呈现,比如通过由用户提供的产品名称和友好名称(如果有)的列表,和/或列出来自数字许可证的其他信息。一旦被选择,来自数字许可证的附加信息也被显示。来自数字许可证的所有信息可以显示给用户(例如来自图3的数字许可证300的所有字段的数据),或者可替代地来自数字许可证的信息的子集可被显示。显示许可证模块508还允许用户从他或她正使用的设备卸载许可证。该用户标识 (例如从显示的列表中选择)他或她期望卸载的许可证,并且模块508将从设备的本地仓库删除或移除数字许可证的指示发送给设备的许可证客户端模块(例如图2的模块232)。在
1一个或多个实施例中,用户请求从他或她正在使用的一个设备中卸载许可证,使得他或她可以在另一个设备上重新得到或恢复该软件许可证。显示许可证模块508还允许用户输入删除从许可证到他或她的用户ID的绑定。用户标识(例如从显示的列表中选择)他或她想要删除绑定的许可证,并且模块508从许可证仓库(例如图2的仓库224)移除数字许可证。作为删除过程的一部分,模块508还可以将数字许可证发送到设备的许可证客户端模块(图2的模块232)以用于本地存储在设备上, 因为该数字许可证将不再由许可证管理服务502来存储和管理。基于时间的许可证管理模块510允许用户输入管理基于时间的许可证的请求。模块508可以呈现绑定到用户的用户ID的数字许可证列表,并且用户可以从该列表中选择一个或多个许可证。该数字许可证列表可以以不同方式呈现,比如通过由用户提供的产品名称和友好名称(如果有)的列表,和/或列出来自数字许可证的其他信息。用户标识(例如,从显示的列表中选择)许可证,并且可以指示该许可证的时间的期望量。例如,用户可以指示激活许可证特定持续时间(比如一小时、一天、一个月等)的请求。如果这种信息尚未用于许可证管理系统502,则用户还可以可选地输入账户信息(例如, 信用卡号)以针对期望持续时间付款。一旦被请求,模块508可以向设备的许可证客户端模块(例如图2的模块232)发送具有所指示的持续时间的数字许可证以用于本地存储在设备上。可替代地,模块508可以将更新已存储在设备上的数字许可证的有效日期字段的指示发送给许可证客户端模块。基于时间的许可证管理模块510还可以可选地管理如下面更详细讨论的许可证的自动更新和付款。用户标识(例如从显示的列表中选择)他或她希望自动更新的许可证并且授权自动计费到账户(例如信用卡或其他账户号),使得许可证被自动更新,如下面更详细地讨论的。图6是图示根据一个或多个实施例的用于获得并存储数字许可证的实例过程600 的流程图。过程600可以在软件、固件、硬件或其组合中实现。图6的左手侧上图示的过程 600的动作由诸如图2的设备202之类的设备执行。图6的右手侧上图示的过程600的动作由诸如图2的许可证管理服务204或图5的许可证管理系统502之类的许可证管理服务执行。过程600是用于获得并存储数字许可证的实例过程;获得和存储数字许可证的附加讨论参照不同的附图包括于此。在过程600中,获得软件产品的产品密钥(动作602)。该产品密钥可以以多种不同方式获得,比如从远程服务(比如图2的软件购买服务216)接收,从用户输入接收,等等。访问激活服务以使用产品密钥激活软件产品(动作604)。作为激活过程的一部分, 动作602中所获得的产品密钥被传送到激活服务。一旦被激活,包括产品密钥的数字许可证被接收(动作606)。该数字许可证典型地从激活服务接收,尽管可以可替代地从代表激活服务的另一个服务或应激活服务的请求接收。数字许可证和该数字许可证绑定到的用户ID的指示被保存到许可证管理服务 (动作608)。该远程服务是例如图2的许可证管理服务204或图5的许可证管理系统502。 数字许可证和用户ID的指示被许可证管理服务接收(动作610),并且该数字许可证在许可证仓库中被存储为绑定到用户ID (动作612)。用户ID可以在数字许可证被发送到许可证管理服务之前绑定到数字许可证,比如通过在将数字许可证发送到许可证管理服务之前将用户ID添加到数字许可证。可替代地,可以通过许可证管理服务将用户ID存储在数字许可证中或维护将用户ID与数字许可证相关联的单独记录来将用户ID绑定到数字许可证。然后,许可证管理服务允许基于用户ID对数字许可证的后续访问(动作614)。具有用户ID的用户可以从许可证管理服务取回数字许可证并且在设备上使用该数字许可证 (其可以是或可以不是软件产品从其激活的相同设备)。图7是图示根据一个或多个实施例的用于运行软件产品的实例过程700的流程图。过程700由诸如图2的设备202之类的一个或多个设备执行,并且可以在软件、固件、 硬件或其组合中实现。过程700是用于运行软件产品的实例过程;运行软件产品的附加讨论参照不同的附图包括于此。在过程700中,接收访问软件产品的请求(动作702)。该请求可以是用户请求,或者可替代地可以从另一个模块或组件接收。响应于该请求,检查关于许可访问软件产品的数字许可证是否是本地可用的(动作704)。这种本地可用的数字许可证典型地存储在实现过程700的设备的本地仓库中。如果数字许可证没有期满(例如当前日期和/或时间未超过数字许可证的有效日期和/或时间)并且数字许可证中的任何其他条款都满足,则与软件产品相关联的数字许可证允许访问软件产品。如果允许访问软件产品的本地数字许可证是可用的,则根据数字许可证访问软件产品(动作706)。该访问包括运行程序,并且可以可选地涉及基于数字许可证中的条款对运行程序的各种限制。返回到动作704,如果允许访问软件产品的本地数字许可证是不可用的,则对数字许可证的请求被发送到许可证管理服务(动作708),比如图2的服务204或图5的许可证管理系统502。该请求是针对绑定到实现过程700的设备的当前用户的用户ID的软件产品的数字许可证的请求。该用户ID由如上文所讨论的在线服务(比如互联网服务的Microsoft Windows Live 网络)来校验。然后,检查关于所请求的数字许可证是否从许可证管理服务接收(动作710)。由于多种不同的原因,所请求的数字许可证可能不被许可证管理服务返回,所述原因比如数字许可证期满,没有软件产品的数字许可证被绑定到用户ID,等等。如果从许可证管理服务接收到所请求的数字许可证,则根据数字许可证访问软件产品(动作706)。可替代地,不接收数字许可证,可以如上文所讨论地接收用户具有软件产品的数字许可证的指示。然而,如果所请求的数字许可证没有从许可证管理服务接收,则对软件产品的访问被否定(动作712)。图8是图示根据一个或多个实施例的用于返回所请求的数字许可证的实例过程 800的流程图。过程800由诸如图2的许可证管理服务204或图5的许可证管理系统502 之类的一个或多个服务执行,并且可以以软件、固件、硬件或其组合实现。过程800是用于返回所请求的数字许可证的实例过程;返回所请求的数字许可证的附加讨论参照不同的附图包括于此。在过程800中,接收针对绑定到用户ID并与软件产品相关联的数字许可证的请求 (动作802)。从诸如图2的设备202接收该请求。然后检查关于绑定到用户ID的软件产品的数字许可证是否是可用的(动作804)。该检查可以基于维护数字许可证到用户ID的绑定的方式而采取多种不同的形式。例如,该检查可以包括检查由所述服务在许可证仓库中维护的数字许可证中的用户ID,检查将用户 ID与数字许可证相关联的表或其他记录,等等。可用的数字许可证是指许可证仓库中现有的数字许可证。如果绑定到用户ID的软件产品的数字许可证不是可用的,则实现过程800的服务拒绝将数字许可证返回给请求者(动作806)。然而,如果绑定到用户ID的软件产品的数字许可证是可用的,则检查关于是否可以根据数字许可证的条款返回数字许可证(动作808)。可能出现以下情形尽管软件产品的数字许可证被绑定到用户ID,但是数字许可证的条款指示该数字许可证不再有效。例如, 该数字许可证可能期满,可能已被撤销,可能已被返回到太多其他请求者(例如存在未完结的数字许可证的超过阈值数量的拷贝),等等。如果数字许可证的条款指示数字许可证可以被返回给请求者,则实现过程800的服务将数字许可证返回给请求者(动作810)。可替代地,不返回数字许可证,可以如上文所讨论地返回具有用户ID的用户拥有软件产品的数字许可证的指示。然而,如果数字许可证的条款指示该数字许可证不能被返回给请求者,则实现过程800的服务拒绝将数字许可证返回给请求者(动作806)。本文所讨论的绑定到用户ID的数字许可证使用的一种方式是允许不同各方被识别和/或接收源于这些数字许可证的附加产品或服务的销售收入。各方可以在如上所讨论的数字许可证中被标识,比如OEM、转售商等等。关于对用户而言可用的附加产品或服务的出价(offer)可以基于这些各方而被呈现。例如,更新到软件产品的新版本或具有附加功能的软件产品的不同版本的出价可被呈现给用户。通过另一个实例,对以折扣价格购买可以与软件产品一起使用的外围设备的出价可以被呈现给用户。这些出价可以以多种不同方式且在多种不同时间呈现给用户,比如当用户登录到在线服务(经由图2的用户ID认证服务214),当用户正经由图2的许可证管理服务204或图5的许可证管理系统502回顾关于他或她的数字许可证的信息时,当数字许可证正被从服务204或系统502取回时,等等。作为特定实例,假设用户从零售商XYZ公司购买软件产品。当用户管理他或她的许可证时,可以向用户呈现以一定折扣购买附加设备的出价。例如,可以向用户呈现出价 “你上周从XYZ公司购买了你的新软件-本周你有资格以低(Off )100美元的价格购买数码相机和打印机以与你的新软件一起使用”。给定在数字许可证中标识的各方,当针对产品或服务的出价被呈现给用户并且用户接受该出价时,数字许可证中标识的各方的一个或多个可以被识别为接受该出价。该接受典型地可以是产品或服务的附加出售。该用户可以以不同方式接受这种出价,比如通过选择到在线商店(store)的链接以购买产品或服务,打印出凭证(coupon)(例如其上具有数字许可证的标识符)并将该凭证带到本地软件商店(例如,传统商业公司),等等。相应地,可以向用户呈现与它们具有数字许可证的软件产品相关联的附加服务或产品的销售的出价, 并且数字许可证中标识的各方具有接收针对这些销售的附加收入和/或认可的能力。这还可以被视为关于数字许可证中标识的各方的数据被移动到其他服务或设备以接收该附加收入和/或认可。作为特定实例,假设用户从零售商ABC公司购买带有安装的软件产品的新计算机。当用户正在管理他或她的许可证时,可以向用户呈现以一定折扣购买附加设备的出价。 例如,可以向用户呈现如下出价“你从ABC公司购买了你的新计算机-这周你有资格以 50%的价格从CTZ公司购买打印机以与你的新计算机一起使用”。如果用户接收该出价并从 XYZ公司购买了打印机,则ABC公司(在数字许可证中标识为OEM)可以被认为至少部分地负责该打印机的销售。ABC公司然后可以从XYZ公司接收用于打印机的该销售的附加收入和 /或其他认可。图9是图示根据一个或多个实施例的用于使用数字许可证的实例过程900的流程图。过程900由诸如图2的许可证管理服务204或图5的许可证管理系统502之类的一个或多个服务执行,并且可以以软件、固件、硬件或其组合实现。过程900是用于使用数字许可证的实例过程;使用数字许可证的附加讨论参照不同的附图包括于此。在过程900中,基于数字许可证将产品和/或服务的出价传送给用户(动作902)。 该出价可以以多种不同方式传送,比如在用户管理他或她的数字许可证的同时、当从许可证管理服务取回数字许可证时、在电子邮件信息中等等显示给用户。从数字许可证标识一方(动作904)。可以在数字许可证中标识多种不同各方,比如软件产品的制造商、软件产品的转售商、向设备分发软件产品的OEM等等。确定何时进行与数字许可证相关联的附加销售(动作906)。该确定可以例如在动作902中传送给用户的出价被用户接受且出价的产品或服务被用户购买时做出。生成所述方被认可为与附加销售相关联的指示(动作908)。该指示可选地被传送到远程服务(动作910)。使用该指示的方式可以改变。例如,该指示可以用于信任所述方进行附加销售并且将附加销售的收益的至少一部分转移给该方。返回图2,许可证管理服务204 (或图5的许可证管理系统502)还可以基于许可证仓库224中的数字许可证执行多种不同的功能。在一个或多个实施例中,许可证管理服务204监视存储在许可证仓库2M中的基于时间的许可证。服务204可以被配置成当基于时间的许可证期满时自动更新它们。该自动更新可以例如响应于自动更新许可证的用户请求来进行。服务204可以利用支付信息(例如信用卡号)来配置,或可替代地可以与另一个服务通信以获得用于更新许可证的支付。一旦接收到针对更新许可证的支付,服务204可以更新许可证的有效日期和/或时间以反映新的(更后面的)有效日期和/或时间。例如,设备202的用户可以请求使用软件产品一个月并为此付费。与软件产品相关联的数字许可证的有效日期指示在一个月内期满。用户还可以请求服务204自动更新许可证。响应于这样的请求,当数字许可证的有效日期到达时,服务204自动针对附加一个月的使用向用户收费。服务204还更新数字许可证中的有效日期以反映有效日期为另外持续一个月。图10是图示根据一个或多个实施例用于自动更新基于时间的许可证的实例过程 1000的流程图。过程1000由诸如图2的许可证管理服务204或图5的许可证管理系统502 之类的一个或多个服务执行,并且可以以软件、固件、硬件或其组合中实现。过程1000是用于自动更新基于时间的许可证的实例过程;自动更新基于时间的许可证的附加讨论参照不同的附图包括于此。在过程1000中,检查关于数字许可证是否将被更新(动作1002)。该检查例如基于数字许可证是否是基于时间的许可证并基于用户是否已经请求了许可证的自动更新来进行。过程1000以规则的或不规则的间隔来执行该检查,直到确定了数字许可证要被更新。如果数字许可证要被更新,则该许可证可选地被预激活(动作1004)。在一些情形中,如果产品的数字许可证要被更新,则获得产品的新产品密钥或者维护先前的产品密钥但要由软件激活服务(例如图2的服务212)重新激活。在这样的情形中,在动作1004中访问该软件激活服务以预激活用于已更新的数字许可证的产品密钥。不管许可证是否在动作1004中被预激活,数字许可证被自动更新(动作1006)。该自动更新独立于数字许可证所绑定到的用户ID当前是否登录到在线服务(例如,经由图2 的用户ID认证服务214)。相反,该更新代表用户自动进行。存储具有新有效日期的更新的许可证(动作1008)。更新的许可证的该存储可以以多种不同方式执行,比如取代数字许可证的先前版本,修改数字许可证的先前版本以包括新的有效日期,等等。将具有新有效日期的该更新的许可证发送到设备(动作1010)。在一个或多个实施例中,该发送发生在下一次设备请求数字许可证时。可替代地,该发送可以在不同的时间发生,比如下一次用户登录到在线服务(例如,经由图2的用户ID认证服务214)。过程1000然后返回到动作1002以继续检查数字许可证是否要被更新。应当注意,如上所讨论的数字许可证到用户ID的绑定和数字许可证存储在许可证管理服务处允许多种不同的使用场景。购买软件产品的用户购买用于使用该软件产品的一组权利,并且这组权利在数字许可证的条款中得到反映。该用户使用产品密钥激活该软件产品,并且由许可证管理服务通过将数字许可证绑定到用户的用户ID来维护该产品密钥。如果用户随后希望重新安装软件产品(例如,因为由于对他或她的设备的修理造成先前的安装被移除,因为用户买了新设备,等等),他或她可以从许可证管理服务获得数字许可证(包括产品密钥),而不需要找到他或她购买的具有产品密钥的盘或盒。用户进一步能够从多种不同设备访问他或她购买的软件产品。这可以被看作允许用户的软件产品或数字许可证随着用户漫游(roam)到不同的设备。例如,假设用户已经在他或她的家用计算机上激活并安装了软件产品,并且还使绑定到他或她的用户ID的软件产品的数字许可证存储在许可证管理服务中。如果用户离开家旅行并且希望在另一个计算机上使用该软件产品,则用户可以使用他或她的用户ID登录到在线服务并且得到该软件产品的数字许可证以便在该另一个计算机上运行该软件产品。使用本文所讨论的技术,可以看到,软件产品的数字许可证经由特定用户的用户 ID而与这些特定用户相关联。因此,不是绑定到特定设备或硬件配置,而是将数字许可证绑定到特定用户ID。如上所讨论,当数字许可证被创建时,该数字许可证由软件激活服务212数字签名。此外,可以由许可证客户端模块232或服务204(或图5的许可证管理系统502)对数字许可证进行各种改变,比如将用户ID添加到数字许可证、改变许可证的有效日期等等。当对数字许可证进行这样的改变时,使用签名者的公/私密钥对中的私钥对经改变的数字许可证进行数字签名。作出改变的服务或模块(例如系统502的服务204或模块232)可以是签名者,或可替代地作出改变的服务或模块可以与软件激活服务212通信以使服务212对经改变的数字许可证进行签名。图11图示了根据一个或多个实施例的可被配置成实现转移状态和数据的交互模型的实例计算设备1100。计算设备1100可以是例如图1的设备102或图2的设备202,或者可以实现图1的一个或多个服务104或108、图2的服务204或212-222或图5的系统 502的至少一部分。计算设备1100包括一个或多个处理器或处理单元1102 ;—个或多个计算机可读介质1104,其可以包括一个或多个存储器和/或存储组件1106 ;一个或多个输入/输出(I/ 0)设备1108 ;以及允许各种组件和设备彼此通信的总线1110。计算机可读介质1104和/ 或一个或多个I/O设备1108可以作为计算设备1100的一部分而包括在其中,或者可替代地可以耦合到计算设备1100。总线1110表示一个或多个若干类型的总线结构,包括存储器总线或存储器控制器、外围总线、加速图形端口、处理器或局部总线等等,其使用多种不同的总线架构。总线1110可以包括有线和/或无线总线。存储器/存储组件1106表示一个或多个计算机存储介质。组件1106可以包括易失性介质(比如随机存取存储器(RAM))和/或非易失性介质(比如只读存储器(ROM)、闪存、 光盘、磁盘等等)。组件1106可以包括固定介质(例如,RAM、ROM、固定硬盘驱动器等)以及可移动的介质(比如,闪存驱动器、可移动硬盘驱动器、光盘等等)。本文讨论的技术可以在具有由一个或多个处理单元1102执行的指令的软件中实现。应当理解,不同的指令可以存储在计算设备1110的不同组件中,比如处理单元1102中、 处理单元1102的各种高速缓存存储器中、设备1100的其他高速缓存存储器(未示出)中、其他计算机可读介质上等等。此外,应当理解,指令被存储在计算设备1110中的位置可以随时间改变。一个或多个输入/输出设备1108允许用户输入命令和信息到计算设备1100,并且还允许信息被呈现给用户和/或设备的其他组件。输入设备的实例包括键盘、光标控制设备(例如鼠标)、麦克风、扫描器等等。输出设备的实例包括显示设备(例如监视器或投影仪)、扬声器、打印机、网卡等等。本文中可以在软件或程序模块的总体背景下描述各种技术。一般地,软件包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。这些模块和技术的实现可以存储在某种形式的计算机可读介质中或跨某种形式的计算机可读介质传输。计算机可读介质可以是可以被计算设备访问的任何可用的介质或媒质。通过实例但非限制,计算机可读介质可以包括“计算机存储介质”和“通信介质”。“计算机存储介质”包括以任何方法或技术实现的用于存储诸如计算机可读指令、 数据结构、程序模块或其他数据之类的信息的易失性和非易失性、可移动和不可移动的介质。计算机存储介质包括但不限于,RAM、ROM、EEPR0M、闪存或其他存储器技术、CD-ROM、数字通用盘(DVD )或其他光存储器、盒式磁带、磁带、磁盘存储器或其他磁存储设备、或可以用于存储期望的信息并可以被计算机访问的任何其他介质。“通信介质”典型地包含计算机可读指令、数据结构、程序模块或已调制数据信号 (比如载波或其他传输机制)中的其他数据。通信介质还包括任何信息传递介质。术语“已调制的数据信号”意指这样的信号使其特性中的一个或多个按照在信号中编码信息的方式来设置或改变。通过实例但非限制,通信介质包括诸如有线网络或直接布线连接之类的有线介质以及无线介质(比如声学、RF、红外和其他无线介质)。上述介质的任意组合也包括在计算机可读介质的范围内。
一般地,本文描述的功能或技术中任意一个可以使用软件、固件、硬件(例如固定的逻辑电路)、手动处理或这些实现方式的组合来实现。如本文所使用的术语“模块”和“组件”一般地表示软件、固件、硬件或其组合。在软件实现方式的情况下,该模块或组件表示当在处理器(例如一个或多个CPU)上被执行时执行指定任务的程序代码。该程序代码可以存储在一个或多个计算机可读存储器设备中,其进一步描述可以参照图11找到。本文描述的转移状态和数据的交互模型技术的特征是平台独立的,这意味着该技术可以在具有多种处理器的多种商业计算平台上实现。尽管以特定于结构特征和/或方法动作的语言描述了主题,但是应当理解,所附权利要求中定义的主题不必被限于上述特定特征或动作。相反,上述特定特征和动作是作为实现权利要求的实例形式而被公开的。
权利要求
1.一种由一个或多个计算设备实现的方法,该方法包括从绑定到用户的用户ID的数字许可证识别(904)与该数字许可证相关联的一方,该数字许可证标识用于软件产品的一组权利;确定(906)何时进行与数字许可证相关联的附加销售;以及生成(908)该方被认可为与附加销售相关联的指示。
2.如权利要求1所述的方法,进一步包括 向用户传送购买附加产品或服务的出价;以及其中所述确定包括确定当用户接受所述出价时进行与数字许可证相关联的附加销售。
3.如权利要求1所述的方法,其中与数字许可证相关联的所述方包括软件产品的转售商。
4.如权利要求3所述的方法,其中所述数字许可证包括用户ID和软件产品的转售商的标识符。
5.如权利要求1所述的方法,其中与数字许可证相关联的所述方包括分发设备连同软件产品的初始设备制造商。
6.如权利要求5所述的方法,其中所述数字许可证包括用户ID和初始设备制造商的标识符。
7.如权利要求5所述的方法,其中所述数字许可证包括用户ID和由设备用来激活软件产品的产品密钥。
8.如权利要求1所述的方法,其中所述数字许可证通过使用户ID包括在数字许可证中来绑定到用户ID,其中该数字许可证进一步包括软件产品的制造商的标识符,并且其中所述方包括软件产品的制造商。
9.如权利要求1所述的方法,进一步包括代表用户自动更新数字许可证,而与用户是否在更新时间利用用户ID登录到在线服务无关。
10.一种由一个或多个设备实现的许可证管理系统,该许可证管理系统包括添加许可证模块(504),被配置成从第一设备接收第一用户请求以向由所述一个或多个设备的至少一个维护的许可证仓库添加绑定到用户的用户ID的数字许可证;恢复许可证模块(506),被配置成从第一设备接收第二用户请求以从许可证仓库恢复绑定到用户的用户ID的一个或多个数字许可证;以及显示许可证模块(508),被配置成显示与绑定到用户的用户ID的所述一个或多个数字许可证的每一个有关的许可证详细信息。
11.如权利要求10所述的许可证管理系统,其中所述显示许可证模块进一步被配置成接收用户请求以删除绑定到用户的用户ID的所述一个或多个数字许可证的至少一个的绑定;以及从许可证仓库移除所述至少一个数字许可证。
12.如权利要求10所述的许可证管理系统,其中所述显示许可证模块进一步被配置成接收用户请求以从第一设备卸载绑定到用户的用户ID的所述一个或多个数字许可证的至少一个;以及向第一设备发送从第一设备的本地仓库移除所述至少一个数字许可证的指示。
13.如权利要求10所述的许可证管理系统,进一步包括基于时间的许可证管理模块, 其被配置成独立于用户当前是否利用用户ID登录到在线服务,确定绑定到用户的用户ID的所述一个或多个数字许可证的至少一个何时被更新;自动地更新所述至少一个数字许可证,产生针对所述至少一个数字许可证的新的有效日期;存储具有新有效日期的所述至少一个数字许可证;以及随后向设备发送具有新有效日期的所述至少一个数字许可证,用户经由该设备利用用户ID登录到在线服务。
14.如权利要求13所述的许可证管理系统,其中所述至少一个数字许可证包括用户 ID和由设备用来激活软件产品的产品密钥这二者。
15.如权利要求14所述的许可证管理系统,其中所述至少一个数字许可证进一步包括软件产品的制造商、软件产品的转售商和随所述设备分发软件产品的初始设备制造商中一个或多个的标识符。
全文摘要
从绑定到用户的用户ID的数字许可证识别与数字许可证相关联的一方。该数字许可证标识针对软件产品的一组权利。做出关于何时进行与软件许可证相关联的附加销售的确定,并且生成所述方被认可为与该销售相关联的指示。此外,许可证管理服务可以独立于用户当前是否利用用户ID而登录到在线服务来确定数字许可证将何时更新。数字许可证被自动更新并自动计费(billedfor)(如果得到用户授权),从而产生数字许可证的新有效日期。具有新有效日期的数字许可证被存储并且随后被发送到设备,用户经由该设备利用用户ID登录到在线服务。
文档编号G06Q30/00GK102422295SQ201080020795
公开日2012年4月18日 申请日期2010年5月4日 优先权日2009年5月12日
发明者科基斯 A., 尼基丁 E., 瓦拉马尼 V. 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1