本发明的详细描述
现在参考附图更为全面地描述本发明,其中示出了本发明的实施例。然而,本发明可以用很多不同的形式实施,并且不应被理解为受限于这里所提出的实施例;相反地,提供这些实施例是为了使本揭示全面和完全,并将本发明的范围全面地传递给本领域的技术人员。在整篇文章中,相同的编号表示相同的元件。
一般地,本发明涉及在计算环境中识别原则。依照本发明的替换实施例,这个计算机环境可以是单独、独立计算机系统或多个计算机系统互相连接以形成分布式计算机网络,诸如互联网或企业内部互联网。
如这里所定义的,原则是任何个体、个体组或在计算环境中执行某些动作的计算机模块。示例性原则包含操作系统、计算机应用程序和在操作系统中实现的过程、个体、人员组(例如,家庭、公司、组织等等)。
资源在这里被定义为机器可读形式的数据,以一定的方式排列以组成电子文件。示例资源包含但不限于网页,电子文档(电子邮件、文字处理文档、电子表格、图画、图形等等)、声音文件、电影文件或计算机可读数据的任何其它部分。为了清楚地说明本发明的实施例,这里所示和所描述的示例资源是文字处理文档。同样地,将术语“原则”和“资源”的定义相结合,由计算环境中的原则执行的示例性动作将是创建、访问、修改或删除文字处理文档。本领域的技术人员会认识到本发明也可应用到所有其它形式的资源上。
考虑到这些定义和示例性实施例,图1描述了本发明在其中实现的计算环境100的逻辑说明。计算环境100包含由通信网络150互相连接的多个计算机系统142,以形成“分布式”计算环境。计算机系统142可以是客户端机器或服务器机器。例如,所期望的是在本发明的一实施例中,至少一个计算机系统142是服务器机器,可用于管理在多个客户端机器之间交换信息。客户端机器也通过通信网络150访问服务器机器和其它客户端机器上的文件。
应该理解通信网络150可以是本领域所公知的任一类型的网络或其等价物。一些示例性网络包含而非限于互联网、企业内部互联网、专用线网络或者甚至是计算机系统142之间的直接通信链路。还应该理解通信网罗150可以按照实施例所需的功能利用任意数量的通信技术。所期望的用在通信网络150中的特定技术的例子包含但不限于到互联网的陆地、蜂窝、卫星、短波微波连接、使用调制解调器或其它接口设备在设备之间的直接连接以及通过其它通信网络的连接,所述通信网络诸如局域网或广域网。当处于本发明的范围内时,可以利用这些或其它通信网络的任意组合。
依照本发明,在计算环境100中用于识别原则的系统在环境100中的至少一个计算系统142上实现。为了使用术语,这个系统(具体化为图1所示的各种结构集合)在此后被称为“身份系统”。为说明起见,身份系统在图1中示出,并在下文中描述为在单个计算机系统142上实现。然而,这里所描述的身份系统实际上在环境100中的其它计算机系统142上实现。依照本发明的实施例,这个身份系统在所有的系统142上实现。或者,这个身份系统可以在环境100中少于所有的系统142上实现。
这个身份系统包含对原则的电子表示,在这里被称为“原则对象”110。除了“原则对象”之外可以用于表示这些电子表示的名称是“身份信息对象”和“身份信息文档”。原则对象110与身份宣称134相关联,唯一地标识每个对象110对应的原则和进一步描述那个原则的特征数据对象138。身份宣称134和特征数据对象138之间的区别是特征数据对象138包含并非唯一地识别相关联的原则的,而是简单地描述与原则相关联的特性和其它特征的信息。
身份宣称134体现在数据结构中,它包含唯一地标识宣称134所关联的原则对象110的信息(这里被称为“断言”)。可用于形成身份宣称134的示例的断言包含但不限于电子邮件地址、电话号码(地面通信线和移动)、信用卡帐户号码、社会安全号码、驾驶证号码等等。因为原则可以使用多于一个断言而被唯一地标识(即,多数人有至少一个电子邮件地址和一个电话号码),身份系统中的每个原则对象110可用于与不止一个身份宣称134相关联。简要地区分特征数据对象138与身份宣称134,原则的示例性特征数据对象138是包含与个人的年龄、性别、高度和体重相关的数据的个体。这种类型的信息不能成为身份宣称134的断言,因为这种信息不是对任意人体都是唯一的。
除了原则对象110、身份宣称134和特征数据对象138,身份系统也包含身份引用136。身份引用136是身份宣称134的参数,它将计算环境100中的资源与相关联的原则相链接。例如,将与文字处理文档相关联的示例性原则就是作者。文字处理文件的其它示例性身份引用136可以是链接到身份宣称的参数136,所述身份宣称与被授权查看和/或修改该文档的原则相关联。身份宣称134和身份引用136之间的联系和区别会在下文中结合图3-5详细描述。
在一实施例中,原则对象110、身份宣称134、身份引用136和特征数据对象138是符合组件对象模型(COM)的对象。同样地,计算环境100中任一计算系统142的进程和其它对象通过与每个对象110相关联的应用程序接口(APIs)128与这些对象110通信地交互。如本领域的技术人员所公知的,API 128将对象(例如110、134、136和138)的特征和方法(数据和功能成员)开放给计算环境(例如100)中的进程和其它对象。
因为身份引用136、身份宣称134和特征数据对象138会附上其它对象,这些所附对象的每个包含一API 128,API 128只对所附对象(即,用于身份宣称134的原则对象110和特征数据对象138和用于身份引用136的资源对象104)开放,而不对计算环境100中的其它对象开放。同样地,对于计算环境100中对象或进程要求访问身份宣称134或特征数据对象138,那个对象或进程通过该对象110的API 128向相关联的原则对象110发出这样的请求,它反过来为身份宣称134或特征数据对象138(任何一个被请求)通过API 128访问所请求的数据。
为了使计算机系统142上的进程或模块利用原则对象110以及由此包含在对象中的数据(例如,身份宣称134和特征数据138),这些对象,如同符合COM的任何其它对象,必须首先被例示。当形成对象110的数据被载入到存储器且身份宣称134的数据和特征数据138以及对象110的任何功能成员(即,方法)对其它对象可用时,原则对象110被说成是“例示的”。这个术语在区分原则对象110和必须被读入到存储器中以例示对象110的原始数据之间区别时是有种冲突称为“错误”,是指接收到的原则对象110包含指定断言的身份宣称134的情况,所述断言等同于已经存储在数据存储108中的原则对象110中所包含的身份宣称134所指定的断言。使用由开始操作700初始的,并由终止操作720结束的操作流来实现这个“检测”过程700。
响应于在计算环境100中接收到原则对象110开始操作702被初始化。从开始操作702,操作流转到接收操作704,它接收原则对象进入检测过程700。原则对象110包含至少一个身份宣称134和选择性地包含特征数据对象138。对了简要地描述这个检测过程700,接收到的原则对象110被描述为只具有一个身份宣称134。应该理解原则对象110可以包含多个身份宣称134。在多个身份宣称134伴随接收到的原则对象110的情况下,应该理解访问操作706和失误操作708(两者都在下文中描述)应该为这些多个身份宣称134中的每一个执行。
如同图6的流程图,在普通意义上使用术语“接收”指由计算机系统142的操作系统接收任一原则对象。导致接收原则对象110的示例性过程包含但不限于由用户输入原则对象110和通过通信网络150在计算机系统142之间传输原则对象110。例如,原则对象110可以稍带到从发送计算机系统142发送到接收计算机系统142的资源。在原则对象110被接收到检测过程704之后,操作流转到访问操作706。
访问操作706使用身份宣称134中指定的类型断言402和值断言404来查找保持那个身份宣称134的原则对象110是否已经存储在数据存储108中。从访问操作706,操作流转到第一查询操作708。第一查询操作708查询访问操作706是否发现了包含身份宣称134的原则对象110,访问操作706使用所述身份宣称134在数据存储108中执行查询。在一个实施例中,这个检查是基于接收到的原则对象110的身份宣称134中指定的类型断言402和值断言404、以及选择性地时间帧断言410和412来执行的。或者,可以在这个检测中使用其它断言(即,签名断言414或网页断言408)。如果没有在数据存储108中发现具有评估断言的原则对象110,那么就没有错误而且操作流转到保存操作710。保存操作710将接收到的原则对象110保存到数据存储108中,以便今后用于识别与身份引用136相关联的资源,所述身份引用136链接到包含在原则对象中的身份宣称134。从保存操作710,操作流在终止操作720处结束。
如果第一查询操作708发现了包含身份宣称134的原则对象110,所述身用的。然而,为说明起见和为了在整个规范中提供清晰的说明,结合图3-7提供的本发明的各种实施例的描述没有区分在对象(例如,原则对象110、身份宣称134、身份引用136和特征数据对象138)的原始形式上执行的处理和示例形式的对象之间的区别。然而,这两种形式都只是体现为术语“对象”。然而,图1通过在数据存储108中包含“原则数据”来说明了这个区别,所述“原则数据”是用于形成原则对象110的原始数据以及体现计算机系统142上身份宣称134和特征数据138的数据。
图2说明了本发明的实施例可以在其上实现的合适的计算系统200的例子。同样地,这个系统200代表了被用作分布式计算环境100中运作为计算机系统142的那个系统。在其最基本的配置中,系统200包含至少一个处理单元202和存储器204。根据实际的配置和计算设备的类型,存储器204可以是易失性的(诸如RAM)、非易失性的(诸如ROM、闪存等等)或这两者的某种结合。这个最基本的配置在图2中以虚线206示出。
除了存储器204之外,系统200可以包含至少一个其它形式的计算机可读介质。计算机可读介质,也被称为“计算机程序产品”可以是系统200可以访问的任何可用介质。作为例子而非限制,计算机可读介质可以包含计算机存储介质和通信介质。
计算机存储介质包含以任一方法或技术实现的用于存储信息的易失性和非易失性、可移动和不可移动介质,所述信息诸如计算机可读指令、数据结构、程序模块或其它数据。存储器204、可移动存储器208和不可移动存储器210都是计算机存储介质的所有例子。计算机存储介质包含但不限于RAM、ROM、EEPROM、闪存或其它存储技术、CD-ROM、数据多用途盘(DVD)或其它光存储、盒式磁带、磁带、磁盘存储或其它磁性存储设备,或任何其它可用于存储所期望信息并可由系统200访问的介质。任何这样的计算机存储介质可以是系统200的部分。
示例性计算系统200也可以包含通信连接212,允许系统与其它设备通信。通信连接212是通信介质的例子。通信介质一般具体化为计算机可读指令、数据结构、程序模块或经调制的数据信号中的其它数据,诸如载波或其它传输机制并包含任何信息传递介质。术语“经调制的数据信号”是指具有一个或多个其特性集或在信号中以编码信息的方式改变的信号。作为例子而非限制,通信介质包含有线媒体,诸如有线网络或直接有线连接,和无线介质诸如声音、射频、红外线和其它无线介质。这里所使用的术语计算机可读介质同时包含存储介质和通信介质。
依照一实施例,系统200包含外围设备,诸如输入设备214和/或输出设备216。示例性输入设备214包含但不限于键盘、计算机鼠标、笔或铁笔、语音输入设备、触摸式输入设备等等。示例性输出设备216包含但不限于显示器、扬声器和打印机。这些“外围设备”的每个在本领域都是公知的,因此不在这里作详细的描述。
考虑到计算环境,参考逻辑操作描述本发明的实施例,执行所述逻辑操作以实现实施本发明的各种实施例的过程。这些逻辑操作被实现为(1)计算机实现的步骤序列或运行在计算系统上的程序模块和/或(2)计算系统中互相连接的机器逻辑电路或电路模块。所述实现是根据实现本发明的计算系统的性能要求的选择。相应地,这里所描述的组成本发明的实施例的逻辑操作分别地指操作、结构设备、动作或模块。本领域的技术人员应该理解这些操作、结构设备、动作和模块可以在软件、固件、特定目的的数字逻辑和它们的任一组合中实现,而不背离本发明的精神和范围,如这里所附权利要求书中所述。
现在参见图3,依照本发明的实施例逻辑上说明了身份系统300中身份引用136和身份宣称134之间的关系。更具体地,图3显示了多个身份引用136a、136b和136c到单个身份宣称134a之间的联系以及单个身份引用136d到单个身份宣称134b之间的联系。应该理解图3是对身份引用136和身份宣称134之间关系的高级说明,且任何号码的身份引用136可以被链接到任何号码的身份宣称134a和134b中任意一个。
在一个实施例中,组成身份系统300的身份引用136和身份宣称134在分布式计算环境中的多个计算机上实现。为说明起见,身份引用(例如136b)可以与存储在第一计算机系统142上的资源相关联,而与该参数136b相链接的身份宣称134a包含在维持在第二计算机系统142的原则对象110中。或者,组成身份系统300的身份引用136和身份宣称134存储在单个、单机系统142上。结合图4和5详细描述在身份引用136和身份宣称134之间链接的建立,因此在描述图3时不再重复。而只是描述这些对象之间的逻辑关系。
链接到单个身份宣称134a的136a、136b和136c中的每个身份引用是与不同的资源相关联的。例如,身份引用136a可与一个字处理文档相关联,身份引用136b可与一个电子制表文档相关联,身份引用136c可与一个电子邮件文档相关联。这些身份引用(136a,136b,136c)的每一个链接到相同的身份宣称134a,并由此识别这些资源的每一个,所述资源与对应于身份宣称134a的原则相关联。这个原则可以是,例如,著作这些文档每一个的个体。另一个示例性原则可以是雇用了创建个体的组织。同样地,身份引用136d把这些资源联系到与这个参数136d相关联的身份宣称134b。这样,通过将其与对应于宣称134b的原则相关联,这个资源就被身份系统300所识别了。
现在看图4和图5,依照本发明的实施例分别示出了一个身份宣称134和一个身份引用136的示例数据结构。依照一实施例,每一个数据结构都是基于扩展标记语言(XML)的软件模块,然而,其他编程语言也可以用来创建这些数据结构,并且这些其它语言被预期在本发明的范围内。根据图4中的特定参数,身份宣称134包括各种断言402-414,它们共同地、唯一地识别一个单一的原则。如上所述,这些原则可以是一个计算机实体或者设备,一群计算机实体或者设备,一个个体或一群个体。为了图示本发明的实施例,身份宣称134被描述成识别一个单一的个体。
身份宣称134的数据结构包括一个像身份宣称134一样识别结构的类别宣布400。这样,这个类别宣布400被表达为“身份宣称”。数据结构还包括类别断言402和值断言404。可选断言包括显示断言406、网站断言408、开始时间帧断言410、结束时间帧断言412和签名断言414。
类型断言402表示了唯一标识符的类别,这将于身份宣称134相关联。示例性类型断言402包括但不限于以下: “tel”或“fax”,表示唯一标识符是一个电话号码;“mailto”,表示唯一标识符是一个电子邮件地址;“http”,表示唯一标识符是一个网址;“sid”,表示唯一标识符是一个安全标识符;“ssn”,表示唯一标识符是一个社会安全号;“cc#”,表示唯一标识符是一个信用卡帐号。许多其它的唯一断言类型都在本发明预期的范围内,但未在上述的句子中列出。实际上,只要断言是指定对有且仅有一个原则是特定的值类型,这种断言就可以被用作类型断言402。
值断言404是基于类型断言402的,并表示一序列唯一地标识该原则的字符(文字数字的和/或符号)。示例性值断言404包含但不限于以下:电话号码(如0018004568494)、电子邮件地址(如tempuser@sammpleserver.com)、网址(如www.tempcompany.com)、社会安全号(如427894478)和信用卡帐号(如4417354398478474)。原则的识别依赖于值断言406。应该理解值断言406可以识别一个个体和设备或者一组个体和设备。例如,电话号码可以识别个人、家庭或公司。如果电话号码属于一个家庭或公司,识别原则将识别一组,而当电话号码属于一个个体,识别原则是个体。
因为特定的类型断言402是一种与值断言404相关联的,能在不同时间帧内唯一地识别不同原则的类型,身份宣称134的数据结构可选地包含开始时间帧断言410和结束时间帧断言412。例如,当类型断言是“tel”、“fax”或“mailto”时,使用这些断言410和412,因为这些类型表示那些随时间变化的唯一标识符类型。
开始时间帧断言410指定数据,在这些数据上值断言404与唯一表示的原则建立关联。结束时间帧断言412指定数据,在这些数据上这样的关联被终结。如图示,在一个时间帧内,Johe Doe可以由电话号码0018004763849所唯一地识别,而在另一时间帧内,Jane Doe却可以替代地被这个电话号码唯一地识别。开始时间帧断言410和结束时间帧断言412对这些分开的时间帧指定了开始和结束日期,由此完成了这些对John和Jane Doe的身份宣称的唯一识别。应该理解如果不提供结束时间帧断言412,而提供开始时间帧断言412,那么值断言404和原则之间的关联将仍然存在。
另一个可选断言是显示断言406。显示断言406是基于值断言404和可以被人们认识的形式的字符串。例如,如果值断言404是一电子邮件地址,显示断言406可以是与个体电子邮件地址关联显示的个体的名称。另一个可选断言是网址断言408,他表示一个在上面能找到与原则相关的更多信息的网址。另一个可选断言是签名断言414,他是原则签名的数字表示。
每个上述断言,包括可选断言,被用于唯一地将身份宣称134链接到特定原则。这是身份宣称134的目的。另一方面,身份引用136用于将资源(例如电子文档)与原则相关联。如上所述,这个过程通过参考身份引用136中的特定身份宣称134来完成。参见附图5,依照本发明的一个实施例示出了在身份引用136中作出说明性声明的数据结构。身份引用136的数据结构包括标识作为身份引用136的结构的类型声明500。同样地,这个类别声明500被称为“身份引用”。
为了指定一特定的身份宣称134,身份引用136包含对应于被参考的身份宣称134的类型断言502和值断言504。同样地,资源的开发者在资源开发的过程中建立适合身份宣称134的参数。参考数据声明506也包括在身份引用136的结构中,并表示数据,与身份引用136相关联的资源在所述数据上被有效地链接到考虑中的身份宣称134上。
当计算机系统142的操作系统激活资源,身份引用136与所述资源相关联,操作系统指向例示身份引用136以便例示和调用适当的原则对象110的方法。适当的原则对象110是基于哪个身份宣称134是由身份引用136所参考的来确定的。在适当的原则对象110,并由此,相应的身份宣称134被例示后,资源对象104的方法调用原则对象110的方法,所述原则对象110将资源与对应于原则对象110的原则相关联。接着操作系统对资源执行任务,所述资源为原则对象110使用资源的识别。示例性任务包含但不限于授权查看和/或修改资源、显示与资源相关联的原则特性和特征以及通过资源向原则提供通信介质。
参见图6,依照本发明的实施例示出了用于创建(此后“建立过程”)资源和原则对象110之间的关联的过程600。使用一连串操作(“操作流”)执行所述创建过程600,以开始操作602开始,以终止操作618结束。随着在计算机系统142上以某些方式访问资源就初始化了开始操作602。从开始操作602,操作流转接收操作604,它接收和访问资源以建立过程600并定位与资源相关联的身份引用136。应该理解在普通意义上使用术语“接收”指由计算机系统142的操作系统访问资源。同样地,资源的接收不仅包含从另一个计算机系统142接收资源,也包含从对于访问资源的计算机系统142是本地的存储器接收资源。实际上,在后一种情况中,计算机系统142的用户请求激活资源。从接收操作604,操作流转到第一查询操作606。
第一查询操作606检测所激活的资源是否伴有原则对象110,所述基本对象含有映射到定位3的身份引用136的身份宣称134。如果这样的话,原则对象110被称为“稍带”给资源,且操作流转到保存操作607。在这种情况下,身份引用136和相关联的身份宣称134之间的链接将正被识别的资源与相应于具有相关联的身份宣称134的原则对象110的该原则相关联。操作系统使用该识别关联来执行某些识别相关的任务。此外,保存操作607将原则对象110保存到数据存储器108以便以后用在实现这个和其它链接到身份宣称134的身份引用136之间的链接。从保存操作607,操作流以终止操作618结束。
另一方面,如果第一查询操作606没有检测到稍带给接收资源的原则对象110,操作流转到访问数据存储操作608。所述访问数据存储操作608使用在定位了的身份引用136中指定的类型断言402和值断言404来查询包含相关联的身份宣称134的原则对象110是否已经存储在数据存储108中。从访问数据存储操作608,操作流转到第二查询操作610。
第二查询操作610查询访问数据存储操作608是否发现了原则对象,所述原则对象包含具有在定位了的身份引用136中指定的类型断言502和值断言504的身份宣称134。如果是的话,操作流转到链接操作612。链接操作612将身份引用136链接到相关联的身份宣称134,由此将资源与对应于原则对象110的原则相关联,使得操作系统可以对资源执行识别相关任务。
另一方面,如果第二查询操作610没有定位到原则对象110,所述原则对象包含具有在定位了的身份引用136中指定的类型断言502和值断言504的身份宣称134,操作流转到创建幻象对象操作614。因为当前正在身份系统中,没有身份引用136可以链接的身份宣称134,所述创建幻象对象操作614创建幻象原则对象。在一实施例中,其中身份系统跨越整个分布式计算环境100,数据存储108对环境100中的所有计算机系统142可用。因此,不能定位与特定身份引用136相关联的身份宣称134意味着宣称134被维持在不是分布式环境100的部分的系统上。幻象原则对象被构建成包含由身份引用136中指定的类型断言502和值断言504的身份宣称134。一旦创建完成,操作流转到第二保存操作616。
第二保存操作616首先将身份引用136链接到幻象原则对象,由此将资源与原则相关联,所述原则对应于幻象原则对象,使得操作系统可以对资源执行识别相关的任务。应该理解幻象原则对象存储于其上的数据存储108可以由分布式计算环境中的其它计算机系统142远程地访问。同样地,再次重复第二查询操作610,可以在到数据存储108的远程连接上定位和恢复幻象原则对象。或者,如果环境是单机计算机系统,那么从本地存储定位和恢复幻象原则对象。
接着,第二保存操作616将幻象原则对象保存到数据存储108,使得将来可以使用对象来识别这个和其它于幻象对象相关联的资源。同样地,如果接收到更多的信息以补充和增加包含在幻象对象中的信息,这个信息可以被合并入幻象对象,以便在其后建立更为完整的原则对象。或者,如果这个新信息体现了原则对象110,就用这个新信息替换幻象对象。从第二保存操作616,操作流在终止操作618处结束。
图7示出了当接收到新的原则对象110时候,用于检测接收到的原则对象110是否与另一个存储在数据存储108中原则对象重复的过程700。这里将这份宣称134指定与访问操作708所评估的相同的断言,那么就检测到身份错误而且操作流转到第二查询操作712。存在多种可能在身份系统上创建错误的方式。一种这样的方式是如果用户试图增加原则对象110,而所述原则对象110已存在于身份系统上。可能创建错误的第二种方式是当两个或多个系统包含对应于相同原则的原则对象时,和因为个体或应用程序在分布式环境100中发送这些对象,这些对象最终被载入到相同的身份系统上。第三中这样的方式是如果攻击者试图插入假对象到身份系统中。
第二查询操作712检查错误原则对象110,即在数据存储108中发现的那个,以确定这个对象110是否是幻象对象,诸如由图6的建立过程600所创建的幻象对象。如果该对象是幻象对象,操作流转到删除操作714。删除操作714删除该幻象对象,使得可以通过保存操作710将接收到的原则对象110保存到数据存储中。同样地,从删除操作714,操作流转到保存操作710并如先前描述的那样继续。
另一方面,如果该错误原则对象110不是幻象对象,操作流转到合并操作716。合并操作716将所有与接收到的原则对象110相关联的数据合并到错误原则对象110。例如,如果接收到的原则对象110包含显示断言406,但错误原则对象110不包含,就将这个显示断言406复制到错误对象110中去。同样地,不包含在错误对象110中的接收原则对象110的特征数据对象138所含的数据被拷贝到错误对象中。如果由于某些原因,某些断言或数据的字段相冲突并且不指定相同的数据(即,接收对象110的显示断言406的显示字符串不同于错误对象110的显示断言406),那么使用一处理解决该错误,其中用户或计算机应用程序选择两个可选项之一以包含在错误原则对象110中。从合并操作716,操作流转到保存操作718。
保存操作718将更新后的原则对象110保存到数据存储108以便今后用于标识与身份引用136相关联的资源,所述身份引用136链接到包含在这个更新后的原则对象中的身份宣称134。从保存操作718,操作流在终止操作720处结束。
上述的各个实施例只是以说明的方式提供,而不应被认为是对本发明的限制。本领域的技术人员容易理解无需遵循这里所说明和描述的示例性实施例和应用,就可以对本发明作出各种修改和变化,而不背离本发明的真实精神和范围,这在以下的权利要求中提出。