不同类应用程序的统一授权的制作方法

文档序号:7637970阅读:184来源:国知局
专利名称:不同类应用程序的统一授权的制作方法
不同类应用程序的统一授权
背景
组织可使用计算机环境内的许多应用程序,诸如使用持久数据的通用数据中 心应用程序来执行日常工作。例如,多种类型的业务线(LOB)系统(例如,业务 关键数据库应用程序)可与开发应用程序、"自产(home-grown)"应用程序等 一起来实现。然而, 一个或多个用户对这些不同类应用程序中每一个的访问可能会 要求与不同信息、以不同格式、以不同语言和/或语义、用不同登录和授权方法、 在不同的连接要求下、对每个应用程序上的每个用户的使用单独的操作线程等来进 行交互。
概述
以下内容提出了本发明的简化概要以向读者提供基本的理解。该概要不是该 公开的广泛综述,也不标识本发明的关键/重要要素或描述本发明的范围。其唯一 目的是以简化形式提出在此公开的一些概念以作为将在此后提出的更具体描述的 前序。
为了统一用户对多个应用程序的体验,可实现一种数据存储服务系统,该系 统作为用户与多个应用程序之间的中介以向用户提供简单而统一的界面并生成与 可供访问的多个应用程序的各个服务的复合且特定交互。父专利,即提交于2005 年7月28日的美国专利申请No. 11/191,771描述了一种数据存储服务系统,它向 用户展示了全异的或不同类的数据存储相关服务而无需用户具有关于如何与该指 定服务交互的应用程序特有知识。为了向用户提供统一的交互,该数据存储系统可 维护有诸如服务交互细节等元数据存储信息,例如,可用服务、服务描述、数据类 型、如何访问特定数据、如何在语义上与服务通信以访问所想要的数据等。该数据 存储服务系统可提供一种应用程序接口,该接口接收访问服务的用户请求、访问相 关联的元数据、并使用该元数据将用户的简单、通用、统一和/或公共的请求转化 为对该服务恰当的通信。
一般而言,为了允许对与应用程序的连接的预制(prefabrication)和支撑(poling)并避免个别用户信息的通过,可在例如,出于性能原因可访问所有可用
数据的账户的"超级用户"上下文中访问应用程序。以这种方式, 一个或多个(例
如,x个)'超级用户,连接可同时保持打开(可在实际用户登录之前完成)以用 这x个连接同时服务一个或多个(x个)唯一的最终用户而无需针对每个用户请
求来关闭和重新建立连接。然而,实现超级用户账户与个体安全性冲突。具体而言, 如果所有数据实际上被匿名访问,例如,对该应用程序的所有请求都来自该'超级 用户'账户,则不能根据个人许可来调节哪个用户访问哪个数据。为了减轻该问题, 许多应用程序提供它们自己的授权模块,该授权模块允许管理员指定谁能够访问存 储在该系统中的什么数据。然而,该方案妨碍了超级用户账户所实现的性能收益。 例如,每个用户的授权信息的通信可能需要受到安全保护并且授权请求的传递增加 了与服务的通信的数量和时间。另外,由于每个作出请求的用户是个别地授权的, 所以对服务的每个请求可在单独的处理线程上运行,这可能会使服务和可用通信连 接超载荷。同时,每个应用程序具有其自己的模型,这对于每个用户需要对每个不 同应用程序的单独授权,从而要求为每个用户设置和维护多组凭证和/或账户,这 也增加了对环境的个人和行政管理。此外,每个应用程序或服务可展示对信息的特
定粒度。例如,SQL应用程序仅展示在表格级上而不是更高或更低级上(下文进 一步描述)对信息的访问。类似地,对某些应用程序的服务的访问可以在全局的意 义上提供,例如,任何权限都是访问该应用程序的服务的任何部分的全局权限。这 可能会限制对己标识用户允许的访问的粒度。
出于可升级账户访问和安全性目标的原因,现有技术应用程序环境会"关闭" 个别应用程序的安全模型,并在应用程序的"前面"写入自定义代码。该自产代码 可负责对特定应用程序中的数据编制目录并制订对每个用户的许可。以这种方式, 最终用户可与检查许可的中间层交互,并在许可可用时,该自定义代码扮演超级用 户的角色并调用该应用程序服务且将检索到的数据转发回该最终用户。虽然这实现 了可升级性和安全性,但是这要付出对每个后端系统在中间层上手动创建的自定义 编码的代价。此外,自定义编码必须是针对每个不同后端应用程序个别地实现的, 即使在所需的个别许可之间具有相似性时也是如此。
自定义编码要求密切了解存储在该后端系统中的数据以及用于作出针对该系 统的调用的API。例如,每个应用程序可具有其自己的唯一授权模型并以其自己的 方式存储授予用户的许可。此外,每个应用程序可以按不同的方式来标识其用户集。 例如,基于Microsoft的Active Directory (现用目录)的系统可将一个人标识为
Redmond/人,而基于开放源LDAP Directory (LDAP目录)的另一系统可将同一人 标识为0=Redmond; CN-人。因此,没有方法告知这些用户是同一用户。管理员 因而必须学习跨多个应用程序散布的各种授权模型和许可。另外,由于每个应用程 序可具有其自己的授权技术和/或凭证,所以对于每个用户所访问的每个应用程序,
必须重复对该用户的授权。以这种方式,所需的自定义编码会增加软件的维护、成 本、推向市场的时间等。
由于父应用程序的数据存储服务系统将该服务作为中间层来访问,所以对作 出请求的用户的授权会由于对每个后端应用程序的数据服务编制目录和映射所述 用户许可的自定义代码的维护成本、推向市场的时间等而较为困难。为了扩展用户 的统一交互,减少用户理解低层应用程序的语义细节的需求,对应用程序的服务展 示用户定义的粒度,降低管理成本,和/或为了任何其它优点,数据存储服务系统 可基于用户所请求的服务和与该作出请求的用户相关联的授权信息来对该用户授 权。诸如通过将所请求的服务、服务所提供的数据类型、对于服务的数据类型的各 个方法、服务的数据类型的方法的返回值的特定子分量、以上任何内容的对象实例 化等与被授权用户的用户标识符和/或该被授权用户的一个或多个权限或所允许的 动作关联在一起,可将该授权信息存储在元数据数据存储中。可使用一单独(较高 特权)权限来控制可设置/改变对任何对象上的权限(类似于受管理的权限)的人 组。在一些情形中,父对象的安全特征可根据请求或以其它所确定的方式自动向下 遗传到子对象。这些安全特征可通过在关于可保护对象的关键方法上对各种权限注 入访问检查调用来显现。如果该用户被授权,则数据存储服务系统可根据所确定的 授权和所允许的权限,使用通过服务的数据存储服务系统授权凭证,通过单个超级 用户账户来访问该服务。
参照结合附图考虑的以下具体描述,许多附带特征将可被更容易明白,同时 也将得到更好理解。


根据附图阅读以下具体描述,本说明书将被更好地理解,附图中 图1是适于实现数据存储服务系统的一个示例企业环境的示意图; 图2是适于与图1的企业环境一起使用的示例元数据存储的表;
图3是图2的元数据存储的一个示例访问控制列表(ACL)的表;
图4是与图1的企业环境兼容的可保护对象分层结构的示意图; 图5是用于实现对象的访问控制列表的一个示例API的示意图6是用于实现图5的访问控制列表的访问控制条目的一个示例API的示意
图7是填充和实现图1的企业环境的元数据存储的一种示例方法的流程图8是进行访问检查的一种示例性方法的流程图9是对象的管理用户界面的一个示例显示;
图IO是对象的管理许可用户界面的一个示例显示;
图ll是ACL编辑用户界面的一个示例显示;
图12是对象编辑用户界面的一个示例显示;
图13是修改许可用户界面的一个示例显示;
图14是执行图1的企业环境的元数据存储的一种示例方法的流程图。 在附图中相同标号被用于指示相同部分。
具体描述
以下结合附图提供的具体描述旨在作为对本发明示例的说明,而无意表示用 来构造或利用本示例的唯一形式。该描述阐述了该示例的功能以及用于构造和操作 该示例的步骤序列。然而,相同或等效的功能和序列可由不同的示例来实现。
虽然本示例在此被描述和示出为在具有通过网络连接可访问的多个业务线应 用程序的企业环境中来实现,但所描述的企业环境是作为示例而非限制来提供的, 并且应该认识到的是,可在以下进一步描述的任意数目和/或组合的特征中提供任 何数目和类型的服务。
图1和以下讨论旨在提供对企业环境内的数据存储服务系统的简明、 一般性 的描述。如图l所示, 一个或多个用户设备120可通过由云表示的网络133连接至 企业系统130,可通过连接135直接连接至该企业系统,可以是该企业系统的一部 分,或以任何适当的方法访问该企业系统。
网络133可包括诸如路由器、网关、集线器等公知组件,并允许用户设备i20 通过有线和/或无线介质通信。网络133可包括诸如因特网等广域网(WAN)、局 域网(LAN),然而也可使用各种其他使用适当协议的通信系统和/或方法,包括 其它类型的WAN、 LAN、无线网络、电话线、串行和/或并行电缆、同轴电缆、及 其任意组合。
每个用户设备120可提供合适的计算环境以提供对可从企业系统130获得的
服务的访问。图1的用户设备120和企业系统130以及以下讨论旨在提供对可在其
中实现全部或部分数据存储服务系统的合适计算环境的简明、 一般性描述。
图1的用户设备120和企业系统130的操作环境仅是适当操作环境的一个示 例,而无意暗示对该操作环境的使用范围或功能的任何限制。可适用于在此所述的 用户界面编辑应用程序的其它公知计算系统、环境、和/或配置包括但并不限于, 个人计算机、服务器计算机、手持式或膝上型设备、多处理器系统、基于微处理器 的系统、可编程电子消费品、网络个人计算机、微型计算机、大型计算机、可包括 以上任何系统或设备的分布式计算环境等。
参照图1,用于实现用户对企业系统130的访问的一个示例性系统包括诸如用 户计算设备120等计算设备。在其最基本的配置中,计算设备120通常包括至少一 个处理单元102和存储器104。取决于计算设备的具体配置和类型,存储器104可 以是易失性的(诸如RAM)、非易失性的(诸如ROM、闪存等)、或这两者的 某种组合。这一最基本的配置在图1中由线106示出。另外,设备120还可具有附 加特征和/或功能。例如,设备120还可包括附加存储(例如,可移动和/或不可移 动),其包括但并不限于磁盘、磁带或光盘、光带。这些附加存储在图1中由可移 动存储108和不可移动存储110示出。计算机存储介质包括以任何方法或技术实现 的用于存储诸如计算机可读指令、数据结构、程序模块、或其它数据等信息的易失 性和非易失性、可移动和不可移动介质。存储器104、可移动存储108、以及不可 移动存储110都是计算机存储介质的示例。计算机存储介质包括,但并不限于, RAM、 ROM、 EEPROM、闪存或其它存储器技术、CD-ROM、数字通用盘(DVD) 或其它光盘存储、磁带盒、磁带、磁盘存储或其它磁存储设备、或可用于存储所需 信息并可由设备120访问的任何其它介质。所有这些计算机存储介质都可以是设备 120的一部分。
设备120还可包括允许设备120与其它设备通信,诸如通过网络133与其它 计算设备通信的通信连接112。通信连结112是通信介质的一个示例。通信介质通 常以诸如载波或其它传输机制之类的已调制数据信号的形式体现计算机可读指令、 数据结构、程序模块或其它数据,并包括任何信息传递媒介。术语"已调制数据信 号"是指这样一种信号,它的一个或多个特性以在信号中编码信息的方式被设置或 改变。作为示例而非限制,通信介质包括诸如有线网络或直接有线连接等有线介质, 以及诸如声波、RF、红外及其它无线介质等无线介质。如在此使用的术语计算机 可读介质包括存储介质和通信介质两者。 设备120还可具有诸如键盘、鼠标、笔、语音输入设备、触摸输入设备、激
光测距仪、红外相机、视频输入设备、和/或任何其它输入设备等输入设备114。还 可包括诸如一个或多个显示器、扬声器、打印机和/或其它输出设备等输出设备116。
在一个示例中,用户设备可使用通信连接112通过网络133访问企业系统130 以请求该企业系统所支持的多个企业应用程序150的一个或多个服务。为了支持这 多个企业应用程序150,企业系统130可以是与以上参照用户设备120所述的计算 设备相似或不同的计算设备。
如图1所示,企业系统130可提供合适的计算环境以提供可从企业应用程序 150获得的各服务。虽然不是必需,但数据存储服务系统160和企业系统的其它组 件将在诸如程序模块等由一个或多个计算机或其它设备执行的计算机可执行指令 的一般性上下文中描述。 一般而言,程序模块包括执行特定任务或实现特定抽象数 据类型的例程、程序、对象、组件、数据结构等。通常,程序模块的功能可以按照 各种环境中的需求来组合或分布。
参照图1,用于提供来自企业系统130的企业应用程序150的服务的一个示例 性系统包括诸如计算设备130等计算设备。在其最基本的配置中,计算设备130 通常包括至少一个处理单元132和存储器134。取决于计算设备的具体配置和类型, 存储器134可以是易失性(诸如RAM)、非易失性(诸如ROM、闪存等)或这 两种的某种组合。这种最基本的配置在图1中由线136示出。另外,设备130还可 具有附加特征和/或功能。例如,设备130还可包括附加存储(例如,可移动和/或 不可移动),其包括但并不限于磁盘、磁带或光盘、光带。这些附加存储在图1 中由存储138示出。设备130还可包含允许设备120与其它设备通信,诸如通过网 络133与其它计算设备通信的通信连接142。
设备130还可具有诸如键盘、鼠标、笔、语音输入设备、触摸输入设备、激 光测距仪、红外相机、视频输入设备、和/或任何其它输入设备等输入设备144。还 可包括诸如一个或多个显示器、扬声器、打印机和/或其它输出设备等输出设备146。
本领域的技术人员将认识到,用于存储程序指令的存储设备可跨网络分布。 例如,远程计算机可将所描述的进程的一个示例作为软件来存储。本地或终端计算 机可通过企业系统BO访问该远程计算机,并下载部分或全部软件来运行该程序。 或者,本地计算机可根据需要下载软件片断,或者通过在本地终端上执行一些软件 指令且在远程计算机上(或计算机网络上)执行一些软件指令来分布式地处理。本 领域的技术人员还将认识到,通过利用本领域的技术人员公知的常规技术,全部或 部分软件指令可由诸如DSP、可编程逻辑阵列等专用电路来实现。
用户设备120可与企业系统130交互以访问可驻留在存储器134、存储138 中、或可由企业系统130诸如通过通信连接来远程访问的多个应用程序150中的一 个或多个服务。虽然图1将服务应用程序150示为驻留在企业系统130的存储器 150中,但应该认识到的是, 一个或多个应用程序150可驻留在单独的存储器中和 /或可通过诸如通信连接等连接来访问的单独的计算设备中。
应用程序150可向用户设备120提供任何合适的服务。示例应用程序可包括 诸如由SAP或SIEBEL提供的业务线系统等企业应用程序。其它示例可包括企业 的'自产'应用程序、诸如万维网站点等因特网服务等。
与企业系统的交互可通过图1中所示的门户170来进行。该门户可用作进入 企业系统的入口,和/或可便于与企业系统的交互。合适门户的一个示例包括可从 华盛顿州雷蒙德市的微软公司获得的SharePoint System 。响应于通过门户170的 用户请求,处理器132可访问和/或执行一个或多个应用程序150以允许用户设备 120访问数据或执行方法,这些数据和方法可存储在企业系统中,诸如存储在存储 器134或存储138中,或由数据存储服务系统160远程访问。
用户设备120可直接执行所需应用程序以访问所需服务。然而,如图1所示, 企业系统130可提供数据存储服务系统160,以作为用户设备120与一个或多个应 用程序150之间的接口。以这种方式,数据存储服务系统可通过担当用户与多个应 用程序之间的中介从而为用户提供简单且统一的接口并生成与可供访问的多个应 用程序的各个服务的复杂且特定交互,来统一用户对这多个应用程序150的体验。
可提供任何适合的数据存储服务系统160。 一种合适的数据存储服务系统在于 2005年7月28日提交的美国专利No. 11/191,771中作了进一步描述,并为了清晰 起见在此作简单描述。为了向用户提供统一交互,数据存储服务系统160可包括维 护与元数据存储180的服务交互细节的服务系统模块190。数据存储服务系统160 可提供一应用程序接口,该接口接收对访问服务的用户请求162、访问相关联的元 数据存储180、和使用该元数据来将该用户的简单(以及可能统一的)请求162转 换为适合该应用程序150的特定的所请求的服务的通信164。
元数据存储180可提供对可用应用程序、可用服务、服务描述、数据类型、 如何访问特定数据、如何在语义上与服务通信以访问所需数据等的指示。
可用应用程序、服务、数据等可由特定类型的对象来表示。例如,访问系统 对象的请求可表示对访问元数据存储中相关联的应用程序的请求。诸如应用程序
150之一等应用程序可被表示为使用持久和/或瞬态数据实现的计算逻辑的集合。在
另一示例中,访问实体对象的请求可表示通过应用程序150中的一个或多个的服务
来访问相关字段或数据以及方法或逻辑定义的集合的请求。在另一示例中,访问方 法对象的请求可表示访问与应用程序接口、或任意其它合适方法相关联的数据的请 求。在另一示例中,访问参数的请求可表示访问与方法或系统相关联的单个字段或 数据的请求。在另一示例中,访问类型描述符对象的请求可表示访问特定类型的全 部数据,诸如与特定系统相关联的特定类型的所有数据或按列隔开的信息中的列的请求。
图2的表200中示出了元数据存储180的一个示例。在该元数据存储中,表 示用户可用服务的对象指示符可以与可被服务系统模块190用于将来自用户的统 一的简单请求162转换为应用程序150所要求的格式的复杂调用164的标识信息和 其它信息相关联。
如图2中所示,元数据存储180可将系统标识符202与系统描述符206和/或 任何其它合适信息中的一个或多个相关联。系统标识符202可以是该所需系统的任 何合适的标识符。系统可以是应用程序150中的一个完整应用程序,或可以是一个 或多个应用程序150的特定服务或功能。系统描述符206可以是应用程序150中相 关联的应用程序的类型和/或一般性功能、用途或名称的任何合适的描述。例如, 系统标识符可以是与标识一种类型的LOB或诸如SAP、 Siebel等其它应用程序的 系统描述符相关联的唯一标识符。
如图2所示,元数据存储180可将系统实例标识符203与连接信息204、系统 标识符202、以及任何其它合适信息中的一个或多个相关联。由系统标识符标识的 系统可以在连接信息204被与系统实例化标识符203和系统标识符202相关联时被 实例化。应该认识到的是,由单个系统标识符标识的例如SAP等单个系统可具有 跨企业系统的多个实例,例如,可通过不同连接访问的多个版本或通过不同连接访 问的同一系统。以这种方式,每个系统标识符可以与零个或多个系统实例化标识符 相关联。连接信息204可以是允许数据存储服务系统与诸如网络位置、主机服务器 名、端口号、数据存储服务系统凭证、关于如何连接至该系统的信息等相关联的系 统实例通信和/或交互的任何合适的连接信息。数据存储服务系统凭证可包括对数 据存储服务系统访问相关联的系统的认证和/或授权。如在此所使用的,认证表示 对作出请求的设备或用户的标识,而授权表示验证该作出请求的用户或设备具有访 问所请求的服务的许可或权限。对实例化的指示或描述可以包括在连接信息和/或
系统描述符中。
如图2的表200所示,元数据存储180可将实体标识符212与实体类型描述 符216、系统标识符202等中的一个或多个相关联。实体标识符212可以是指示在 由系统标识符202所标识的该相关联的系统中可用的相关字段或数据和/或方法或 逻辑定义的特定集合的任何合适的标识符。以这种方式,每个系统标识符202可以 与零个或多个实体标识符212相关联。例如,SAP系统可以具有指示客户实体、 定单实体、产品实体等的一个或多个相关联的实体标识符。方法标识符可以是指示 可被执行以检索所需数据的系统的一组逻辑或指令的任何合适的标识符。实体类型 描述符216可以是对在相关联的方法被执行时将检索到的数据或数据的字段的任 何合适的指示。实体的实例是实体定义中每个字段的一组实际值,这可以通过执行 实体对象中所定义的方法之一来获得。
如图2的表200所示,元数据存储180可将方法标识符222与实体标识符212、 参数列表226等中的一个或多个相关联。以这种方式,关于系统的应用程序接口的 元数据可被称为方法。实体标识符212可以表示可使用所标识的方法来检索特定信 息的相关联的实体。以这种方式,每个实体标识符212可以与零个或多个方法标识 符222相关联。方法标识符222可以是指示可作为应用程序150中的一个的部分被 执行以访问和/或操纵所指示的实体的一组逻辑或指令的任何合适的标识符。方法 标识符可指示诸如读取、写入、更新、删除等方法的类型。例如,SAP系统中的 客户实体可提供创建客户方法、查看客户方法等中的一个或多个。参数列表216 可以是指示调用所标识的方法所需的参数和/或其所需的结构和/或格式的任何合 适格式的任何合适的参数列表。例如,参数列表可包括参数对象的一个或多个标识 符和/或对所需参数的格式和类型的定义。然而,应该认识到的是参数对象本身可 提供对所需参数的格式和/或类型的定义。
单个系统API可以与企业系统内的不同语义一起使用。例如,同一API可被 用于寻找实体的许多实例(诸如通过使用通配符作为输入)以及用于寻找实体的特 定实例。为了节省元数据存储内的高速缓存空间,可引入方法实例的概念作为方法 与方法的每个参数的一组默认值之间的关联的表示。因此,调用与同一方法相关联 的两个方法实例可产生两个完全不同的结果。
如图2的表200所示,元数据存储180可将参数标识符232与参数描述符234、 方法标识符222等中的一个或多个相关联。方法标识符222可指示在该方法的调用 期间可使用该参数对象的一个或多个方法标识符。以这种方式,每个方法标识符 222可与零个或多个参数标识符232相关联。参数标识符232可以是标识相关联的 参数的任何合适的标识符。参数描述符234可以是诸如参数类型(例如,字符串、 整型、实型等)的指示、参数格式等描述相关联的参数的任何合适的信息。
如图2的表200所示,元数据存储180可将参数类型标识符242与标签244、 参数标识符232、默认值248等中的一个或多个相关联。参数类型标识符242可以 是标识相关联的参数类型的任何合适的标识符。在一个示例中,参数类型标识符可 指示诸如字符串、整型、实型等该参数可取的值的类型。在另一示例中,参数类型 指示符可指示诸如成本、个体名、产品代码、联系信息等与该参数值相关联的数据 类型。应该认识到的是可根据环境和应用来使用任何合适的参数类型集。 一个或多 个参数类型标识符242可与另一参数类型标识符242相关联和/或与单个参数标识 符232相关联。以这种方式,参数类型标识符242及其相关联的数据可表示关于复 杂参数的字段。标签244可以是诸如该相关联的参数类型是否是标识符、过滤器等 参数类型的类型或其它特性的任何合适的指示符。参数标识符246可指示参数标识 符,例如具有该参数类型的一个或多个参数标识符232。默认值248可以是指示在 没有值被存储或指示时与该参数类型相关联的参数的默认值的任何合适的默认值 或空值。例如,该默认值可以是严格的值,和/或可指示参数的值的格式。
虽然图2将图1的元数据存储180示为单个表200,但应该认识到的是可使用 任何合适格式的任何合适的数据存储来存储和/或传送元数据存储等,其中包括关 系型数据库、面向对象的数据库、未结构化的数据库、存储器中数据库、或其它数 据存储中的一个或多个。存储阵列可以使用诸如ASCII文本、二进制文件、跨通 信网络发送的数据等平面文件系统或任何其它文件系统来构造。尽管有上述数据存 储的这些可能实现,但如在此所使用的术语数据存储和存储阵列是指以可由计算设 备访问的以任何方式采集和存储的任何数据。
应该认识到的是,图2中的条目项以及用以组织表200的方式仅是为了便于 说明和描述的目的而提供的,因为所提供的具体数据项以及组织它们的方式会根据 采用它们的具体环境和语言而变化。在一个示例中,元数据存储可被实现为包含串 行化元数据对象定义的XML文件。每个应用程序可具有一个或多个系统,其中每 个系统包含诸如实体、方法、参数、参数类型等一个或多个其它分层对象。
通过填充元数据存储180,可向企业系统130注册一个或多个应用程序150, 例如系统对象可在元数据存储内被实例化并与诸如实体、方法、参数等一个或多个 较低分层对象恰当地关联。以这种方式,用户可向图1的服务系统模块190提供访问服务的简单请求(例如,请求162)。通过引用元数据存储180中的对象及其相 关联的元数据,服务系统模块190可将该统一请求162转换为恰当格式的复杂且应 用程序专用的请求164,而无需用户具体了解个体的格式、语言、和语义以及通常 向用户提供可用服务的不同类应用程序。
由于数据存储服务系统160可将用户请求162转换为经过格式化且语义上正 确的请求164并与应用程序150交互,因此应用程序150可诸如通过存储在元数据 存储180中的连接信息204的数据存储服务系统凭证来认证和/或授权数据存储服 务系统。然而,即使数据存储服务系统160被认证和授权,这也并不表示作出请求 的用户120也被授权访问该服务。如上所述,将用户身份和个体凭证一直发送到应 用程序会有缺陷。此外,跨多个计算机地维护用户在多层系统中的身份在技术上具 有挑战性。因此,在访问相关联的应用程序150的服务之前,服务系统160可确定 作出请求的用户的恰当授权。以这种方式,可跨多个不同类应用程序提供用于用户 授权的统一交互,这可以减少为每个应用程序管理多个用户账户并针对每个应用程 序为每个用户管理多个用户凭证的需求。
为了授权用户对所请求的服务的访问,数据存储服务系统160可提供一授权 模块(未示出),或者授权服务可以是如图1所示的服务系统模块190的功能的一 部分。更具体地,服务系统模块可验证所标识的用户设备对所请求的服务具有恰当 权限。诸如通过将服务的对象标识符与用户标识符中的一个或多个相关联和/或与 该被授权用户的一个或多个权限或所允许的动作相关联,可将授权信息存储在元数 据存储180中。
如图2的表200所示,元数据存储180可将对象标识符(诸如系统标识符202、 实体标识符212、方法标识符222、参数标识符232、参数类型标识符242等)与 用户标识符、所标识用户的一个或多个权限252或所允许的动作等中的一个或多个 相关联。用户标识符250可列出所有用户标识符或仅列出在相关联的服务中具有相 关联的权限的那些用户标识符。如果用户标识符仅包括具有肯定权限(例如,访问 对象的服务的权限)的那些用户标识符,则用户标识符250及相关联的权限252 可作为访问控制列表(ACL)来引用。以这种方式,元数据存储中的每个可保护对 象可以具有相关联的ACL,其中每个ACL包括一个或多个访问控制条目(ACE), ACE是用户标识符的数据结构或记录,其相关联的权限集细化该相关联的用户可 作什么。
用户标识符可以是诸如用户上下文描述符等指示个体、组、设备、连接、角
色、软件应用程序、请求时间、用户设备位置等中的一个或多个的任何合适的用户 标识符。在一个简单示例中,用户标识符可以是对门户170的个体账户。在一个更 为复杂的示例中,用户标识符可以是在一天中指定的时间范围内(例如,工作时间) 对门户的通过特定连接(可以具有要求的安全级别)的用户账户的组合。以这种方 式,对服务的访问可用比通过底层后端应用程序150中的任意一个或多个可得到的 更细粒度的粒度来控制。
ace中的每个用户标识符具有指示该所指示的用户被允许的动作、能力、和/ 或特权的相关联的一个或多个权限指示符252。权限指示符252可以是与该对象相 关联的权限的任何合适的指示符。例如,与对象相关联的权限包括查看该对象(例 如,查看存储在后端系统中的由该对象表示的数据,这可以通过执行该对象以返回 该数据来实现)、编辑该对象、启用或禁用该对象的特征、设置对该对象的许可(例 如,修改相关联的acl)、执行该对象(例如,如果该对象是方法)、显示该对 象的副本等中的一个或多个。在一些情形中,ace中没有列出肯定的权限可指示
没有向该所指示的用户标识符提供该权限。在其它情形中,ace中可包括诸如不 编辑该对象等否定权限。后一示例在除非于相关联的acl中另有指定否则对象具 有给予所有用户的默认权限集的情况下是有用的。
应该认识到的是,诸如方法等对象可以没有相关联的acl。数据存储服务系 统160可以用任何合适的方式来解释相关联的acl的缺失。例如,没有acl可指 示所有用户可具有所有的或预定的或默认的权限集,这在过滤器对象的情形中是恰 当的。在另一示例中,没有相关联的acl可指示没有用户具有任何权限。然而, 应该认识到的是,诸如在元数据存储中的修改对象本身的权限等一些默认权限可以 针对每个对象被自动实例化。
图3的表300中示出了与单个对象(例如,系统、实体、方法、参数、参数 类型等)相关联的一个示例acl。 acl 300包含一个或多个ace 302、 304、 306 的列表。每个ace可以由标识相关联的ace的ace标识符来表示。在一个示例 中,ace标识符可以是ace本身,即被授权的用户标识符以及每个相关联的用户 标识符的相关联的权限的列表。如图3中所示,ace标识符可以是指示存储用户 标识符及权限的相关联的ace列表的数据结构的标识符。例如,ace 302可指示 包含用户标识符322、 324及其相关联的权限标识符326、 328的数据结构320。以 类似的方式,ace 306可指示包含用户标识符362、 364及其相关联的权限标识符 366、 368的数据结构360。为了简化对与作出请求的用户相关联的正确ace的寻
找,ACE标识符302、 304、 306可包括用户标识符或从该作出请求的用户接收到 的或关于其发现的一些其它用户指示符的至少一部分。
应该认识到的是, 一个或多个对象可共享同一 ACL和/或一个或多个ACL可 共享相同的ACE。以这种方式,用户的全局权限可被修整为具有多个ACL和/或 ACE的个体服务、或针对多个ACL引用单个ACE的所有服务共同改变。
当对象在元数据存储中被实例化时,服务系统模块190可确定该对象的默认 安全设置。默认安全设置可以与不同类型的对象相同或不同。例如, 一新的系统对 象可具有开放(或无)安全设置,即意味着除非在ACL中另有指示,否则所有用 户将具有所有权限。然而,与该系统相关联的实体、和方法实例可具有封闭的安全 设置,即意味着除非在ACL中另有指示,否则将没有用户具有该对象中的权限。 应该认识到的是,可恰当地使用任何默认的安全设置。
在一些情形中,对象可以具有从父对象派生的默认安全设置以提供或拒绝对 与该对象相关联的服务或资源的访问。例如,如上所述,对象分层结构可包括系统、 实体、方法、参数、参数类型、以及任何其它合适的对象类型的任意组合。因此, 实例化的实体对象可从其父系统对象继承安全性或ACL。在一个示例中,安全设 置(例如,ACL)可仅从直接父对象处继承。在另一示例中,ACL可以从该对象 的任何祖先(父、祖父等)中的一个或多个处继承。例如,诸如参数等较低分层对 象可仅从其父对象,例如相关联的方法对象处继承ACL。该方法对象可具有其自 己的ACL,或可引用其自己的父对象的ACL,例如实体对象的ACL。在另一示例 中,诸如参数等较低分层的对象可从其祖先对象中的任一个或所有对象处继承 ACL。更具体地,较低分层的对象可从其父对象,例如方法对象处继承ACL,并 且可以将其与来自祖父对象,例如实体对象的ACL相组合,并且还可将其与来自 曾祖父,例如系统对象的ACL相组合。来自祖先对象的多个ACL的组合可以是任 何合适的组合,诸如包含在组合后的ACL中的所有ACE的并集、移除了重复ACE 的合并、以及选择与所有组合后的ACL相一致的最小量用户和权限的ACL的交集 等。
在一些情形中,可提供另外的或替换性的分层结构以允许诸如ACL和/或ACE 等安全设置的继承,来提供或拒绝对与该对象相关联的服务或资源的访问。例如, 可创建安全分层结构,它允许以预定方式从对象分层结构之外或对象分层结构之内 继承ACL和/或ACE。
在一个示例中,元数据存储中每个受保护的对象可以没有其自己的与对象标识符相关联的ACL。在一些情形中,对象可借用或引用另一对象的ACL。"其它 对象"可以被确定为对于具有其自己的ACL足够重要的最近的元数据对象。该最 近的元数据对象可以用任何合适的方式来定义。例如,最近的对象可以被定义为如 在实例化的系统的对象分层结构内所定义的该对象的最近的祖先(例如,父、祖父 等)。在另一示例中,最近的对象可以被定义为如在实例化的系统的对象分层结构 内所定义的该对象的最近的关系(例如,父、子、祖父等)。在另一示例中,最近 的对象可被定义为元数据存储中与该对象最相似的另一对象。例如,如果该对象是 指示SAP应用程序中的客户列表的参数,则最近的对象可以是来自诸如另一 SAP 应用程序或SIEBEL应用程序等相似系统的客户参数。
为了实现从一个对象到另一个对象的分层和遗传安全性,可生成安全分层结 构。可使用任何合适的分层结构。例如,图4示出了可被用于定义继承的安全对象 类的示例分层结构400。除了未受保护的对象406之外,分层结构400引入了两个 抽象对象类,即访问受控元数据对象402和个别受控元数据对象404。访问受控元 数据对象可表示需要访问控制,诸如通过ACL但与该ACL的源无关地进行访问控 制的对象的类。其本身即为访问受控元数据对象的个体受控元数据对象404提供它 所拥有的ACL。
元数据对象406可被用于将不需要安全性或用户授权的对象分类。可被分类 为元数据对象406的对象的一个示例可以是过滤器。
不是个体受控元数据对象的访问受控元数据对象402不具有其自己的ACL, 而是取决于来自诸如个体受控元数据对象等另一对象的ACL。以这种方式,访问 受控元数据对象可使用子类来实现将提供到可个别保护(即,具有ACL)的最近 祖先的链接的方法。可被分类为访问受控元数据对象的对象的一个示例可以是动作 对象和/或参数对象。
在一个示例中,访问受控元数据对象可作为API来实现。访问受控元数据对 象402 API可提供一个或多个方法或功能。这些方法可包括可从最近的可个别保护 的祖先检索恰当ACL的获取访问控制列表。访问受控元数据对象402可提供诸如 获取最近的可个别保护的祖先等确定所需ACL的所有者的方法。如上所述,该最 近的祖先可以用任何合适的方式来确定。例如,最近的祖先可以是作为可个别保护 对象的最近关系(例如,子、父、祖父等),或者可以是来自该分层结构的较高层 的最近祖先(例如,父、祖父等)。与该访问受控元数据对象的接近度可以用任何 合适的方式来确定,诸如对象的类型或者"世代"的数目或该对象类型分层结构中 相差的层面(例如,系统、实体、方法、参数、参数类型等)。
可个别保护的元数据对象404拥有其自己的ACL。在被请求最近的可个别保
护的祖先时,可个别保护的元数据对象可返回其本身,这符合对访问受控元数据对 象的定义。进而,可个别保护的元数据对象可对子类提出要求以提供该可个别保护 的元数据对象的所有可个别保护的子对象,从而使得该可个别保护的对象可根据需
要将其自己的ACL复制或遗传到其子对象。可被分类为可个别保护的元数据对象 的对象的一个示例可包括系统对象、实体对象、方法对象、方法-实例对象等。
与访问受控元数据对象相类似,可个别保护的元数据对象可以作为API来实 现。可个别保护的元数据对象404API可提供一个或多个方法或功能。由于可个别 保护的元数据对象可以是访问受控对象本身,所以可个别保护的元数据对象可"继 承"诸如获取访问控制列表、获取最近可个别保护祖先等由访问受控元数据对象提 供的功能或方法中的一个或多个。除了继承自访问受控元数据对象的方法之外或作 为其替换,可个别保护的元数据对象可提供任何其它合适的功能和/或方法。例如, 这些方法可包括允许用户填充和/或修改由该可个别保护的对象所拥有或与其相关 联的访问控制列表(以及相关联的访问控制条目)的设置控制列表。可个别保护的 元数据对象404可提供诸如将访问控制列表复制到子对象等方法,这可以将访问控 制列表遗传到被分类为可个别保护的元数据对象的该对象的子对象。ACL的遗传 可影响该对象的所有子对象,或者可以仅影响预定数目的世代、预定的子对象集(诸 如通过参数列表输入等)。
为了确定可个别保护的元数据对象的子对象,可个别保护的元数据对象可提 供获取该可个别保护的元数据对象的子对象的方法。被分类为可个别保护的元数据 对象的对象的子对象可用任何合适的方式来确定。例如,子对象可被定义为依赖于 被分类为如在对象分层结构(例如,系统、实体、方法、参数等)内所定义的可个 别保护对象的对象的那些对象。
由于ACL在可个别保护的元数据对象自身上,所以在要求访问检查尽可能快 时,图4的安全分层结构所提供的分解可以允许对象将可个别保护的元数据对象 API子类化而无需走查对象元数据树(例如,包含实体的系统,该实体包含方法和 参数等)。在一些情形中,如果对象是细粒度的,则该对象不应将可个别保护的元 数据对象子类化,因为与ACL相关联的存储以及遗传它所用的时间可能是较为重 要的。另外,访问检查能够容许向上走查元数据对象分层结构(例如,包含实体的 系统,该实体包含方法和参数等)以寻找具有自己的ACL的最近对象所花的时间。
对象的安全分类可以用任何合适的方式来指示。例如,元数据存储180可存 储指示该对象的分类的安全类型指示符。在另一示例中,对象标识符可指示该分类。 在另一示例中,对象本身(例如,定义该对象的代码)可定义和/或指示安全分类。
在一个示例中,ACL和/或ACE可由企业系统使用应用程序接口来实现。例 如,每个类或类型的对象可具有相关联的ACL API和/或ACE API。共享一 API
的该类或类型的对象可以与对象分层结构(例如,系统、实体、方法、参数等)相 关和/或与可保护对象分层结构(例如,对象、访问受控对象、可个别保护的对象
等)相关。应该认识到的是,ACL和ACEAPI可以根据底层对象的任意一个或多 个个体或组特征来创建。图5示出了一个示例ACL API 500的表示,而图6示出 了一个示例ACEAPI 600的表示。该API可具有任何合适的输入、输出、和/或功 能。例如,如图5的示例ACL API 500所示,该API的功能可以是检查访问502。 更具体地,为了检查访问,ACLAPI 500可验证该作出请求的用户被列在相关联的 ACE中且与恰当的权限相关联。为了检查访问,ACL API 500可实现图6的ACE API 600。
当被实现时,ACEAPI可提供设置身份606、获取身份608、设置权限602、 获取权限604等功能中的任意一个或多个。设置身份606可被实现用以创建和/或 修改列在ACE中的用户标识符。以这种方式,可通过对ACE添加或删除一行记录 来简单地添加或删除针对特定对象被授权的新用户标识符,或者ACE的整体或部 分可作为一个组来替换。获取身份608可以被实现用以查看和/或验证列在ACE中 的一个或多个用户标识符的列表。设置权限602可被实现用以创建和/或修改列在 ACE中的相关联的用户的权限。以这种方式,与用户标识符相关联的权限功能可 通过添加或删除特定对象的ACE中所想要的权限来简单地和/或集中地操纵。获取 权限功能604可被实现用以查看和/或验证与所列的用户标识符相关联的一个或多 个权限的列表。以这种方式,图5的ACL API 500的检查访问功能502可实现获 取身份功能608以验证该用户以某种方式被授权。具体地,获取身份功能的结果可 返回被授权用户的完整列表,它可与作出请求的用户的用户身份相对比。在另一示 例中,作出请求的用户的标识符可被提供给ACE API,并且在实现获取身份功能 时,可返回所指示的用户标识符被包括在ACE中的用户标识符列表中或被排除在 该列表外的验证符。在另一示例中,所请求的服务或访问权限可被提供给ACEAPI, 并且获取用户功能可返回具有所指示的访问权限的用户标识符列表。ACI API 500 的检查访问502可实现获取权限功能604以验证该被标识的用户具有访问该服务的
恰当权限。在一个示例中,用户标识符可被提供给ACE API,并且该用户的相关
联的权限可被返回然后与用户请求中所请求的服务相对比。在另一示例中,用户标
识符和所请求的服务可被提供给ACE API,并且获取权限功能可返回所指示的访 问权限被授权或未被授权的验证符。应该认识到的是,可以用任何合适的方式来验 证用户以及相关联的所请求的访问权限的授权。
图5的ACL API 500可包括描述ACL API的一个或多个指示符或标识符。例 如,ACL API可包括ACL标识符504、可以是对ACL或与该ACL相关联的对象 的指示符的描述的ACL描述、可指示该ACL是被高速缓存在存储器中还是必须从 存储中检索的高速缓存指示符508等中的一个或多个。
图6的ACE API 600可包括描述ACE API的一个或多个指示符或标识符。例 如,ACE API可包括ACE标识符610、元数据对象标识符612、用户标识符614、 权限标识符616、系统实例标识符618等中的一个或多个。ACE标识符610可以是 标识ACE的任何合适的标识符。元数据对象标识符612可以是与该ACE相关联的 任何合适的对象标识符。例如,元数据对象标识符可包括对诸如系统对象、实体对 象等对象的引用。用户标识符614可包括被授权在权限标识符616所指示的权限下 访问相关联的对象的用户列表。系统实例标识符618在一些情形中可被用于指示系 统对象的特定实例。例如,可为如方法实例等单个可保护对象实例化多个系统实例。 例如,如果产品工作室系统(例如,图1的应用程序150中的一个)具有一百个系 统实例,则该系统的这一个或多个方法实例对象可以每个系统实例具有单独的 ACL。系统实例标识符可以是任选的,因为它可以与是或不是系统实例的对象有关。
图7示出了创建和填充图1的元数据存储180的方法700的一个示例。应该 认识到的是,以下所述操作的任意组合和顺序都可被恰当地实现。
为了建立元数据存储,诸如开发人员等用户可请求创建(702)元数据对象。 响应于执行方法的请求(例如,创建对象),图1的服务系统模块l卯可确定(704) 该作出请求的用户是否具有对所请求的方法对象的访问。例如,图1的服务系统模 块190可使用与以下参照图8进一步描述的方法800相类似的方法。如果用户未被 授权执行该方法,则可采取(708)诸如返回该用户未被授权访问该服务或可提供 替换服务(例如,查看文件而非编辑文件)的通知等恰当动作。如果用户被授权执 行该方法,则可以用任何合适的方式来创建元数据对象。
例如,用户可能希望写入加载新的元数据包(例如,相关对象族)的代码。 在一个情形中,用户可输入
Using Microsoft.Office.Server.ApplicationRegistry .Administration;
〃包URL
Uri packageUri = new Uri ("file:〃c/bla");
//创建新系统对象
System new system = ApplicationRegistry丄oadFromPackage(packageUri);
当使用丄oadFromPackage()方法创建了新的系统时,可执行以上的操作访问检 查704以验证该作出请求的用户具有与自包加载方法相关联的ACE中与其用户标 识符相关联的自包加载(或执行)权限。在一些情形中,除非执行权限还伴随有编 辑权限,否则该执行权限可能无用。例如,该方法可被执行,但如果编辑对象的权 限没有同时被授权则不能导出该执行的结果(例如,新的元数据对象)。当该包被 加载时,可用对原始的父ACL制作镜像的默认ACL来创建子元数据对象(例如, 实体、方法等)。在一些情形中,所有的元数据对象都可具有自包加载(方法)以 允许在元数据对象分层结构中的任何层面上创作包。
如果该包中的父对象或任何对象没有相关联的ACL,则可创建该对象的安全 参数以设置关于元数据对象的安全性。用户可请求(710)创建与特定对象相关联 的ACL。响应于编辑ACL (即,如在此所使用的编辑包括创建、创建子对象、删 除、更新等)的请求,图1的服务系统模块190可确定(712)该作出请求的用户 是否具有对所请求的方法对象的访问。例如,图1的服务系统模块190可使用与以 下参照图8进一步描述的方法800相类似的方法。如果该用户未被授权执行该方法, 可采取(708)恰当的动作。如果该用户被授权执行该方法,则ACL可被创建(714) 并用所指示的用户标识符、与一个或多个用户标识符相关联的权限等来填充。
例如,用户可能想要写入创建或编辑ACL的代码。在一种情形中,该用户可 输入
Using Microsoft.Office.Server.ApplicationRegistry .Administration:
〃获得对元数据对象的句柄
Methodlnstance mi = Methodlnstance.GetByld(333);
〃读取
SPGenericAcl acl = mi.GetAcl();
〃设置
mi.SetAcl(acl);
在以上示例中,可以在任何元数据对象上的.SetAcl(acl)方法中执行访问检查(712)。访问检查可规定.SetAcl(acl)的作出请求的用户必须具有该对象(这里为 方法实例对象mi)的ACL中的设置许可权限,或者必须具有对该对象的父对象的 设置许可权限。该ACL (这里是Acl)可被要求包含提供带有设置权限的某些用户 标识符的至少一个ACE以避免创建不能被管理的对象。
为了填充该对象的ACL和/或ACE,服务模块190可提供一用户界面以便于 用户标识符、权限等的定位和输入。图9-12中示出了用户界面显示的示例。然而 应该认识到的是可向用户提供任何合适的用户界面以及相关联的控件以便于编辑 对象和相关联的元数据值。
图9示出了用于管理实体的类型(Entity) 902的元数据对象的管理用户界面 900。该对象的安全参数可通过选择安全(Manage Security)按钮904来访问,虽 然应该认识到该安全参数可以在该管理用户界面显示中直接访问或通过任何合适 的用户界面控件来访问。如果当前用户未被授权修改关于该元数据对象和/或其父 元数据对象的安全性(例如,没有设置许可权限),则该安全按钮会被禁用、变灰、 不提供等。
响应于对安全按钮904的选择,服务模块190可显示诸如图10中所示的管理 许可界面IOOO等管理许可界面。管理许可界面可表示将用户引向该界面页的对象 的ACL。在界面1000中,每行1004可表示一 ACE。在新实例化的对象中,ACE 的列表可能为空。为了为对象创建更多授权用户及其相关联的权限,许可页面1000 可使得新的用户条目直接可用或者可允许新用户标识符的条目可通过诸如添加用 户(AddUsers/Groups)按钮1002等任何合适的界面控件来访问。可提供允许诸如 移除用户(Remove Selected Users)按钮1006等从ACE移除用户、修改所选用户 的许可(Modify Permissions of Selected Users)按钮1008等其它合适的界面控件, 和/或允许用户访问、修改和/或维护对象的任何其它合适的界面控件。
响应于对新用户按钮1002的选择,服务模块190可显示诸如图11中所示的 添加用户界面1100等添加用户界面。用户可通过任何合适的控件来提供用户标识 符。例如,如图11中所示,用户可向用户(Users/Groups)文本框1102中输入用 户标识符,和/或通过浏览(Browse)按钮1104来选择可显示的用户标识符。与所 指示的一个或多个用户相关联的权限可以用任何适当的方式来提供。例如,在输入 用户标识符之后,除非被用户修改,否则默认权限可以与该用户标识符相关联。在 另一示例中,添加用户界面可以用任何合适的方式提供可被选择或指示的可用权限 的列表或其它选择。图11的界面示出了带有相关联的复选框控件1108的可用权限
1106。
响应于对图11中的修改许可按钮1108的选择,服务模块190可显示诸如图 13中显示的修改许可用户界面1300等修改许可用户界面。用户可在图11的用户 界面中选择一个或多个用户并且该修改许可界面可允许修改这些所选用户的许。在 另一示例中,修改许可页面可允许选择或输入该对象的现有或新授权的用户并允许 修改和/或创建许可。如图13的示例用户界面所示,该修改许可界面可显示该相关 联的对象的用户标识符1302。该用户界面还可显示所显示的用户的相关联的许可 和/或可被选择用于该用户的可用选项。例如,参照图13,针对该相关联的对象的 可用许可选项1304及相关联的用户1302以诸如复选框1306等可指示和允许对该 许可的操纵为被选(例如,复选的)或被禁(例如,未复选的)的相关联的控件来 显示。通过操纵该相关联的控件(例如,复选框1306),该用户可选择和/或取消 选择可用许可。应该认识到的是,可提供诸如列表框、文本框、单选按钮等任何合 适的用户控件界面。
在一些情形中,选择将特定权限与用户标识符相关联可能会导致对该对象或 其它对象使其它权限与该用户标识符相关联,可修改该用户标识符的角色等。例如, 如果在选择该新用户的权限的过程中,选择了设置或管理许可权限,则该新用户可 变为该对象以及该对象以下所有对象的委托管理员。即,该管理ACE可通过对象 分层结构树被自动向下遗传。
在一些情形中,用户可能希望编辑与元数据对象相关联的安全信息并将该信 息向下遗传(如果不是自动完成)到所有子元数据对象上。诸如开发人员等用户可 请求(716)编辑父对象的ACL。该用户可请求(718)将该(经过修改的)父对 象的安全信息向下遗传到该父对象的所有或任何所指示的子对象。响应于执行方法 (例如,设置和遗传对象)的请求,图1的服务系统模块l卯可确定(720)该作 出请求的用户是否具有对所请求的方法的访问。例如,图1的服务系统模块190 可使用与以下参照图8进一步描述的方法800相类似的方法。如果用户未被授权执 行该方法,则可采取(708)恰当的动作。如果该用户被授权执行该方法,则ACL 可以用任何适合的方式被修改(722)并然后向下遗传到该父对象的恰当的子对象。
例如,用户可输入诸如以下内容的代码
Using Microsoft.Office.Serve4r.ApplicationRegistry .Administration;
〃获得元数据对象的句柄
Methodlnstance mi = Methodlnstance.GetByld(333);〃读取
SPGenericAcl acl = mi.GetAcl();
〃设置
mi S etAcl AndPropagate(acl);
在以上示例中,可响应于该对象上的.SetAclAndPropagate()方法的执行来执行 访问检查720。该访问检査可规定该作出请求的用户对该对象或该对象的父对象必 须具有设置许可权限。ACL可被要求包含提供带有设置权限许可的某些用户标识 符的至少一个ACE以避免创建不能被管理的对象。以上示例代码中,ACL被自动 遗传到给定对象的每一子对象。在以上示例中,由于在该用户在父对象中具有设置 许可权限的情况下子对象的ACL也可被设置,所以对每个子对象的ACL的编辑的 执行可被自动授权。
在一些情形中,用户可能希望编辑与元数据对象相关联的安全信息。诸如开 发人员等用户可请求(724)编辑父对象的ACL。响应于该执行方法(例如,修改 对象)的请求,图1的服务系统模块190可确定(726)该作出请求的用户具有对 所请求的方法的访问。例如,图1的服务系统模块190可使用与以下参照图9进一 步描述的方法800相类似的方法。如果用户未被授权执行该方法,则可采取(708) 恰当的动作。如果该用户被授权执行该方法,则ACL可以用任何适当的方式来修 改(728)。
例如,用户可输入诸如以下内容的代码.-
Using Microsoft.Office,Server.ApplicationRegistry.Administration; 〃以某种方式获得对Methodlnstance的句柄 Methodlnstance mi = null; 〃获取Acl
SPGenericAcl acl = mi.GetAcl(); Acl.Clear;
〃创建Ace
SPGenericRight rights = new SPGenericRights(); SPBasePermissions perms = BdcRightsMapper.MapToWss.Execute) Rights. GrantRightsMask = perms;
String providerName = ProviderPickerControl.TextBox(); String principalName = UserpickerControl.TextBox();
SPGcncricAcc acc =
new SPGenericAce(providerName + "\" + principalName, rights);
〃添加Ace并设置Acl
Acl.Add(ace);
〃将花费时间来遗传对运行时OM的改变 mi.SetAcl(acl);
ACL对象模型("OM")可以是Windows SharePoint Services (WSS)或
任何其它合适的web基础结构。该OM可向企业系统组件提供基本认证、持久性、 基础结构和/或其它安全服务。如以上示例中所示的,OM可提供诸如权限等可由 ACL和/或ACE引用或实现的默认安全值。响应于设置ACL,安全改变可在企业 系统的OM的上下文中基本即时地改变。然而,由于元数据对象可由运行时OM 高速缓存,因此在运行时OM在所有组件上观察到改变的ACL之前会有一时延。
虽然以上示例示出了编辑对象的安全参数,但是诸如对象的标识符、对象的 实例等任何参数、特征、设置等都可被修改。如上所述,编辑包括修改、更新、创 建、删除功能等。如图7中所示,用户可请求(742)编辑对象。响应于编辑对象 的请求(例如,执行方法的请求),图1的服务系统模块190可确定(744)该作 出请求的用户是否具有对所请求的方法的访问。例如,图1的服务系统模块190 可使用与以下参照图8进一步描述的方法800相类似的方法。如果用户未被授权执 行该方法,则可采取(708)恰当的动作。如果用户被授权执行该方法,则可以用 任何方式来修改(746)该对象。
在一个示例中,用户可能会想要写入更新Entity (实体)名、为该Entiy创建 新的对象、并随后删除包含该Entity的System (系统)的代码。
例如,用户可输入诸如以下内容的代码
Using Microsoft.Office.Server.ApplicationRegistry.Administration; 〃获得该Entiy对象
Entity poorlyNamedEntity = Entity.GetByld(321); PoorlyNamedEntity.Name = 'amuch better name' poorlyNamedEntity.Update(); 〃访问检查1
PoorlyNamedEntity .Identifiers.Create("newIdName"); 〃访问检查2 System uglyUnwantedSystem = poorlyNamedEntity.System.Delete(); 〃访问检查3 如在上示例中所示的,图1的数据存储服务系统160可执行一次以上的访问
检查。在以上示例中,响应于创建子对象、删除系统对象、以及更新对象的ACL
的请求可执行三次访问检查。然而,应该认识到的是,可在同时执行一次或多次访 问检查。例如,在以上示例中,每个执行的方法都可要求对元数据对象的编辑权限 (例如,创建、删除、更新),因此,三次访问检查可使用针对该权限的单个访问 数据检查来执行,然而应该认识到的是,对于所编辑的这三个不同的对象(例如, 子对象、实体对象、以及系统对象),该编辑权限对于标识符用户可能是不同的, 因此可能需要对每个对象的单独访问检查。
用户可能希望更改存储在图1的元数据存储180中的一些元数据。例如,用 户可能希望更改对应用程序的连接串,例如图2的元数据存储中所示的与系统对象 相关联的连接信息204。在一些情形中,图1的服务系统190可提供编辑对象页面 以便于编辑该对象元数据。图12中示出了一个示例编辑应用程序对象页面1200。 当该编辑应用程序页面被呈现给用户时,可对照与该应用程序对象相关联的ACL 来执行访问检查以验证所标识的用户具有适当的编辑权限。如果访问检査失败,则 该用户被拒绝访问诸如对象页面1200等对象页面,或者该对象页面可被显示但该 页面内的编辑功能域可被关闭,例如,该页面的只读视图。
如上所述,对象可具有控制哪些人具有哪些许可的相关联的ACL。在一些情 形中,对象可用与其父对象相同的默认ACL来创建。在位于分层结构顶端的系统 对象的情形中,该默认可为该对象的创建者创建管理员权限。然而,也可存在附加 或某些权限子集,诸如编辑对象的权限、执行对象(可能会导致应用程序调用)的 权限、不对称权限等。不对称权限的一个示例是可能包括在该对象的管理权限中的 该变该对象的权限的权限。改变对象中权限的权限可被委托给另一用户。具体而言, 具有改变该对象中的权限的权限的人可指派另一用户另外地或替换性地具有改变 该对象中的权限的权限。
在一些情形中,用户可能想要将对该对象以及所有下层(子)对象的管理权 限委托给另一用户。诸如开发人员等用户可请求(730)委托一对象及其子对象的 管理权限。响应于执行一方法(例如,设置和遗传对象)的请求,图1的服务系统 模块190可确定(732)该作出请求的用户是否具有对所请求方法的访问。例如, 图1的服务系统模块1卯可使用与以下参照图8进一步描述的方法800相类似的方 法。如果用户未被授权执行该方法,则可采取(708)恰当的动作。如果用户被授 权执行该方法,则该ACE可被添加并且该ACL可被修改(734),并且随后以任
何合适的方式被向下遗传到该父对象的恰当子对象。 例如,用户可输入诸如以下内容的代码
Using Microsoft.Office.Server.ApplicationRegistry.Adminstration;
〃获得元数据对象的句柄
Methodlnstance mi = Methodlnstance.GetByld(333);
〃读取
SPGenericAcl acl = mi.GetAcl();
〃创建Ace
SPGenericRight rights = new SPGenericRights(); SPBasePermissions perms =
BdcRightsMapper.MapToWss(BdcRights.SetPermissions)
Rights. GrantRightsMask = perms;
String newAdmin = "newAdminDude";
SPGenericAce ace =
New SPGenericAce(newAdmin,rights);
〃添加Ace并设置Acl
Acl.add(ace);
〃可能花费时间来遗传对运行时OM的改变 mi.SetAclandPropagate(acl);
由于该对象的ACL中的新ACE的原因,标识有"newAdminDude"的用户具 有对该对象设置许可的权限。以这种方式,该"newAdminDude"可移除该对象或 任何较低对象中的设置许可这一较老的管理权限。然而如果该老管理员保留父对象 中的"设置许可"权限,则该老管理员可被认为仅具有对该父对象的子对象的委托 管理。以这种方式,该老管理员可重新得到被给予"newAdminDude"的所有权限, 因为该老管理员具有当前被委托给该"newAdminDude"的每个对象的父对象中的 设置许可权限。
在一些情形中,元数据存储的管理员(例如,对该元数据存储内的所有对象 都具有设置许可权限)可能想要允许另一用户具有特定类型的对象的管理权限。例 如,该管理员可能希望另一用户对任何Entity对象具有管理权限但对该Entity所属 的Systemlnstance (系统实例)对象没有管理权限。因此,该管理员例如可改变 Methodlnstance (方法实例)执行特权,但不更改对Systemlnstance的连接串。诸
如开发人员等用户可请求(736)部分地委托对一对象及其子对象的管理。响应于
执行一方法(例如,设置并遗传对象)的请求,图1的服务系统模块190可确定(738) 该作出请求的用户是否具有对所请求方法的访问。例如,图1的服务系统模块190 可使用与以下参照图8进一步描述的方法800相类似的方法。如果用户未被授权执 行该方法,则可采取(708)恰当的动作。如果用户被授权执行该方法,则该ACE 可被添加并且该ACL可被修改(740),并且随后以任何合适的方式被向下遗传到
该父对象的恰当的的子对象。例如,用户可输入诸如以下内容的代码 Using Microsoft-Office.Server.ApplicationRegistry.Administration; 〃获得元数据对象的句柄 System s = System.GetByld(333);
〃读取
SPGenericAcl acl = s.GetAcl();
〃创建Ace
SPGenericRight rights = new SPGenericRights(); SPBasePermissions perms =
BdcRightsMapper.MapToWss(BdcRights.SetPermissions);
Rights. GrantRightsMask = perms;
StringNewAdmin = "newAdminDude,;
SPGenericAce ace = new SPGenericAce(newAdmin,rights);
〃添加Ace并设置Acl
Acl.Add(ace);
〃可能花费时间来遗传对运行时OM的改变 s. Set AclAndPropagate(acl);
〃获得关于Systemlnstance的Acl并移除newAdmin Ace For each(SystemInstance si in System.GetSystemInstances())
SPGenericAcl acl = si.GetAcl(); Acl .Remove(ace》
如上所述,可能会有要避免和/或需要ACL从父对象到子对象的自动继承的情 形。因此,应该认识到的是自动继承仅是在一些情形中发生,而其它情形可能需要 复制或显式遗传来将该ACL向下遗传到子对象。
图8示出了对对象进行检查访问的示例方法800。如上所述,安全性可通过在
可保护对象的关键方法上为各种权限注入访问检查调用来显现。为了检査对对象的
访问,可以接收(802)该请求。该请求或通信的其它方面可被解析以确定(804) 该作出请求的用户的用户标识符。应该认识到的是,请求可以是另一用户通过提供 用于授权和/或认证的用户标识符的代理。该作出请求的用户可以用任何适当的方 式被认证(806),即该用户的身份可被验证。在一些情形中,门户170和/或数据 存储服务系统可在作出任何请求前认证用户。因此,应该认识到的是任何所述的步 骤和/或操作都可以用适于该应用和环境的任何合适的顺序来执行。
要访问的所需服务可根据诸如图1的用户请求162等用户请求来确定808。企 业系统的任何合适部分可确定诸如图1的服务系统模块190或数据存储服务系统 160的授权模块(未示出)等要访问的所需服务。访问所需服务所需的权限可以用 任何合适的方式来确定(810)。例如,元数据存储可维护诸如方法或服务与所需 权限的映射等权限的数据库,或者如上所述,访问所需服务所需的权限可在该服务 本身内关连,例如在实现一方法对象时,该方法对象可提供该服务所需的权限。
要访问的对象可从该请求来确定(812)。例如,该服务请求可以是编辑对象、 查看对象、执行对象等。所需对象可以用诸如对象名、对象类型、对象标识符等任 何合适的方式来指示。该所需对象的ACL可被检索(814),并且该ACL的相关 联ACE可被检索(816)。如上所述在一个示例中,如果一对象被分类为可个别保 护的对象,则ACL可从该对象本身检索,或者在该对象被分类为访问可保护对象 时,ACL可从诸如最近的可个别保护对象等另一对象检索。如果ACL是从另一对 象检索的,则可使用包括确定最近的可个别保护对象在内的任何合适方式来检索该 ACL。
ACE可被检查(818)以确定该用户标识符是否是作为授权用户来提供的,例 如被包括在该ACE中的用户标识符列表中。如果不是,则可采取(820)恰当的动 作。可采取任意数目和组合的任何适当的动作,包括拒绝该用户访问所请求的服务、 向该用户发送访问被拒绝的消息、将该被拒绝的访问通知给管理用户、将该被拒绝 的访问记录在可存储在图1的存储138中的日志数据存储中等等。
如果该用户被列在ACE内,则将与该用户标识符相关联的权限与以上在操作 810中确定的所需权限进行比较(822)。如果所需权限没有与该用户标识符相关 联,则可采取(820)恰当的动作。可采取上述恰当动作中的任何动作。然而,如
果该用户具有该对象中的某些权限,但没有对所需访问的所需权限,则数据存储服 务系统可自动地选择一适当的授权服务而非该用户对于其没有相关联的权限的所 请求的服务。例如,用户可请求编辑对象,但可能没有编辑权限。作为响应,数据 存储服务系统可检查该ACE来看该作出请求的用户的用户标识符是否具有相关联 的查看该对象的权限。然后该相关联的权限可变为所生成的对该应用程序的服务请
求的一部分,诸如以下进一步描述的请求164。
如果该权限或相关联的权限在ACE中被指示,则可验证(824)对访问的其 它限制。例如,除以上所提供的用户身份之外或作为其替换,对服务的安全访问可 基于任何上下文。例如,访问可基于对应用程序中的特征、网站内的位置、访问的 时间和/或日期、关于对该企业系统的用户连接的连接限制等的验证。如果其它限 制没有被验证,则可采取(820)恰当的动作。
如果该用户被授权,则数据存储服务系统可生成(826)对该恰当应用程序的 所指示的服务的请求。该请求可以用任何合适的方式来生成。诸如图1的请求162 等来自用户的请求可被重复或恰当地修改(例如,格式化、扩展等)以发送至图1 的应用程序150。在另一示例中,数据存储服务系统可基于该服务的对象和/或该服 务对象的任何父对象从图1的元数据存储180检索关于该所需服务的恰当的请求信 息。例如,参照图12,数据存储服务系统可使用实体标识符224、参数列表226 或其它任何合适的信息来生成适于应用程序150的复杂请求164以提供所请求的服 务。
应用程序可能期望验证和/或授权数据存储服务系统。如上所述,验证和/或授 权可在该请求之前或作为执行该请求的一部分来完成。如图8中所示,数据存储服 务系统可向应用程序提供各自都可以从图1的元数据存储180中检索到的恰当账 户、连接、标识、凭证等。例如,数据存储服务系统可通过具有对于数据存储服务 系统唯一的认证和/或授权信息的用户账户或服务账户来访问该应用程序,这些信 息可以基于对象标识符以及与该对象和元数据存储中其任何父对象相关联的信息 从元数据存储180中检索。数据存储服务系统能够由一个或多个安全系统登录或授 权,这些安全系统包括没有凭证的服务器进程账户、来自单点登录的WINDOWS 凭证等,其中数据存储服务系统可用单点登录(SSO)个人账户其自身的凭证来扮 演百1忖00\\^@用户并执行\^1忖00\¥8@认证。
通过使用户授权集中化,企业系统的管理可通过维护与图1的应用程序150 中的每一个的一个或多个用户账户来简化,其中数据存储服务系统维护该应用程序的账户、用户凭证等。如上所述,该连接和/或安全信息可以与作出请求的用户的 连接和/或安全信息不同。如上所讨论的,数据存储服务系统可包含和检索元数据 存储180中的认证、连接、授权信息。此外,如果数据存储服务系统正在处理对于 来自同一应用程序的服务的一个或多个请求,则这些请求可通过同一用户线程被汇 在一起,这仅需一个账户、连接等。
应用程序可以基于所提供的来自数据存储服务信息的信息以任何方式认证、验证授权等(830)。为了确保数据存储服务系统被授权访问所请求的服务,与数 据存储服务系统相关联的权限与对该对象的ACL中所标识用户允许的所有权限相 比,可以相同或更大(例如,超级用户)。
如果数据存储服务系统被授权,则该服务可被访问(832)。在该服务被访问 时,可从该应用程序接收(834)到成功指示。该成功指示可以是诸如被执行方法 的结果、该服务被成功实现的指示、可提供对该应用程序的特征的访问等任何合适 的成功指示。数据存储服务系统可以用任何合适的方式将成功指示提供(836)给 作出请求的用户。
在一个示例中,用户可能希望写入验证使用其代码(例如,应用程序150中 的一个或多个)的当前用户是否被授权执行Methodlnstance的代码。该用户可以输 入
Using Microsoft.Office.Server.ApplicationRegistry.MetadataModel; 〃以某种方式获得Methodinstance的句柄 Methodlnstance mi = null; 〃获取Acl
SPGenericAcl acl = mi.Getacl();
〃检查执行访问
If (acl.AssertPermissions(BdcRightsMapper.MapToWss(BdcRights.Execute)) {
〃允许用户访问Methodlnstance对象 Else
Throw new AccessDeniedException();
虽然以上示例略微有人为设计的成分,因为它不是典型的最终用户情景,但
它示出了可被嵌入在数据存储服务系统MethodInstance.Execute()代码中用以允许 或拒绝用户访问后端API或其它应用程序的示例代码。在该示例中,WSS是检查 该用户是否与针对给定权限(以上示例中的Execute)列在ACL中的ACE之一中 的用户标识符相同。然而,应该认识到的是可使用任何合适的方法或过程来验证授 权。
虽然以上使用元数据存储自身的对象讨论了图7中服务请求的示例以及图8 中访问的授权,但是该方法也可被类似地对诸如图1中请求来自一个或多个应用程 序150的服务的用户120等用户实现。例如,参照图8,可接收(802)该请求并 参照存储在元数据存储中应用150的对象确定(804、 808、 810、 812、 814)信息。 可针对与所请求的服务相关联的对象、以及被验证的权限和用户身份来检索相关联 的ACL和ACE。如上所述,存储在元数据存储中的每个对象与一 ACL相关联, 该ACL与一 ACE相关联。数据存储服务系统随后可响应于来自用户的被授权的请 求来生成(826)对该服务的请求,并提供(828)其自己的用以访问该服务的应用 程序150的认证信息。
如在以上示例中所示的,与每个对象相关联的ACL和ACE可被用于数据存 储服务系统中其它对象的创建和维护。具体地,数据存储服务系统中一些类型的对 象可被用于创建、编辑、和/或维护后端应用程序的对象。例如,如图14中的示例 方法1400所示,可为后端应用的一个或多个部分创建(1402)对象。如上所述, 这些对象可以表示诸如系统、系统实例、实体、方法、参数、参数类型等对象分层 结构中的一个或多个。这些对象可以用任何合适的方式来创建,诸如以上关于在图 7中的操作702-706中创建对象以及在操作710-714中创建安全性所述的方式。用 户设备可请求(1404)来自企业系统的后端应用程序的服务。该用户请求可以是允 许该用户跨多个后端应用程序具有公共接口的简单、通用、统一和/或公共请求。 如图1的示例所示,该用户请求可由企业系统130通过可通过门户170处理的任何 合适的通信连接来接收。参照图14,数据存储服务系统可确定(1406)该请求所 引用的恰当对象。数据存储服务系统随后可确定(1407)该用户是否被授权以所请 求的方式访问所指示的对象中的任意一个或全部。虽然可使用任何合适的授权过 程,但以上关于图8的方法800讨论了一个合适的示例。如果该用户未被授权,则 数据存储服务系统可采取(1408)恰当的动作,其中可包括终止请求、向该作出请 求的用户发送错误消息等中的一个或任意一个。如果该用户被授权,则数据存储服务系统可生成(1410)为与该企业系统的恰当后端应用程序的所请求的服务的交互 特别定制的请求。例如,这些对象内所维护的信息可包括可被用于生成消息的消息 格式、所需参数等。数据存储服务系统然后可使用所定制的请求来与恰当的后端应 用程序交互(1412)以访问来自用户的请求中所标识的服务。例如,数据存储服务 系统可将该定制的请求发送到后端应用程序以访问恰当的服务。对后端应用程序的 连接可以通过可预先构造的应用程序的超级用户账户来进行。服务结果可由后端应 用程序提供给数据存储服务系统,由其根据来自用户的具体请求(例如,数据格式、 语言等)、根据用户偏好(例如,用户偏好的数据格式、语言等)、根据用户许可 (例如,可适当地对信息进行挑选、翻译、或编写等)来修改结果,这是在应用程 序没有满足该特定用户请求和/或许可所需的信息保真度时发生。数据存储服务系
统可与用户设备交互(141),诸如传送状态信息、请求结果等。
虽然己示出并描述了本发明的优选实施例,但应该认识到的是可在其中作出 各种改变而不会背离本发明的精神实质和范围。例如,如上所述,企业系统可将后 端应用程序中的存在的功能分离,并且该分离可以在不同的粒度水平上进行。应用 程序的被分离的功能可以按元数据对象的形式在目录中注册。一旦已经注册了可执 行功能,则每个粒度的功能对象的授权信息就可与授权信息相关联。可执行功能的 授权权限的一个示例可以是"执行"与该可执行功能相关联的逻辑中可访问和/或 修改该应用程序的信息的那部分的权限。除了授权执行功能之外,该元数据存储可 另外地或替换地便于授权该执行可在哪里(诸如在较大的门户应用程序之内)完成。 与执行授权类似,执行的位置可在逐个特征(或逐个对象)的基础上被授权。例如, 虽然以上示例描述使用数据存储服务系统来访问具有被定义为系统、实体等的对象 的一个或多个应用程序,但应该认识到的是,对象或访问请求可涉及任何合适的方
法、对象、应用程序等。例如,应用程序特征可允许创建称为Web部件的用户界 面窗口小部件。应用程序的另一特征可允许创建有范围的可搜索/可索引空间。与 元数据存储中的对象相关联的授权信息可允许在Web部件特征内,仅显示系统A 的数据。类似地,元数据授权信息可允许在搜索特征内,仅爬寻(crawl)系统B 的客户实体数据。以这种方式,存储在元数据存储中的对象可引用搜索对象、web 页面连接和访问等。类似地,虽然以上参照诸如XML对象等对象来实现安全数据 存储服务系统,但应该认识到的是,在适当时也可使用列表以及其它类型的编程构 造。
权利要求
1.一种授权用户的方法,包括a)从用户设备接收(802)对应用程序的服务的第一请求;b)确定(804)与所述用户设备相关联的用户标识符;c)在不访问所述应用程序的情况下确定(812)访问所述服务所需的访问权限;d)确定(818)所述用户标识符是否与所述访问权限相关联;e)响应于所述用户标识符与所述访问权限相关联的确定,生成(826)对所述应用程序的所述服务的第二请求,所述第二请求不同于所述第一请求;f)将所述第二请求发送给所述应用程序;g)使用不同于所述用户设备的一个或多个凭证的一个或多个用户凭证来访问(828)所述应用程序。
2. 如权利要求l所述的方法,其特征在于,确定所述用户标识符是否与所述 访问权限相关联包括访问与所述服务相关联的对象,所述对象被存储在一数据存储 中。
3. 如权利要求2所述的方法,其特征在于,访问对象包括访问与所述对象相 关联的访问控制列表。
4. 如权利要求3所述的方法,其特征在于,所述访问控制列表为所述对象所拥有。
5. 如权利要求3所述的方法,其特征在于,访问一访问控制列表包括访问另 一对象的访问控制列表。
6. 如权利要求5所述的方法,其特征在于,还包括通过确定具有访问控制列表的所述对象的最近祖先来确定另一对象。
7. 如权利要求6所述的方法,其特征在于,所述对象是从包括以下对象的组 中选择的系统对象、系统实例对象、实体对象、方法对象、参数对象、以及参数 类型对象。
8. 如权利要求7所述的方法,其特征在于,还包括将系统对象、系统实例对 象、实体对象、方法对象、参数对象、以及参数类型对象的组作为分层结构来组织, 并且其中确定所述对象的最近祖先包括基于所述分层结构来确定与所述对象相关 联并具有访问控制列表的较高层对象。
9. 如权利要求3所述的方法,其特征在于,访问对象包括访问与所述访问控制列表相关联的访问控制条目,所述访问控制条目包括与至少一个授权访问权限相 关联的至少一个授权用户标识符。
10. 如权利要求9所述的方法,其特征在于,所述至少一个授权访问权限是 从包括编辑权限、查看权限、以及执行权限的组中选择的。
11. 一种企业系统(130),包括a) 元数据存储(180),用于存储与一个或多个应用程序(150)相关联的信息;b) 存储器(138),其中存储了数据存储服务系统(160)的机器指令;以及c) 处理单元(132),它被耦合至所述存储器和所述元数据存储,所述处理器 执行所述数据存储服务系统的所述机器指令以执行多个功能,所述机器指令包括i) 从用户设备(120)接收(802)对所述一个或多个应用程序的服务的 第一请求(162),所述第一请求包括指示所述一个或多个应用程序中的一个 应用的可用服务的对象标识符(202、 212、 222、 232、 242)以及与所述用户 设备相关联的用户标识符;ii) 访问(814)所述元数据存储中与所述对象标识符相关联的访问控制 列表(300);iii) 验证(818)所述用户标识符与所述元数据存储中的所述访问控制列 表相关联;iv) 响应于验证,生成(826)对所述服务的第二请求,所述第二请求不 同于所述第一请求;以及v) 将所述第二请求发送给所述应用程序。
12. 如权利要求11所述的系统,其特征在于,所述访问控制列表为由所述对 象标识符所标识的对象所拥有。
13. 如权利要求ll所述的系统,其特征在于,访问所述访问控制列表包括访 问另 一对象的访问控制列表。
14. 如权利要求13所述的系统,其特征在于,所述对象是从包括以下对象的 组中选择的系统对象、系统实例对象、实体对象、方法对象、参数对象、以及参 数类型对象,所述机器指令还包括将所述系统对象、所述系统实例对象、所述实体 对象、所述方法对象、所述参数对象、以及所述参数类型对象的组作为分层结构来 组织,并且通过确定所述对象的最近祖先来确定所述另一对象,该确定是通过基于所述分层结构来确定与所述对象相关联的并且拥有访问控制列表的较高层对象来 进行的。
15. —个或多个包含在被实现时执行一种方法的计算机可读指令的计算机可 读介质,所述方法包括a) 将服务标识符(202)与连接信息(204)、授权用户标识符(250)、以及 所述授权用户标识符的访问权限标识符(252)相关联,其中所述服务标识符与提 供服务的多个可用应用程序中的至少一个的服务相关联;b) 从用户设备接收(802)对所述服务的请求;c) 在不访问所述多个可用应用程序中的至少一个的情况下验证(818)与所述 用户设备相关联的用户标识符匹配所述授权用户标识符;d) 基于所述访问权限指示符,在不访问所述多个可用应用程序中的至少一个 的情况下验证(822)对所述服务的所述请求被所述授权权限指示符所允许;e) 如果所述用户标识符和所述请求被验证,则使用与所述用户设备的用户凭 证不同的凭证来访问(828)所述多个可用应用程序中的至少一个;以及f) 请求(832)来自所述多个可用应用程序中的至少一个的所述服务。
16. 如权利要求15所述的一个或多个计算机可读介质,其特征在于,将服务 标识符与授权用户标识符以及所述授权用户标识符的访问权限指示符相关联包括-将所述服务标识符与一访问控制列表相关联并将所述访问控制列表与一访问控制 条目相关联,所述访问控制条目将所述授权用户标识符与所述访问权限指示符相关 联。
17. 如权利要求16所述的一个或多个计算机可读介质,其特征在于,将所述服务标识符与访问控制列表相关联包括创建包含所述访问控制列表的服务对象。
18. 如权利要求16所述的一个或多个计算机可读介质,其特征在于,将所述服务标识符与访问控制列表相关联包括将所述服务标识符与用于发现包含所述访 问控制列表的所述服务标识符的最近祖先对象的应用程序接口相关联。
19. 如权利要求18所述的一个或多个计算机可读介质,其特征在于,发现最 近祖先对象包括向上走查与所述服务标识符相关联的预定对象分层结构并确定包 含访问控制列表的最近的较高层对象。
20. 如权利要求15所述的一个或多个计算机可读介质,其特征在于,还包括 将所述授权用户标识符和访问权限指示符与一子服务指示符相关联(718、 722), 所述子服务指示符根据 服务分层结构与所述服务指示符相关联。
全文摘要
企业系统可将后端应用程序中存在的可执行功能进行分离,并且该分离可以在不同的粒度级别上进行。该应用程序中被分离的功能可以按元数据对象的形式在目录中注册。一旦可执行功能已被注册,每个粒度的功能对象的授权信息就可与授权信息相关联。以这种方式,应用程序的服务的授权可用统一方式在逐个特征(或逐个对象)的基础上进行。
文档编号H04L9/32GK101194464SQ200680020660
公开日2008年6月4日 申请日期2006年6月16日 优先权日2005年6月23日
发明者A·C·卡帕迪亚, H·M·克劳, J·S·布鲁克 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1