具体实施方式
在此讨论基于用户标识的增强产品功能。通常,使用与软件产品相关联的产品密钥,经由一设备来激活该软件产品。作为激活处理的一部分,将该软件产品的数字许可返回到该设备。该数字许可可以包括该产品密钥,并且被绑定到该设备的用户的用户ID。作为绑定处理的一部分,也可以可选地创建用户的用户ID。被绑定到用户ID的数字许可和产品密钥也被远程许可服务存储。用户随后可以使多个不同的设备取回被绑定到他或她的用户ID的数字许可和产品密钥,从而允许用户将数字许可转移到那些设备并且依据数字许可的条款在那些设备上使用该软件产品。这些不同的设备可以是该用户所拥有的,或者替代地可以是由其他人拥有的但简单地被该用户使用的。如下面更详细地讨论的,也可以由远程许可服务保持与该软件产品和/或数字许可有关的各种附加信息。
图1图示了依据一个或多个实施例的实现基于用户标识的增强产品功能的示例系统100。系统100包括可以经由网络106与许可服务104通信的多个(n个)设备102。网络106可以是多种不同的网络,包括因特网、局域网(LAN)、公共电话网、内部网、其它公共和/或专用网络、其组合等。许可服务104保持与设备102的一个或多个用户的用户标识符(ID)相关联的或被绑定到设备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由用于在线服务的验证服务验证和/或提供。
这里引用了加密和密码术,其可以包括对称密钥加密和密码术、以及利用公共/私有密钥对的公共密钥加密和密码术。尽管对于本领域技术人员而言这样的密钥密码术是公知的,但这里包括对这样的密码术的简要概述以便帮助读者。在公共密钥密码术中,实体(诸如,用户、硬件或软件组件、设备、域等)已经将其与公共/私有密钥对相关联。可以使得公共密钥是公众可得到的,而该实体将私有密钥保持为秘密的。在没有私有密钥的情况下,通过计算非常难以对使用公共密钥加密的数据进行解密。因此,数据可以被具有公共密钥的任一实体加密,而只能由具有对应私有密钥的实体解密。另外,可以通过使用数据和私有密钥来产生数据的数字签名。在没有私有密钥的情况下,通过计算非常难以创建可以使用公共密钥被校验的签名。具有公共密钥的任一实体可以通过将使用公共密钥获得的校验值与原始数据进行比较,来使用该公共密钥校验数字签名,并且如果两者相同,则确认没有一方篡改(tamper with)或更改被数据签名的数据。
另一方面,在对称密钥密码术中,两个实体知道共享密钥(也被称为对称密钥)并将其保持为秘密。具有共享密钥的任一实体典型地能够对利用该共享密钥被加密的数据进行解密。在没有共享密钥的情况下,通过计算非常难以对利用该共享密钥被加密的数据进行解密。因此,如果两个实体都知道共享密钥,则每个实体可以加密数据,其可以被另一实体解密,但是如果其它实体不知道共享密钥则其它实体不能解密数据。
图2图示了依据一个或多个实施例的实现基于用户标识的增强产品功能的示例系统200。系统200更详细地图示了依据一个或多个实施例的图1的系统100的各个组件的示例。系统200包括设备202,其可以是例如图1的设备102。系统200还包括许可管理服务204,其可以是例如图1的许可服务104。系统200还包括附加服务,其可以是例如图1的在线服务108。这些附加服务包括:软件激活服务212、用户ID验证服务214、软件购买服务216、联系(relationship)服务218、产品有效性(validation)服务220、以及产品注册服务222。系统200还包括许可存储装置224,可以通过许可管理服务204将数字许可存储在该许可存储装置224中。服务204和212-222也可以被称为远程服务,因为它们典型地与设备202位于不同的物理位置(例如,在不同的房间中、在不同的建筑物中、在不同的州或国家等等)。
设备202包括许可客户端模块232、软件保护客户端模块234、以及本地存储装置236。本地存储装置236在设备202的本地存储装置上实现,诸如,磁盘、光盘、固态存储器(例如,闪存、RAM等)等等。设备202的该本地存储装置可以是固定的或可移动的一个或多个存储介质。
用户ID验证服务214是在线服务的验证服务。在线服务可以向设备202的用户提供多种特征和功能。在一个或多个实施例中,该在线服务是因特网服务的微软Windows LiveTM 网络。关于因特网服务的微软Windows LiveTM 网络的附加信息可从华盛顿州的雷蒙德的微软公司得到。然而,应理解,替代地可以使用其它在线服务。
与所使用的特定在线服务无关,设备202的用户具有用于该在线服务的用户ID。用于该在线服务的用户ID标识该特定用户,并且允许将他或她与该在线服务的其它用户区别开。用户可以通过将他或她的标识信息提供给许可客户端模块232(其继而将该标识信息传递到用户ID验证服务214),来登入到或登录到在线服务。标识信息的这种传递典型地以安全方式进行,诸如,通过加密标识信息。该标识信息可以采取多种不同形式,诸如,用户ID和密码组合、指纹、特定口令、数字认证、等等。服务214接收该标识信息,并将所接收的信息与之前由服务214存储的信息进行比较。如果所接收的信息和之前存储的信息匹配(例如,相同),则用户被验证,并且用户凭证被返回给模块232。如果所接收的信息和之前存储的信息不匹配(例如,不相同),则用户未被验证,并且用户凭证不被返回给模块232。
用户凭证标识设备202的当前用户,其是登入到或登录到在线服务的用户。该用户凭证可以采取多种不同形式。在一个或多个实施例中,凭证是设备202的当前用户的用户ID的声明,其中该声明由服务214数字签名的。该声明也可以被称为安全票据或令牌,在一个或多个实施例中,其是使用服务214的公共/私有密钥对的私有密钥被数字签名的。设备202可以将用户凭证传递到其它设备和服务(例如,许可管理服务204),其继而可以信赖用户凭证中的用户ID作为设备202的当前用户的用户ID。这样的其它设备和服务可以具有这样的信赖,这是因为用户凭证是由信赖方(用户ID验证服务214)提供的。
软件激活服务212由设备202访问以便激活软件产品。软件产品可以由设备202的用户以多种不同的方式购买或者以其它方式获取。在一个或多个实施例中,软件产品可以从软件购买服务216在线地或电子地获得。软件购买服务216可以是例如销售软件产品的在线或电子商店。另外,软件产品可以从其它源获得,诸如本地软件商店(例如,实体店)、设备经销商或分销商、另一用户等等。
与获取软件产品的方法无关,软件产品具有相关联的产品密钥。与软件产品相关联的产品密钥有助于校验软件产品未被不正当地拷贝。产品密钥可以采取多种不同形式。在一个或多个实施例中,产品密钥是由字母数字组成的字符的序列,但替代地可以使用其它符号或字符。例如,产品密钥可以是序列号、一组5个5字符的字符串等等。与软件产品相关联的产品密钥可以以多种不同的方式获得,诸如被印制在软件产品的盒子或分发介质(例如,光盘)上、作为在线或电子购买的一部分而被显示或者被电子地邮寄给用户等等。
然而,在其它实施例中,产品密钥可以采取不同的形式。例如,产品密钥可以是对于在设备202处存在特定硬件设备(诸如,存在特定光盘(例如,CD或DVD)、存在特定固态存储器设备(例如,通用串行总线(USB)、闪存设备)、存在特定智能卡、存在加密狗等)的指示。产品密钥可以存储在这样的硬件设备上并且由软件保护客户端模块234获得,或者替代地软件保护客户端模块234可以检测这样的硬件设备的存在并且产生产品密钥(例如,证明模块234已经检测到存在特定设备的签名数字认证)。
在给出与软件产品相关联的产品密钥的情况下,软件保护客户端模块234将产品密钥传递给软件激活服务212。模块234和服务212之间的该传递可以以安全的方式进行,诸如使用多种不同的加密技术。软件激活服务212分析产品密钥,并基于产品密钥确定是否可以激活软件产品。可以以多种方式执行该分析,并且该分析可以包括确定产品密钥是否是验证的,确定产品密钥是否在之间已经被激活(并且至今未被去激活)等等。
基于产品密钥的分析,软件激活服务212确定是否要激活软件产品。如果服务212确定不激活软件产品,则将对激活软件产品的这种否认或拒绝的指示返回到软件保护客户端模块234。然而,如果服务212确定要激活软件产品,则服务212尝试产生数字许可。如果服务212可以产生数字许可,则服务器212将软件产品的数字许可返回给模块234。如果服务212由于某个原因(例如,已经使用产品密钥激活了产品)而不能产生许可,则没有数字许可被返回给模块234。服务212可以产生该数字许可,或者替代地另一组件或模块可以代表服务212产生数字许可。软件激活服务212还可选地将对于软件产品是否被激活的确定的指示传递给许可管理服务204和/或产品有效性服务220。该指示允许保持基于产品密钥的激活的历史,如下文中更详细地讨论的。
如果要激活软件产品,则数字许可被返回给软件保护客户端模块234。在一个或多个实施例中,数字许可被以安全的方式返回,诸如经由加密通信信道、通过利用设备202和/或软件保护客户端模块234的公共密钥将数字许可加密等等。
由服务212产生(或代表服务212)的数字许可标识设备202的用户对于相关联的软件产品所具有的权力。这些权力也被称为数字许可的条款(term),或者用户具有的对于使用相关联的软件产品的允许。数字许可还典型地包括从软件保护客户端模块234接收的产品密钥。可以在数字许可中标识多种不同的权力,诸如对于运行程序的权力、对于在特定数量的机器上安装程序的权力、可以运行程序的持续期(例如,一个月、一年等),使能和/或禁止程序的哪些特征等等。可以以多种不同的方式(例如,基于将权力与产品密钥相关联的数据库或其它记录、基于其它规则或算法等等)由服务212(或另一组件或模块)标识要在数字许可中指示的特定权力。数字许可还典型地被使用服务212或代表212产生数字许可的另一组件或模块的公共/私有密钥对的私有密钥而数字签名。
数字许可可以以多种不同的方式实现。在一个或多个实施例中,以标记语言(诸如XrML(可扩展版权标记语言)语言)来实现数字许可。替代地,可以使用其它的公共和/或专用语言或技术来实现数字许可。
可以以多种不同的方式来产生数字许可。在一个或多个实施例中,响应于来自软件保护客户端模块234的请求来产生数字许可,该请求包括产品密钥。还可以对数字许可的产生设置附加的条件,和/或可以响应于不同的请求来产生数字许可。例如,可以对软件产品开发者的表示设置电话呼叫,并且该表示可以响应于产生数字许可的用户请求而产生许可(例如,用户经过电话将用户具有的产品密钥提供给该表示),并且将许可发送给软件保护客户端模块234。通过另一示例,附加的条件可以指示为了产生数字许可而校验诸如扫描用户指纹(例如,由软件保护客户端模块234提供给软件激活服务212)的生物计量信息。仍通过另一示例,附加的条件可以指示为了产生数字许可而校验用户的数字证书(例如,由软件保护客户端模块234提供给软件激活服务212)。
图3图示了依据一个或多个实施例的示例数字许可300。数字许可300包括多个字段或部分302-340,其包括用于许可300的各种信息。应理解,在示例的数字许可300中图示的这些字段仅仅是示例,并且可以从数字许可中移除在示例许可300中图示的一个或多个字段,可以将一个或多个其它字段添加到数字许可,可以组合一个或多个字段,可以将一个字段分割为多个字段等等。另外,应注意,可以加密数字许可300,和/或可以加密字段302-340中的单独的字段(例如,使用上面讨论的对称密钥和/或公共密钥加密)。在附加地引用图2的组件的情况下讨论图3。
激活日期字段302存储标识与数字许可300对应的产品密钥(例如,在如下面所讨论的产品密钥字段328中包括的)最近被用来激活软件产品的日期(并且可选地为时间)的数据。激活日期字段302在与数字许可300对应的软件产品被激活时由软件激活服务212设置,或者替代地由创建许可300的另一组件或模块设置。
创建日期字段304存储标识数字许可300被创建的日期(并且可选地为时间)的数据。创建日期字段304在许可300被创建时由软件激活服务212设置,或者替代地由创建许可300的另一组件或模块设置。
项目信息字段306存储描述数字许可300的数据。该数据可以是例如描述数字许可的各种特征(诸如,数字许可300的大小、在数字许可300中存在的字段的指示等等)的可扩展标记语言(XML)文档。项目信息字段306在许可300被创建时由软件激活服务212设置,或者替代地由创建许可300的另一组件或模块设置。
数字许可ID字段308存储数字许可300的标识符,允许将许可300与其它数字许可区分开。在一个或多个实施例中,许可300的标识符为本地唯一标识符,允许在更小的(例如,比全球小的)组内将数字许可300与其它数字许可区分开。数字许可ID字段308在许可300被创建时由软件激活服务212设置,或者替代地由创建许可300的另一组件或模块设置。
到期日期字段310存储标识用于数字许可300的到期日期(并且可选地为时间)的数据。该到期日期用于基于时间的许可,其中,用户对软件产品所具有的权力(如进一步以数字许可300标识的)具有有限持续期。用户对软件产品所具有的权力的持续期在到期日期字段310中标识。到期日期字段310由软件激活服务212设置或者替代地由创建许可300的另一组件或模块设置,并且可以可选地随后由许可管理服务204和/或软件保护客户端模块234更新。
文件字段312存储描述数字许可的数据。该数据包括例如如上所讨论的关于该数字许可被给予用户的一组权力,诸如,对于可以在不同设备上同时运行软件产品的多少拷贝的指示、对于被使能的软件产品的特定特征的指示等等。该数据还可以包括其它信息,诸如,为设备分发与产品密钥(以及因此数字许可)相关联的软件产品的原始设备制造商(OEM)的标识符、与产品密钥(以及因此数字许可)相关联的软件产品的经销商的标识符等等。文件字段312由软件激活服务212设置或者替代地由创建许可300的另一组件或模块设置,并且可以可选地随后由许可管理服务204和/或软件保护客户端模块234更新。
在数据库中存在的标志字段314是指示许可300是否存储在许可存储装置224中的标志。在数据库中存在的标志字段314被许可管理服务204设置为第一值(例如,“1”)以便指示许可300被存储在许可存储装置224中,并且被服务204清除或设置为第二值(例如,“0”)以便指示许可300没有被存储在许可存储装置224中。
许可描述字段316存储描述许可300的数据。该数据可以是例如在文件字段312中标识的权力的一般描述、拥有许可300的人或实体的名称或其它标识符等等。许可描述字段316在许可300被创建时由软件激活服务212设置,或者替代地由创建许可300的另一组件或模块设置,并且可以可选地随后由许可管理服务204和/或软件保护客户端模块234更新。
全球软件许可ID字段318存储标识许可300的数据,允许将许可300与其它数字许可区分开。在一个或多个实施例中,标识许可300的数据可以是全球唯一ID(GUID)。全球数字许可ID字段318在全球规模上将许可300与其它数字许可区分开,而数字许可ID字段308允许在更小的规模上将许可300与其它数字许可区分开。全球数字许可ID字段318在许可300被创建时由软件激活服务212设置,或者替代地由创建许可300的另一组件或模块设置。
用户ID字段320是数字许可300被创建时设备202的当前用户的标识符。在字段320中保持的用户ID允许数字许可300被绑定到特定用户,如下面更详细地讨论的。用户ID字段320可以包括例如从上面讨论的用户ID验证服务214接收的凭证或者仅仅是来自这些凭证的用户ID。用户ID字段320在数字许可300被绑定给特定用户时由许可管理服务204或许可客户端模块232设置。数字许可300被绑定到的用户ID也可以随后被服务204和/或客户端模块232改变,如下面更详细讨论的。
修改日期字段322存储标识数字许可300最近被修改的日期(并且可选地为时间)的数据。修改日期字段322在许可300被修改时由许可管理服务212和/或许可客户端模块232设置。
产品友好名称字段324存储标识与数字许可300相关联的软件产品的用户友好的名称的数据。产品友好名称字段324在许可300被创建时由软件激活服务212设置,或者替代地由创建许可300的另一组件或模块设置。产品友好名称字段324也可以可选地随后由许可管理服务204和/或许可客户端模块232诸如响应于改变产品友好名称的用户请求而改变。
产品ID字段326是与数字许可300相关联的软件产品的标识符。在一个或多个实施例中,标识与许可300相关联的软件产品的数据可以是GUID。产品ID字段326在许可300被创建时由软件激活服务212设置,或者替代地由创建许可300的另一组件或模块设置。
产品密钥字段328是从软件保护客户端模块232接收的,并且是软件激活服务212激活的软件产品的产品密钥。产品密钥在产品被激活时由软件激活服务212包括在许可300中,或者替代地可以由另一组件或模块(例如,由许可客户端模块232)包括在许可300中。
产品列表ID字段330是软件产品的标识符的列表。许可300可以可选地与多个不同的软件产品相关联,并且这些多个不同的产品的列表被包括在产品列表ID字段330中。在一个或多个实施例中,标识与许可300相关联的软件产品中的每一个的数据可以是GUID。产品列表ID字段330在许可300被创建时由软件激活服务212设置,或者替代地由创建许可300的另一组件或模块设置。
产品名称字段332存储标识与数字许可300相关联的软件产品的官方名称的数据。产品名称字段332在许可300被创建时由软件激活服务212设置,或者替代地由创建许可300的另一组件或模块设置。
购买日期字段334存储标识与许可300相关联的软件产品被购买的日期(并且可选地为时间)的数据。可以以不同的方式标识软件产品被购买的日期,诸如,从软件购买服务216接收、由设备202的用户输入等等。购买日期字段304在许可300被创建时由软件激活服务212设置,或者替代地由创建许可300的另一组件或模块设置。
EULA(最终用户许可协议)链接字段336是对用于许可300的最终用户许可协议的链接。最终用户许可协议是通常被写来被用户容易地可读取的许可300给予用户的对软件产品的权力的描述。这允许用户回顾并知道他或她关于许可300所具有的权力。EULA链接字段336在许可300被创建时由软件激活服务212设置,或者替代地由创建许可300的另一组件或模块设置。
在许可管理服务204尝试将许可300添加到许可存储装置224之后,更新消息字段338存储指示成功或失败的数据。如果许可300被成功地添加到许可存储装置224,则指示成功的消息被服务204存储在更新消息字段338中。如果许可300未被成功添加到许可存储装置224,则指示错误的消息(并且可选地为对于错误是什么的描述)被服务204存储在更新消息字段338中。
附加载荷字段340是可以被可选地包括在许可300中并且被用来存储未被存储在上面讨论的字段302-338中的许可300的附加属性的附加部分。这些附加属性可以被多种服务或模块中的一个或多个(诸如,在许可300被创建时由软件激活服务212、由创建许可300的另一组件或模块、由许可管理服务204、由许可客户端模块232等等)标识并被其存储在许可300中。
返回图2,当使用产品密钥激活产品时,软件保护客户端模块234接收用于相关联的软件产品的数字许可。如上所讨论,在数字许可中包括用于激活的产品的产品密钥。软件产品的激活也被称为该软件产品对于该用户ID的激活。软件保护客户端模块234可以可选地在本地存储装置236中存储数字许可。
软件保护客户端模块234还与许可客户端模块232通信,请求模块232向许可管理服务204发送数字许可。响应于该请求,许可客户端模块232将数字许可和设备202的当前用户的用户凭证传递给许可管理服务204。这些用户凭证是从上面讨论的用户ID验证服务214获得的凭证。如果用户尚未登入到在线服务,则许可客户端模块232促使用户登入到在线服务。许可客户端模块232和许可管理服务204之间的通信典型地以安全方式(诸如,使用加密)执行。
许可管理服务204从许可客户端模块232接收数字许可,并将所接收的数字许可存储在许可存储装置224中。许可存储装置224可以使用多种不同的存储介质中的一个或多个来实现,诸如,磁盘、光盘、RAM、闪存等等。许可存储装置224可以在与实现服务204相同的一个或多个设备上实现,或者替代地服务204和存储装置224可以在不同的设备上实现。
从许可客户端模块232接收的数字许可被绑定到设备202的当前用户的用户ID。该绑定可以是将数字许可绑定到例如从上面讨论的用户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确定通过用户凭证标识的用户是否具有用于所请求的软件产品的数字许可。该确定可以例如通过以下来执行:利用与在所接收的用户凭证中的用户ID匹配(例如,相同)的用户ID以及与所请求的软件产品(如从模块232接收请求)的产品ID匹配(例如,相同)的产品ID两者,来针对数字许可检查许可存储装置224或数字许可的另一记录。
另外,如果由用户凭证标识的用户具有用于所请求的产品的数字许可,则许可管理服务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删除、卸载、或以其它方式移除数字许可。替代地,可以通过在用户停止使用设备202时将来自本地存储装置236的数字许可的持续期设置为结束,来内在地使数字许可无效。
使数字许可的持续期与用户使用设备202的时间相关联,允许用户基于绑定到他或她的用户ID的数字许可来在多个设备上使用软件产品,而与这些多个设备位于哪里无关。例如,这些设备可以是用户在他或她家中或办公室中的自有设备,或者可以是其他用户的设备,诸如朋友家中的设备、图书馆或网咖中的设备等等。
如果对于被请求运行的软件产品而言没有数字许可可用,则软件保护客户端模块234不允许运行软件产品。然而,如果数字许可可用,则模块234允许依据在数字许可中标识的条款和/或权力来运行软件产品。模块234负责执行在数字许可中标识的条款和/或权力。
在一个或多个实施例中,在软件产品被运行时,显示或以其它方式呈现软件产品的数字许可的拥有者的标识符。该标识符可以从数字许可中获得。例如,在软件产品被运行时,可以显示拥有者的姓名,允许用户或观看设备显示的任何其他人看到该软件产品被许可给谁。例如,在威慑盗版方面,这样的显示可能是有帮助的,这是因为用户将知道:如果他们正在运行没有被许可给他们的软件产品,则观看显示的其他人将能够看到他们没有购买正在运行的软件产品。
另外,应注意,可以以多种不同的方式来运行软件产品。在一个或多个实施例中,在用于软件产品的数字许可可用时,软件产品被安装在设备202上并且被运行。在其它实施例中,软件产品的镜像可以存储在一个或多个远程服务上,并且在用于该软件产品的数字许可可用时,这些镜像可以被流传输到设备202并且被运行。在这样的实施例中,可以基于需要而获得软件产品。
许可管理服务204还可以与一个或多个其它服务通信,以便获得与特定数字许可对应的附加信息。这样的服务的示例包括联系服务218、产品有效性服务220、产品注册服务222。
联系服务218保持将与产品密钥相关联的多种实体或多方与数字许可相关的记录。这些不同方可以例如包括软件产品的分销商、软件产品的经销商、软件产品的制造商等等。许可管理服务204可以从服务218获得这些关联,并且将它们与数字许可一起保持在许可存储装置224中。可以在许可存储装置224中的数字许可中包括这些关联的标识,或者替代地可以保持这些关联的分离记录。
作为示例,可以由软件产品的特定制造商来生成特定产品密钥,并且将其给予原始设备制造商(OEM),其继而将设备与软件产品一起分发给经销商。可以由联系服务218保持该产品密钥与该制造商、该OEM、以及该经销商的关联。可以诸如由制造商、OEM、和/或经销商以多种不同的方式来向联系服务218通知该关联。当许可管理服务204接收到具有该产品密钥的数字许可时,服务204可以从联系服务218获得制造商、OEM、和经销商的身份,并且将这些身份与所接收的数字许可相关联地保持在许可存储装置224中。
对于每个数字许可,产品有效性服务220基于与该数字许可相关联的产品密钥来保持用于该数字许可的历史的记录。该历史可以包括例如用于该数字许可的产品密钥被用来激活软件产品时的日期和/或时间,数字许可是否以及何时被撤销、数字许可是否以及何时被再次使能等等。该历史还可以包括对于以下的指示:产品密钥是否被撤销和再次激活,产品密钥何时被撤销和再次激活等等。产品有效性服务220从其它服务获得该历史,诸如从许可管理服务204、软件激活服务212等等。许可管理服务204可以从产品有效性服务220获得该历史,并且将该历史与数字许可一起保持在许可存储装置224中。这些历史可以被包括在许可存储装置224中的数字许可中,或者可替代地可以保持这些历史的分离记录。
对于每个数字许可,产品注册服务222基于与该数字许可相关联的产品密钥保持该数字许可的产品注册信息的记录。该产品注册信息可以包括在设备202的用户注册相关联的软件产品时从设备202的用户收集的各种信息。例如,该信息可以包括用户的年龄、用户生活或工作的地理位置、用户的爱好和/或兴趣、以及/或者用户选择透露的任何其它信息。许可管理服务204可以从产品注册服务222获得该产品注册信息,并且将该产品注册信息与数字许可一起保持在许可存储装置224中。该产品注册信息可以被包括在许可存储装置224中的数字许可中,或者替代地可以保持该产品注册信息的分离记录。
在一个或多个实施例中,仅当接收到用户同意将用户ID绑定到数字许可之后,才将用户的用户ID绑定到数字许可。该用户同意可以是选择性同意,其中,用户采取肯定动作以请求将用户ID绑定到数字许可。替代地,该用户同意可以是选择性不同意,其中,用户采取肯定动作以请求不将用户ID绑定到数字许可。如果用户不选择该绑定的不选择性,则用户隐含同意执行绑定。
此外,应注意,用户ID到数字许可的绑定可以允许许可管理服务204在不同用户之间进行区分,而无需包括标识特定用户的任何个人信息。例如,用户可以利用特定用户ID经由用户ID验证服务214登入到在线服务,而无需保持该用户ID和真实的人之间的关联。相应地,数字许可可以被绑定到该用户ID,而同时服务204不知道该用户实际上是谁。
图4图示了依据一个或多个实施例的可以显示给用户以允许用户选择是否将他或她的用户ID绑定到数字许可的示例产品激活窗口400。在用户激活他或她的软件产品时,显示该示例窗口400。应理解,替代地可以显示不同的用户界面,并且替代地可以在不同时间显示用户界面。例如,可以响应于将绑定改变到不同的用户ID的用户请求、响应于将数字许可添加到图2的许可管理服务204的用户请求等等,显示允许用户选择性将他或她的用户ID绑定到或不绑定到数字许可的用户界面。另外,在图4的示例中,产品密钥具有特定格式(五个5字符的字符串,也被称为5×5密钥)。应理解,产品密钥的该特定格式是示例,并且产品密钥可以采用与上面讨论的形式不同的形式。
产品激活窗口400包括描述402,其解释如何激活软件产品与注册软件产品的产品密钥。描述402还包括产品密钥看上去像什么的示例。还显示到对于如何发现产品密钥的更详细的描述的链接404。还显示描述406,其向用户解释为什么将用户ID与该软件产品的许可相关联(例如,绑定)。还显示到对于激活是什么的更详细描述的链接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,从许可存储装置224向设备202恢复产品密钥,代表用户自动更新许可存储装置224中的数字许可,从许可存储装置224删除数字许可,在许可存储装置224中取回关于数字许可的细节(例如,可以取回来自数字许可的或者与数字许可相关联的信息),从设备202卸载产品密钥(例如,使得其可以在另一设备上被使用)等等。
另外,许可管理服务204还可以使得将数字许可从一个用户转移到另一用户的能力对于设备202的用户而言可用。这允许例如用户将他或她的数字许可送给或卖给另一用户。为了转移数字许可,用户(例如,经由许可客户端模块232)向许可管理服务204提交转移数字许可的请求。服务204然后获得所转移的数字许可的接受方的用户ID,并且将数字许可绑定到所转移的数字许可的接受方的用户ID那样保存该数字许可。服务204可以以不同的方式获得用户ID。在一个或多个实施例中,提交转移数字许可的请求的用户还提交所转移的数字许可的接受方的用户ID。在其它实施例中,响应于转移数字许可的请求,服务204向软件激活服务212通知与数字许可中的产品密钥相关联的软件产品已经被去激活。去激活的记录也可以存储在产品有效性服务220中。相应地,所转移的数字许可的接受方可以在他或她的设备中输入产品密钥,并且如上所讨论地使用该产品密钥来激活软件产品。
在一个或多个实施例中,许可管理服务204还允许用户管理与他或她的用户ID相关联的数字许可。可以将关于数字许可的各种信息提供给用户,诸如激活历史、用户提供的注册信息、到期日期等等。另外,可以由用户修改关于数字许可的各种信息,诸如,允许用户请求服务240自动地更新数字许可、允许用户输入描述该许可的用户友好的名称、等等。
许可管理服务204还可以监控许可存储装置224中的数字许可,并且在服务204标识到与数字许可的条款的不符时撤销数字许可。可以以多种不同的方式来执行数字许可的撤销,诸如,将指示数字许可已经被撤销的数据存储在数字许可中、保持已经被撤销的数字许可的分离记录或列表、从许可存储装置224中移除数字许可,等等。许可管理服务204可以以多种不同的方式并且依赖于各种商业逻辑或商业智能来确定与数字许可的条款的不符。例如,数字许可可以包括到期日期,并且当该到期日期经过时服务204可以确定与数字许可的条款的不符。通过另一示例,数字许可可以包括对于在任一时刻在设备处可能进行的许可的拷贝的数量的指示。如果该拷贝数量超过阈值数量,则服务204可以确定与数字许可的条款不符(例如,并且假设已经危及数字许可被绑定到的用户ID)。
此外,在一个或多个实施例中,设备202的用户可以请求从设备202卸载或移除数字许可。该请求可以是明确的请求,诸如选择指示要从设备202卸载或移除数字许可的显示链接或菜单项目。该请求也可以是隐含的请求,诸如是在用户(例如,经由用户ID验证服务214)登出在线服务时所固有的。响应于这样的请求,许可客户端模块232删除在本地存储装置236中存储的被绑定到该用户ID的任何数字许可或以其它方式使其无效。模块232还向许可管理服务204发送卸载请求,通知服务204已经从设备202中卸载了许可。这允许服务204更新其对于正在进行的数字许可的拷贝的数量的计数或记录。
除了管理数字许可并且使得关于数字许可的多种功能对于用户而言可用,许可管理服务204还允许向用户显示或以其它方式呈现对于附加产品或服务的多种提供。经常,用户不知道可用的附加产品或升级产品、以及附加产品或升级产品所提供的服务。当用户(直接或经由许可客户端模块234)访问服务204时,服务204得知被绑定到用户的用户ID的数字许可。服务204可以访问软件产品或服务的列表或其它记录,并且基于被绑定到用户的用户ID的数字许可来标识用户可用的一个或多个附加产品或升级产品。可以将这些多种产品以及购买产品的选项呈现给用户。
例如,假设特定用户的用户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验证服务214验证)时等等,可以通过在设备上运行的软件产品来向用户呈现链接或其它用户界面机构。与作出管理用户许可的请求的方式无关,响应于该请求,许可管理系统502经由允许用户输入各种请求并管理被绑定到他或她的用户ID的数字许可的设备,向用户显示或以其它方式呈现用户界面。
许可管理系统502允许用户管理被绑定到他或她的用户ID的数字许可。相应地,向系统502提供用户的用户ID。被提供给系统502的用户ID是如上所讨论的(例如从图2的用户ID验证服务214获得的)用户的用户凭证。
添加许可模块504管理向许可存储装置(例如,图2的存储装置224)添加被绑定到用户的用户ID的数字许可。在一个或多个实施例中,当软件产品被激活时,数字许可可以被绑定到用户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)发送指示以从设备的本地存储装置删除或移除数字许可。在一个或多个实施例中,用户请求从他或她正在使用的一个设备中卸载许可,从而他或她可以在另一设备上复原或恢复该软件产品。
显示许可模块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的软件产品的数字许可的请求。如上所讨论的,由在线服务(诸如因特网服务的微软Windows LiveTM网络)校验该用户ID。
然后,关于是否从许可管理服务接收到所请求的数字许可作出检查(动作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、经销商等等。可以基于这些多方来呈现关于用户可用的附加产品或服务的提供。例如,可以向用户呈现对于升级至软件产品的新版本或者软件产品的具有附加功能的不同版本的提供。通过另一示例,可以向用户呈现对于以折扣价格购买可以与软件产品一起使用的外部设备的提供。这些提供可以以多种不同的方式且在多个不同的时间呈现给用户,所述多个不同的时间诸如在用户(经由图2的用户ID验证服务214)登入到在线服务时、在用户经由图2的许可管理服务204或图5的许可管理系统502回顾关于他或她的数字许可的信息时、在数字许可被从服务204或系统502取回时、等等。
作为具体示例,假设用户从零售商XYZ公司购买了软件产品。当用户管理他或她的许可时,可以向用户呈现对于按照折扣购买附加设备的提供。例如,可以向用户呈现以下提供“您上周从XYZ公司购买了您的新软件-本周您符合条件以降价$100的方式购买与您的新软件一起使用的数码相机和打印机”。
在给出在数字许可中标识的多方的情况下,当向用户呈现对于产品或服务的提供并且用户接受该提供时,在数字许可中标识的多方中的一个或多个可以被识别为对于该提供的接受。该接受典型地是产品或服务的附加销售。用户可以以不同的方式接受这样的提供,诸如,通过选择到在线商店的链接来购买该产品或服务,打印优惠券(例如,在其上具有数字许可的标识符)并且带着该优惠券到本地软件商店(例如,实体商店),等等。相应地,可以向用户呈现对于与用户具有数字许可的软件产品相关联的附加服务或产品的销售的提供,并且数字许可中标识的多方具有接收对于这些销售的附加收益和/或酬劳(recognition)的能力。这也可以被看作是关于在数字许可中标识的多方的数据被迁移到接收该附加收益和/或酬劳的其它服务或设备。
作为特定示例,假设用户从零售商ABC公司购买了安装有软件产品的新计算机。当用户管理他或她的许可时,可以向用户呈现对于按照折扣购买附加设备的提供。例如,可以向用户呈现以下提供“您从ABC公司购买了您的新计算机-本周您符合条件以降价50%的方式从XYZ公司购买打印机以与您的新计算机一起使用”。如果用户接受该提供并从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监控在许可存储装置224中存储的基于时间的许可。服务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来使许可管理服务保持该产品密钥。如果用户随后希望重新安装软件产品(例如,由于作为修复他或她的设备的结果而移除了之前的安装,由于用户购买了新设备等等),他或她可以从许可管理服务获得数字许可(包括产品密钥),而不需要找到他或她购买的具有产品密钥的盘或盒子。
用户还能够从多个不同的设备访问他或她已经购买的软件产品。这可以被视为允许用户的软件产品或数字许可与用户一起漫游到不同设备。例如,假设用户已经在他或她家中的计算机上激活并安装了软件产品,并且也已经使被绑定到他或她的用户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/O)设备1108、以及总线1110(其允许多个组件和设备彼此通信)。计算机可读介质1104和/或一个或多个输入/输出(I/O)设备1108可以被包括为计算设备1100的一部分,或者可以替代地耦接到计算设备1100。总线1110代表几种类型的总线结构中的一种或多种,包括使用多种不同的总线架构的存储器总线或存储器控制器、外设总线、加速图形端口、处理器或本地总线等等。总线1110可以包括有线和/或无线总线。
存储器/存储部件1106代表一种或多种计算机存储介质。组件1106可以包括易失性介质(诸如随机存取存储器(RAM))和/或非易失性介质(诸如只读存储器(ROM)、闪存、光盘、磁盘等)。组件1106可以包括固定介质(例如,RAM、ROM、固定的硬盘驱动器等)以及可移动介质(例如,闪存驱动器、可移动硬盘驱动器、光盘等)。
这里讨论的技术可以以软件实现,其中指令由一个或多个处理单元1102执行。应理解,可以在计算设备1100的不同组件中(诸如,在处理单元1102中、在处理单元1102的多个高速缓存存储器中、在设备1100的其它高速缓存存储器(未示出)中、在其它计算机可读介质上等等)存储不同指令。另外,应理解,指令存储在计算设备1100中的位置可以随时间而变。
一个或多个输入/输出设备1108允许用户向输入设备1100输入命令和信息,并且还允许将信息呈现给用户和/或其它组件或设备。输入设备的示例包括键盘、光标控制设备(例如,鼠标)、麦克风、扫描仪等等。输出设备的示例包括显示设备(例如,监视器或投影仪)、扬声器、打印机、网卡等等。
这里可以在软件或程序模块的常规背景下描述各种技术。通常,软件包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。这些模块和技术的实现可以存储在某种形式的计算机可读介质上、或者可以在某种形式的计算机可读介质上传输。计算机可读介质可以是可以被计算设备访问的任何一个或多个可用介质。通过示例,绝非限制,计算机可读介质可以包括“计算机存储介质”和“通信介质”。
“计算机存储介质”包括以任何方法或技术实现的用于存储诸如计算机可读指令、数据结构、程序模块或其它数据之类的信息的易失性的和非易失性的、可移动的和不可移动的介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多用途盘(DVD)或其它光学存储装置、磁带盒、磁带、磁盘存储装置或其它磁性存储设备、或可以被用来存储期望信息并且可以被计算机访问的任何其它介质。
“通信介质”典型地以调制数据信号(诸如载波或其它传输机制)来包含计算机可读指令、数据结构、程序模块或其它数据。通信介质还包括任何信息传送介质。术语“调制数据信号”意味着以下信号,其特征中的一个或多个被以在该信号中编码信息的方式设置或改变。通过示例,绝非限制,通信介质包括诸如有线网络或直接有线连接之类的有线介质,以及诸如声的、RF、红外的、和其它无线介质之类的无线介质。以上介质的任何组合也包括在计算机可读介质的范围之内。
通常,可以使用软件、固件、硬件(例如,固定逻辑电路)、手动处理、或这些实现的组合来实现这里描述的功能或技术中的任一种。这里使用的术语“模块”和“组件”一般表示软件、固件、硬件或其组合。在软件实现的情况下,模块或组件代表当在处理器(例如,一个或多个CPU)上被运行时执行指定任务的程序代码。程序代码可以存储在一个或多个计算机可读存储器设备中,参考图11可以发现其进一步的描述。这里描述的基于用户标识技术的增强产品功能的特征是独立于平台的,这意味着所述技术可以在具有多种处理器的多种商用计算平台上实现。
尽管已经以专用于结构特征和/或方法动作的语言描述了主题,但应理解所附权利要求中限定的主题不必限于上述的特定特征或动作。相反,上述特定特征和动作被公开为实现权利要求的示例形式。