专利名称:用于应用程序和贸易伙伴集成的安全模型的制作方法
用于应用程序和贸易伙伴集成的安全模型
些旦 Ff足
企业对企业(B2B)集成场景涉及一个企业中的应用程序或用户能够访问 由另一企业中的应用程序提供的服务和数据。在应用对应用(A2A)场景中, 一企业中的应用程序访问同一企业中的另一应用程序中的服务和数据。对这些 服务和数据的访问造成了应用程序的安全漏洞,恶意用户可通过该安全漏洞攻 击该应用程序和/或盗取机密数据。
提供以上讨论仅用作一般的背景信息,并且不旨在用于帮助确定所要求保 护的主题的范围。
概述
提供了控制对受保护应用程序的访问的安全模型。在该模型之下,在用户 提交一消息以使得应用程序执行一动作时认证该提交用户。然后使用该应用程 序来确定该提交用户是否被授权代表存储在该消息中的源端点提交消息。然后 在扮演存储在该消息中的源端点用户的同时调用该应用程序中的一种方法来 执行该动作。
提供本概述以便以简化形式介绍将在以下详细描述中进一步描述的一些 概念。该概述不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在 用于帮助确定所要求保护的主题的范围。所要求保护的主题不限于解决在背景 中提及的任何或所有缺点的实现。
附图简述
图1是示出安全端点和受保护应用程序之间的连接的一般化框图。
图2是更详细地示出图1的各元素的更详细的框图。
图3是用于使用一个实施例的安全模型来通过web服务传递消息的流程图。
图4是用于使用一个实施例的安全模型来通过消息通信网关传递消息的
5流程图。
图5是使用EDI服务器作为中介的示例配置的框图。
图6是使用自定义.NET应用程序作为中介的配置的框图。
图7是使用服务器作为中介的配置的框图。
图8是其中自定义Win窗体应用程序担当源端点的配置的框图。
图9是其中多个销售代表担当源端点的配置的框图。
图IO提供了其中本地应用程序担当源端点且.NET应用程序担当中介的配置。
图ii提供了其中本地应用程序担当通过消息通信网关进行通信的源端点 的配置。
图12提供了可包含一个或多个服务器或应用程序的通用计算环境的框图。
详细描述
此处所提供的实施例提供了一种提供对应用程序的受保护访问的框架或 模型。图l提供了示出在以下讨论的实施例中构想的一般交互的元素的框图。
在图1中,位于源端点100、源端点101或源端点103处的应用程序或用 户访问受保护应用程序102。源端点100和103被认为是外部端点,因为它们 并不被信任来提供特定信息。源端点100通过网络106和集成层108来访问受 保护应用程序102。源端点103通过集成层108来访问受保护应用程序102。 源端点101也通过集成层108来访问受保护应用程序102,但受到受保护应用 程序102的信任。
集成层108认证向集成层108提交消息的用户并将消息传送至受保护应用 程序102的其他部分以供处理。在大多数实施例中,集成层108采用web服务 或消息通信网关的形式。集成层108还包括位于web服务或消息通信网关和源 端点100和103之间的可信中介。集成层108的一部分被认为是受保护应用程 序102的一部分,而其他部分可能在受保护应用程序102的外部。
图2提供了图1的各元素的更详细的框图。在图2中,源端点100由两个 单独的源端点260和280来描绘。这些源端点通过各自的外部网络268和288
6连接至集成层108。在一个实施例中,网络268和288是因特网。在其他实施 例中,每一个网络都是不同的网络连接。源端点101被描绘为源端点261和281。 源端点261和281直接或通过被称为内联网的内部网络连接至集成层。源端点 103被描绘为源端点263和283并且也是直接或通过内部网络连接至集成层。
源端点261、 263和260使用网关消息通信来将消息发送至受保护应用程 序104。这一网关消息通信可包括使用诸如文件共享和微软消息排队(MSMQ) 等网关传输。源端点261将消息通过内部网络(未示出)直接提供给网关传输 200。源端点263通过内部网络上的中介213将消息发送至网关传输200。源端 点260通过外部网络268将消息发送至中介210。中介210直接或通过内部网 络(未示出)将消息发送至网关传输200。
中介210和213被授权代表其各自的源端点提交入站请求。中介可以是诸 如应用程序或服务器等源端点和应用程序之间受到该应用程序信任的任何逻 辑"中间人"。中介210和213被信任来可靠地并准确地指示谁向该中介提交 了请求。可信中介具有以下特性
a. 对应于该可信中介的用户帐户(被称为中介用户)必须在允许该 可信中介提交请求的应用程序中建立;
b. 该可信中介必须被配置成代表源端点提交;
c. 该可信中介必须使用某种形式的认证来设置源端点用户(将在以 下进一步描述)。
d. 对于单个源端点可以存在多个可信中介。
网关传输适配器202接受来自网关传输200的消息并将其置于网关队列 204中。入站批处理器206周期性地扫描网关队列204以査找新消息,检索消 息并使用将在以下进一步描述的集成框架218来处理这些消息。
源端点281通过将消息直接发送至因特网信息服务器(IIS) 214以调用 web服务216来将消息发送至受保护应用程序104。通常,源端点281在与IIS 214相同的内部网络上。源端点283通过经由进而将消息发送至IIS 214的中介 223发送消息来将消息发送至受保护应用程序104。源端点283和中介223都 在与IIS 214相同的内部网络上。源端点280通过经由外部网络288与中介220 进行通信来将消息发送至受保护应用程序104。该中介然后将消息发送至IIS
7214以调用web服务216。通常,源端点220在与IIS 214相同的内部网络上。 web服务216与应用程序104中的集成框架218进行通信以执行与消息相 关联的动作。集成框架218处理该消息以执行该动作,如将在以下进一步描述 的。
在一个实施例中,到消息通信网关或到web服务的每一条入站消息都指 定以下消息首部数据源端点、目标端点、源端点用户(可任选)、动作和消 息ID。此外,每一条消息都必须具有相关联的提交用户。
源端点标识与该入站消息的产生相关联的伙伴或应用程序。每一个源端点 都必须向受保护应用程序注册并且与该源端点相关的数据必须在注册期间存 储。该数据包括与源端点相关联的源端点用户帐户、源端点可通过其传递它的 消息的可信中介用户、以及源端点可激活的动作。
源端点用户是与试图执行消息的净荷中所描述的动作的源端点相关联的 用户帐户。在执行动作期间,将使用关于该源端点用户的帐户信息来代表该用 户运行该应用程序以使得与该消息的动作相关联的数据库中的改变可被记录 为是由该源端点用户执行的,并且在某些实施例中使得可以实现行级安全措施 以限制源端点用户对数据库的访问。
源端点用户或者由中介设置或者被设置成匹配提交用户,其是将消息提供 给网关传输或web服务的用户帐户。源端点不被允许直接设置源端点用户。
目标端点标识受保护应用程序中的、有时被称为公司的帐户。每一个帐户 或公司都具有一组相关联的数据库条目和数据库表结构。每一条消息只被允许
影响与同该消息首部中的目标端点相关联的公司相关联的数据。
源端点和目标端点通常由源端点或由中介(如果使用中介的话)放置于首
部中。当使用中介时,源端点用户由该中介基于其对该源端点用户的认证来添
加。当不使用中介时,源端点用户被设置成匹配提交用户。
动作指定将要由受保护应用程序中的业务类来执行的操作。每一个动作都
映射到一业务类和该类中将执行该动作的方法。对于web服务,每一种web
服务方法都与不同的动作相关联。结果,调用web服务方法的动作导致选择一
动作。在这些实施例中,动作不必在消息首部中列出。
消息ID为消息提供标识符以允许幂等性(idempotency),以便确保消息只被处理一次。
提交用户是向web服务提交消息或将消息放置在网关传输上的实体的用 户名。例如,如果中介220将消息放置在web服务216中,则中介220在被称 为中介用户的、将被认为是提交用户的用户帐户下运行。如果源端点281向 web服务提交消息,则与源端点281相关联的用户帐户将会是提交用户。提交 用户由IIS 214和网关传输200通过认证过程来确定,且并非取自消息首部或 该消息的净荷。用于认证用户的技术是公知的并且包括请求用户名和诸如口令 (纯文本、加密的或散列的)、该口令被存储在该提交用户所使用的机器上的 指示、或数字证书等某种形式的安全凭证。检査安全凭证以确定其是否匹配对 应于该用户名存储的安全凭证。如果它匹配,则该用户名得到认证。如果不匹 配,则该认证过程失败且源端点或中介被拒绝访问1IS214或网关传输200。
消息的净荷还可包括允许业务类208生成诸如伙伴标识符或雇员标识符 等源端点约束的信息。该约束帮助阻止其中与一个伙伴相关联的源端点发送另 一伙伴的文档的欺骗。因此,该文档的净荷必须与该源端点一致以便能够提交 改变,如将在以下进一步讨论的。
图3提供了用于在其中消息通过web服务方法来传递的一个实施例中实 施安全模型的过程的流程图。在步骤300中,IIS 214或者从诸如源端点281 等源端点或者从诸如中介220和223等中介接收消息。如上所述,用户帐户由 1IS214来认证以确定该源端点或中介的用户名。该用户名是提交用户。如果该 用户帐户无法得到认证,则IIS 214返回一错误并且该过程结束。
一旦该提交用户得到认证,就在步骤302处激活与被发送至IIS 214的消 息相关联的web服务方法。在步骤304处,web服务216通过使用该源端点的 用户名作为参数来调用LogonAs API 240来作为源端点用户登录到受保护应用 程序104。对于来自中介220和223的消息,源端点用户己由中介放置于消息 的首部中。对于来自源端点281的消息,如果该源端点不指定源端点用户,则 提交用户被用作源端点用户。如果该源端点指定源端点用户,则源端点用户必 须匹配提交用户。
LogonAs API 240认证web服务216在其下运行的代理用户帐户并且然后 设置应用程序104中的参数以使得应用程序104中的业务类如同LogonAs调用
9中所提供的用户已经直接登录到应用程序104那样运行。
这种类型的登录此处被称为扮演源端点用户。在某些实施中,LogonAs240 不需要源端点用户的口令。由此,web服务216能够作为源端点用户登录到受 保护应用程序104而无需该源端点用户的口令。如果源端点用户未被授权访问 该应用程序,则对LogonAs API 240的调用将会失败。
在步骤310处,web服务216将首部、消息正文和提交用户传入到受保护 应用程序104中的集成框架218中。在许多实施例中,web服务216使用文档 上下文参数来指定消息首部数据。因此,文档上下文参数包括对应于源端点、 目标端点、源端点用户、消息ID和动作的字段。提交用户作为一单独的参数 来传递。
在步骤312处,集成框架218使用目标端点来选择帐户或公司。消息的确 认然后使用与所选公司相关联的属性来执行。
在步骤314处,集成框架218定位帐户/公司数据242以确定所指定的源 端点对该公司是否有效。如果对该公司无效,则返回一错误。如果该源端点是 有效的,则该过程在步骤316处继续,在步骤316中,集成框架218检索源端 点数据244并确定源端点用户、中介用户(如果有的话)和动作对该源端点是 否有效。确认源端点用户和中介用户(如果有的话)通过首先检査提交用户是 否与该源端点用户不同来执行。如果该提交用户是不同的,则该过程确定该提 交用户是否被配置为对于该源端点的可信中介。如果该提交用户与该源端点用 户相同,则该过程确定该用户是否被配置为该源端点的源端点用户。如果这些 确认中的任一个失败,则向源端点返回一错误并且不执行动作。
在步骤318处,集成框架218调用业务类208中的方法来处理与消息相关 联的动作。在某些实施例中,当调用业务类208时,该业务类激活对于其访问 的表的行级安全措施。行级安全措施控制特定用户能够读取、写入或创建什么 数据。因为受保护应用程序104在源端点用户帐户下运行,所以该行级安全措 施将基于授予该源端点用户的许可来做出安全判定。因此,如果一特定用户不 被允许査看表中的特定记录,则打开行级安全措施将导致试图访问这些记录的 动作失败或仅返回该源端点用户被允许接收的数据。
在处理期间,业务类208基于消息的净荷来标识约束。在步骤320处,业务类208将这些约束连同响应一起返回至集成框架。在步骤322处,集成框架 218将从业务类接收到的约束与存储在源端点数据244中的约束列表进行比较 以确定是否提交由业务类208做出的改变或是否回退由业务类208做出的改 变。与该约束列表的比较可包括在业务类返回表示不存在约束的值的情况下指 示一令人满意的比较,基于对应于列表中的特定约束属性和由业务类返回的约 束的各个值之间的匹配来指示一令人满意的比较,以及在涉及对应于多个约束 属性的值的复杂布尔表达式返回真值的情况下指示一令人满意的比较。如果该 比较并不令人满意,则回退这些改变并将向源端点返回一错误。如果该比较是 令人满意的,则提交由业务类做出的改变。
在步骤324处,集成框架218将对动作的响应返回至web服务216,其将 该响应返回至源端点。集成框架218还更新日志246以示出所采取的动作、源 端点用户、源端点、目标端点、消息Id、以及提交用户。稍后可使用该信息来 标识安全措施违背方面的可能的尝试。
通过允许提交用户与源端点用户不同,同时始终在IIS 214处认证该提交 用户,各实施例允许应用程序的功能通过中介展示给外部伙伴而不使该应用程 序暴露给严重的安全威胁。此外,将中介用户连系到源端点帮助防止源端点欺 骗中介,因为即使源端点能够克服该中介处的安全措施,本发明各实施例的安 全模型也不会在该中介用户未被配置成代表该源端点提交的情况下处理消息。
图4提供了在其中消息使用网关消息通信来传递的一个实施例中用于实 施安全模型的过程的流程图。在图4的步骤400中,网关传输200认证或者是 源端点用户或者是中介用户的提交用户。基于该认证,网关传输200接受来自 该提交用户的消息并用该提交用户的用户名来对该消息加戳。在步骤401处, 网关传输适配器202从该传输读取消息和提交用户并将该消息和提交用户放置 于网关队列204中。
在步骤402处,入站批处理器206从网关队列204加载消息。在步骤404 处,批处理器206选择一消息及其相应的提交用户。在步骤406处,入站批处 理器206确定该源端点用户的用户名。对于来自中介的消息,源端点用户从消 息首部中提取。对于直接来自源端点的消息,源端点用户被设置成提交用户。 批处理器然后调用用户ID转换239,其将外部源端点用户凭证映射到内部应
11用程序用户ID。该批处理器然后调用RunAsAPI248;其允许该入站批处理器 使用该内部应用程序用户ID来作为源端点用户运行。在该上下文中,该批处 理器扮演源端点用户。注意,如果源端点用户未被授权调用应用程序,则RunAs API将会失败。
在步骤407处,入站批处理器206将消息、消息首部和提交用户传递给集 成框架218。
集成框架218在步骤408处基于消息首部中的目标端点来选择帐户/公司 并且在步骤410处使用帐户/本地公司数据242来检査源端点对该帐户/公司是 否有效。如果该源端点对该帐户/公司是无效的,则该过程结束并返回一错误。
在步骤412处,集成框架218使用源端点数据244来检查源端点用户、中 介用户和动作对源端点是否有效。确认源端点用户和中介用户(如果有的话) 通过首先检査提交用户是否与该源端点用户不同来执行。如果该提交用户是不 同的,则该过程确定该提交用户是否被配置为对于该源端点的可信中介。如果 该提交用户与该源端点用户相同,则该过程确定该用户是否被配置为该源端点 的源端点用户。如果这些确认中的任一个失败,则该过程结束并返回一错误。
在步骤416处,集成框架218调用业务类208中的方法来执行在消息首部 中发现的动作。在某些实施例中,业务类208为其访问的每一张表设置行级安 全措施以使得对表中的记录的访问基于授予源端点用户的许可。业务类208还 在执行动作期间基于消息来提取约束。
在步骤418处,集成框架218从业务类208接收约束以及对动作的响应。 在步骤420处,集成框架218将这些约束与在对应于源端点的源端点数据244 中发现的约束列表进行比较。如果该比较是令人满意的,则集成框架218提交 由业务类208做出的改变。如果该比较不令人满意,则集成框架218回退由业 务类208做出的改变。
在步骤422处,集成框架218用源端点、目标端点、源端点用户、提交用 户、消息W和所执行的动作来更新日志246。集成框架218将对动作的响应返 回至批处理器206,其将该响应写入到网关队列204中。
在步骤424处,批处理器206确定是否存在更多消息要处理。如果存在更 多消息,则该过程返回至步骤404并对消息执行步骤406至422。当不存在更
12多消息时,该过程在步骤426处继续,其中一单独的出站批处理器(未示出)
发送来自网关队列204的响应消息。
图5提供了其中可以使用本发明的安全模型的环境的示例。在图5中,一 组贸易伙伴500、 502、 504、和506通过增值网络508连接至位于应用程序房 屋(premises)上的电子数据交换(EDI)服务器510。贸易伙伴500具有一组 分支位置514、 516和518。在图5中,分支位置514中的源端点将购买定单 520通过增值网络508发送至EDI服务器510。
EDI服务器510如上所述地认证该用户并确定源端点用户是
"Extranet\NW—User"。基于该认证,EDI服务器510能够确定该源端点是
"Northwind" 。 EDI服务器510还能够基于购买定单520或源端点和存储在 EDI服务器510中的目标端点之间的关联中的信息来将该目标端点标识为
"MyAxapta" 。 EDI服务器还基于购买定单520来确定动作"CreateSO"。通 过使用该信息,EDI服务器510生成具有包括消息ID、源端点用户、源端点、 目标端点和动作的消息首部的消息524。消息524还在该消息的正文中包括来 自购买定单520的信息。
消息524被供给IIS和web服务526,其认证EDI服务器510以确定提交 用户的用户名是"IntraneAEDI—Sys"。然后将该提交用户和消息转发给集成框 架528,如以上所讨论的。
集成框架528确认该消息以确保源端点"Northwind"对目标端点
"MyAxapta"是有效的。集成框架528还确定源端点用户"ExtraneANW—User"、 中介用户"Intranet\EDI—Sys"和动作"CreateSO"对源端点"Northwind"是否 有效。
集成框架528调用业务类530中的方法来执行动作"CreateSO"。业务类 530执行该动作并返回响应和集成框架528针对约束列表检查的约束532。集 成框架528然后返回该响应并更新日志。
图6提供了其中可以使用本发明的安全模型的另一环境的示例。在图6 中,贸易伙伴600、 602、 604和606各自具有相应的FTP文件夹610、 612、 614和616。在贸易伙伴600的分支位置618处的用户在被FTP服务器认证之 后将购买定单620存储在FTP文件夹610中。基于该认证,该购买定单用将该购买定单放置于FTP文件夹610中的用户的用户名来加戳。
自定义.NET应用程序622从FTP文件夹610中检索购买定单620并使用 它来形成消息624。具体而言,.NET应用程序622创建消息624中的首部,其 包括取自加戳在该消息上的用户名的源端点用户"Extranet\NW_user"的标识、 以及基于FTP文件夹的身份来确定的源端点"Northwind"和目标端点
"MyAxapta"的标识。.NET应用程序622还基于存储在该FTP文件夹中的消 息类型来将动作字段填为"CreateSO" 。 .NET应用程序622使用该购买定单 来形成消息624的正文。
.NET应用程序622驻留在应用程序房屋626上,其还包含应用程序628 及IIS和web服务630。消息624被提供给IIS和web服务630,其将.NET应 用程序622的用户名认证为"Intranet/CustApp_Sys"。在该配置中,该用户名 被指定为提交用户和中介用户。web服务630将提交用户
"Intranet/CustApp_Sys"和消息624提供给应用程序628中的集成框架632。 集成框架632通过确定源端点"Northwind"对于目标端点帐户"MyAxapta" 是否被允许,以及源端点用户"Extranet\NW_User "、中介用户
"Intranet\CustApp—Sys"和动作"CreateSO"对于源端点"Northwind"是否被 允许来认证该消息。在该消息得到确认之后,集成框架632调用基于该消息的 正文来检索约束的业务类634。在图6的示例中,消息正文中的顾客ID "NT East"由业务类634用来检索约束"C-Nol"。集成框架632将该约束与约束 列表进行比较以确定是提交还是回退由业务类634做出的改变。集成框架632 然后记录源端点用户、源端点、目标端点、提交用户、消息Id和动作,并通 过IIS和web服务630将来自业务类634的响应返回至自定义.NET应用程序 622。
图7提供了其中可以使用本发明的安全模型的另一环境的示例。在图7 中,外部伙伴702、 704、 706和708与服务器700进行通信,其在一个实施例 中是来自微软公司的BIZTAL^品牌服务器。服务器700位于房屋710上, 房屋710还包含应用程序712。外部伙伴702包括远程位置714、 716和718。
远程位置718处的用户将购买定单720发送至服务器700。服务器700将 该用户认证为"Extranet/NW一User"并确定该用户与源端点"Northwind"和目标端点"MyAxapta"相关联。服务器700创建消息722的正文并基于购买定单 720的内容标识动作"CreateSO"。服务器700将消息ID、源端点用户的身份、 源端点、目标端点和动作放置于消息722的消息首部中。
服务器700与应用程序712中的传输适配器740进行通信。传输适配器 740将与服务器700相关联的用户帐户"Intranet\BTS_Sys"标识为提交用户。 传输适配器将该消息和提交用户放置于网关队列742上。批处理器744从网关 队列取得该消息和提交用户并调用RunAs API来代表源端点用户 "Extranet\NW—User"运行。批处理器744然后将该消息和提交用户传递给集 成框架724。
集成框架724确定源端点"Northwind"对目标端点"MyAxapta"是否有 效。集成框架724还确定源端点用户"Extranet\NW—User"、中介用户 "Intranet\BTS—Sys"和动作"CreateSO"对源端点"Northwind"是否有效。
如果这些消息参数是有效的,则集成框架724调用业务类726,其执行该 动作并返回响应和约束728。集成框架724将该约束与约束列表进行比较以确 定是提交还是回退这些改变。集成框架724然后更新日志并将该响应返回至处 理器744。处理器744然后将该响应放置于网关队列中,适配器740将该响应 从该网关队列发送至服务器700。服务器700还将该响应返回至远程位置718。
图8提供了其中销售输入员工808代表一个或多个伙伴800、 802、 804 和806行动的配置的框图。例如,销售输入员工808可从伙伴800的位置812 接收电话呼叫并可基于该电话呼叫创建购买定单810。
销售输入员工808使用自定义Win窗体应用程序814来输入购买定单信 息。自定义Win窗体814认证销售输入员工808并将销售输入员工808的用户 名"Intranet\Clerk—user"指定为源端点用户并将"WinFormsApp"指定为源端 点。基于由销售输入员工808置于购买定单810中的信息,Win窗体应用程序 814标识目标端点"MyAxapta"和动作"CreateSO"。该信息被置于消息816 的首部中并且该消息的正文是基于购买定单810中的其他信息来生成的。
自定义Win窗体814将消息816发送至IIS和web服务818。IIS 818将销 售员工808认证为消息816的提交用户。因此,销售输入员工808既是提交用 户又是源端点用户。在这种情况下,指定该消息上的源端点用户是可任选的,因为该源端点用户与提交用户相同。当没有在该消息上指定时,源端点用户被
设置成与提交用户相同。IIS和web服务818将提交用户和消息816传入到应 用程序822中的集成框架820中。
集成框架820确定源端点"WinFormsApp"对目标端点"MyAxapta"是 否有效,并且还确定源端点用户"Intranet\Clerk_user"和动作"CreateSO"对 源端点"WinFormsApp"是否有效。如果这些参数都是有效的,则集成框架820 调用业务类824来执行该消息中所表示的动作。业务类824返回响应和集成框 架820针对"WinFormsApp"的约束列表进行比较的约束826。集成框架820 然后更新日志并通过IIS和web服务818将响应返回至销售输入员工。
图9提供了其中贸易伙伴900、 902、 904和906与多个销售代表908、 910 和912中的一个进行通信的配置。每一个销售代表都用自定义Win窗体应用程 序914来工作以生成销售定单920。例如,与贸易伙伴900相关联的远程位置 918处的用户连系代表他们生成销售定单920的销售代表908。
自定义Win窗体应用程序914认证该销售代表并将该销售代表的用户名
"Intranet\RepA"设置为源端点用户并将源端点设置为"SalesRepA"。自定义 Win窗体应用程序914还使用销售定单920中的信息来将目标端点标识为
"MyAxapta"并将动作标识为"CreateSO"。通过使用该信息和购买定单920 中的其他信息,自定义Win窗体914生成消息922,其在该消息的正文中包括 销售定单信息并包括指示源端点的身份、源端点用户、目标端点、动作和消息 ID的首部。
自定义Win窗体914将该消息发送至IIS和web服务916。IIS 916将销售 代表908的用户名"Intranet\RepA"认证为提交用户。因此,提交用户和源端 点用户是相同的。web服务916将该消息和提交用户的身份提供给应用程序926 中的集成框架924。
集成框架924验证源端点"SalesRepA"对目标端点"MyAxapta"是否有 效。集成框架924还验证源端点用户"Intranet\RepA"和动作"CreateSO"对 源端点"SalesRepA"是否有效。集成框架924然后激活业务类926以执行该 动作。业务类926返回响应和应用程序接口针对源端点"SalesRepA"的约束 列表进行比较的约束928。集成框架924然后记录该交易并通过IIS和web服务916将该响应返回至销售代表908。
图10提供了其中位于与应用程序1004相同的房屋1002上的本地应用程 序1000是源端点的配置。
在图10中,本地应用程序1000由包含文件夹1008和.NET应用程序1010 的服务器来认证。本地应用程序1000然后将销售定单1006存储在文件夹1008 中。在该存储过程期间,购买定单1006用用户名"lntraneALocalApp"来加戳。
.NET应用程序1010从文件夹1008中检索购买定单1006并使用购买定单 1006中的信息来构造消息1012。具体而言,.NET应用程序1010将源端点用 户设置成本地应用程序1000的用户名"IntraneALocalApp"并基于加戳在该消 息上的用户名来将源端点设置成"LocalApp" 。 .NET应用程序1010或者基于 源端点或者基于销售定单1006的内容来将目标端点设置成"MyAxapta"并基 于销售定单1006的内容将动作设置成"CreateSO"。
消息1012被提供给IIS和web服务1014,其将与.NET应用程序1010相 关联的用户名"Intranet\Local—Sys"认证为提交用户。web服务1014将提交用 户和消息1012提供给应用程序1004中的集成框架1016。集成框架1016验证 源端点"LocalApp"对目标端点"MyAxapta"是否有效,并验证中介用户 "Intranet\Local—Sys"、源端点用户"Intranet\LocalApp"和动作"CreateSO" 对源端点"LocalApp"是否有效。集成框架1016然后激活业务类1018来处理 该动作。
业务类1018返回响应和集成框架1016针对源端点的约束列表进行比较的 约束1020。如果在约束和约束列表之间做出的比较是令人满意的,则集成框架 1016提交由业务类1018做出的改变并记录该交易。集成框架1016然后通过 web服务1014将该响应返回至应用程序1010。
图11提供了其中位于与应用程序1104相同的房屋1102上的本地应用程 序1100是源端点并且直接传送至消息网关的配置。
在图11中,本地应用程序1100由担当网关传输的、包含文件夹1108的 服务器来认证。本地应用程序1100然后将消息1112存储在文件夹1108中。 消息1112由本地应用程序1100来创建并包括指示"LocalApp"是源端点、 "MyAxapta"是目标端点并且"createSO"是动作的消息首部。注意,源端点用户并不在该消息首部中指定,因为源端点用户的指定在不使用中介时是可任 选的。在该存储过程期间,消息1112用作为提交用户的、与应用程序1100相
关联的用户名"Intranet\LocalApp"来加戳。
将消息1112和提交用户提供给应用程序1104中的传输适配器1114。传 输适配器1114将消息1112和提交用户存储在网关队列1116中。批处理器1118 然后从网关队列1116中移除该消息并调用RunAs API以便在源端点用户下运 行。
批处理器1118将提交用户和消息1112提供给集成框架1120。集成框架 1120验证源端点"LocalApp"对目标端点"MyAxapta"是否有效,并验证源 端点用户"Intranet\LocalApp"和动作"CreateSO"对源端点"LocalApp"是否 有效。集成框架1120然后激活业务类1122来处理该动作。
业务类1122返回响应和集成框架1120针对源端点的约束列表进行比较的 约束1124。如果在约束和约束列表之间做出的比较是令人满意的,则集成框架 1120提交由业务类1122做出的改变并记录该交易。集成框架1120然后将该响 应返回至批处理器1118,其将该响应放置在网关队列1116上。该响应然后被 传递回本地应用程序1100。
图12示出了可在其上实现各实施例的合适计算系统环境1200的示例。计 算系统环境1200仅为合适的操作环境的一个示例,并非旨在对所要求保护的 主题的使用范围或功能提出任何局限。也不应该把计算环境1200解释为对示 例性操作环境1200中示出的任一组件或其组合有任何依赖性或要求。
各实施例可用于各种其它通用或专用计算系统环境或配置。适合在各实施 例中使用的公知的计算系统、环境和/或配置的示例包括,但不限于,个人计算 机、服务器计算机、手持或膝上型设备、多处理器系统、基于微处理器的系统、 机顶盒、可编程消费电子产品、网络PC、小型机、大型计算机、电话系统、 包含上述系统或设备中的任一个的分布式计算环境等。
各实施例可在诸如程序模块等由计算机执行的计算机可执行指令的通用 上下文中描述。 一般而言,程序模块包括执行特定任务或实现特定抽象数据类 型的例程、程序、对象、组件、数据结构等。 一些实施例被设计为在其中任务 由通过通信网络链接的远程处理设备来执行的分布式计算环境中实施。在分布
18式计算环境中,程序模块位于包括存储器存储设备的本地和远程计算机存储介 质中。
参考图12,用于实现一些实施例的示例性系统包括计算机1210形式的通
用计算设备。计算机1210的组件可以包括,但不限于,处理单元1220、系统 存储器1230和将包括系统存储器在内的各种系统组件耦合至处理单元1220的 系统总线1221。
计算机1210通常包括各种计算机可读介质。计算机可读介质可以是能由 计算机1210访问的任何可用介质,而且包含易失性、非易失性介质以及可移 动和不可移动介质。作为示例而非局限,计算机可读介质可以包括计算机存储 介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据 结构、程序模块或其它数据等信息的任何方法或技术实现的易失性和非易失 性、可移动和不可移动介质。计算机存储介质包括,但不限于,RAM、 ROM、 EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它 光盘存储、磁带盒、磁带、磁盘存储或其它磁性存储设备、或能用于存储所需 信息且可以由计算机1210访问的任何其它介质。通信介质通常以诸如载波或 其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块 或其它数据,并包括任意信息传送介质。术语"已调制数据信号"指的是其一 个或多个特征以在信号中编码信息的方式被设定或更改的信号。作为示例而非 限制,通信介质包括有线介质,诸如有线网络或直接线连接,以及无线介质, 诸如声学、RF、红外线和其它无线介质。以上的任何组合也应包括在计算机可 读介质的范围内。
系统存储器1230包括易失性和/或非易失性存储器形式的计算机存储介 质,如只读存储器(ROM) 1231和随机存取存储器(RAM) 1232。基本输入 /输出系统1233 (BIOS)包括如在启动时帮助在计算机1210内的元件之间传 输信息的基本例程,它通常储存在ROM 1231中。RAM 1232通常包含处理单 元1220可以立即访问和/或目前正在其上操作的数据和/或程序模块。作为示例 而非局限,图12示出了操作系统1234、应用程序1235、其它程序模块1236 和程序数据1237。
计算机1210还可以包括其它可移动/不可移动、易失性/非易失性计算机存
19储介质。仅作为示例,图12示出了从不可移动、非易失性磁介质中读取或向
其写入的硬盘驱动器1241,从可移动、非易失性磁盘1252中读取或向其写入 的磁盘驱动器1251,以及从诸如CDROM或其它光学介质等可移动、非易失 性光盘1256中读取或向其写入的光盘驱动器1255。可以在示例性操作环境中 使用的其它可移动/不可移动、易失性/非易失性计算机存储介质包括但不限于, 磁带盒、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等等。 硬盘驱动器1241通常由不可移动存储器接口,诸如接口 1240连接至系统总线 1221,磁盘驱动器1251和光盘驱动器1255通常由可移动存储器接口,诸如接 口 1250连接至系统总线1221。
上文讨论并在图12中示出的驱动器及其相关联的计算机存储介质为计算 机1210提供了计算机可读指令、数据结构、程序模块和其它数据的存储。在 图12中,例如,硬盘驱动器1241被示为存储操作系统1244、应用程序1245、 其它程序模块1246和程序数据1247。注意,这些组件可以与操作系统1234、 应用程序1235、其它程序模块1236和程序数据1237相同,也可以与它们不同。 操作系统1244、应用程序1245、其它程序模块1246和程序数据1247在这里 被标注了不同的标号是为了说明至少它们是不同的副本。
用户可以通过诸如键盘1262、话筒1263和定点设备1261等输入设备将 命令和信息输入至计算机1210中,定点设备161诸如是鼠标、跟踪球或触摸 垫。这些和其它输入设备通常由耦合至系统总线的用户输入接口 1260连接至 处理单元1220,但也可以由其它接口或总线结构,诸如并行端口、游戏端口或 通用串行总线(USB)连接。监视器1291或其它类型的显示设备也经由接口, 诸如视频接口 1290连接至系统总线1221。除监视器以外,计算机也可以包括 其它外围输出设备,诸如扬声器1297和打印机1296,它们可以通过输出外围 接口 1295连接。
计算机1210使用到诸如远程计算机1280等一个或多个远程计算机的逻辑 连接在网络化环境中操作。远程计算机1280可以是个人计算机、手持设备、 服务器、路由器、网络PC、对等设备或其它常见的网络节点,且一般包括以 上关于计算机1210描述的多个或所有的元件。图12中所示的逻辑连接包括局 域网(LAN) 1271和广域网(WAN) 1273,但也可以包括其它网络。这样的联网环境在办公室、企业范围计算机网络、内联网和因特网中是常见的。
当在LAN联网环境中使用时,计算机1210通过网络接口或适配器1271 连接至LAN 1270。当在WAN联网环境中使用时,计算机1210通常包括调制 解调器1272或用于通过诸如因特网等WAN 1273建立通信的其它装置。调制 解调器1272可以是内置或外置的,它可以通过用户输入接口 1260或其它适当 的机制连接至系统总线1221。在网络化环境中,相对于计算机1210所描述的 程序模块或其部分可被储存在远程存储器存储设备中。作为示例,而非限制, 图12示出了远程应用程序1285驻留在远程计算机1280上。可以理解,所示 的网络连接是示例性的,且可以使用在计算机之间建立通信链路的其它手段。
尽管用对结构特征和/或方法动作专用的语言描述了本主题,但可以理解, 所附权利要求书中定义的主题不必限于上述具体特征或动作。相反,上述具体 特征和动作是作为实现权利要求的示例形式公开的。
权利要求
1.一种方法,包括在用户提交消息以使得应用程序执行动作时认证提交用户(300、400);使用所述应用程序来确定所述提交用户是否被授权代表存储在所述消息中的源端点提交消息(316、412);以及在扮演存储在所述消息中的源端点用户(304、406)时调用所述应用程序中的一种方法来执行所述动作(318、416)。
2. 如权利要求1所述的方法,其特征在于,所述提交用户与所述源端点用 户不同。
3. 如权利要求l所述的方法,其特征在于,还包括确定来自所述源端点的消息对存储在所述消息中的目标端点是否有 效(314、 410)。
4. 如权利要求3所述的方法,其特征在于,所述目标端点表示所述应用程 序中的帐户。
5. 如权利要求3所述的方法,其特征在于,还包括确定所述源端点用户对 所述源端点是否有效(316、 412)。
6. 如权利要求5所述的方法,其特征在于,还包括确定所述动作对所述源 端点是否有效(316、 412)。
7. 如权利要求1所述的方法,其特征在于,还包括使用对于所述源端点用 户的许可来在所述应用程序中实施行级安全措施(318、 416)。
8. 如权利要求1所述的方法,其特征在于,还包括从所述方法接收至少一个约束(320、 418)并将所述至少一个约束与约束列表进行比较以确定是否提 交由所述方法做出的改变(322、 420)。
9. 如权利要求8所述的方法,其特征在于,所述约束列表与在所述消息中 发现的源端点相关联。
10. —种具有用于执行以下步骤的计算机可执行指令的计算机可读介质,所述步骤包括从提交用户接收消息(300、 400),所述消息包括目标端点和源端点; 确定所述消息中的源端点对所述消息中的目标端点是否适当(314、410);以及确定所述提交用户是否被允许为给定源端点提交所述消息(316、412)。
11. 如权利要求10所述的计算机可读介质,其特征在于,所述提交用 户是源端点用户。
12. 如权利要求10所述的计算机可读介质,其特征在于,所述提交用 户是中介用户,并且其中所述中介用户与中介(210、 213、 220、 223)相关联, 所述中介基于由源端点发送至所述中介的信息来生成所述消息。
13. 如权利要求12所述的计算机可读介质,其特征在于,所述中介(210、 213、 220、 223)在生成所述消息之前认证所述源端点用户(263、 260、 283、 280)。
14. 如权利要求12所述的计算机可读介质,其特征在于,还包括确定 所述源端点用户是否是针对所述源端点来配置的(316、 412)。
15. 如权利要求14所述的计算机可读介质,其特征在于,还包括作为所述源端点用户来访问应用程序(304、 406)。
16. 如权利要求15所述的计算机可读介质,其特征在于,还包括执行 所述应用程序中的一种方法以使得所述方法基于所述消息的正文中的信息来 提供至少一个约束(320、 418),并将所述至少一个约束与同所述源端点相关 联的约束列表进行比较(322、 420)。
17. —种方法,包括接收具有源端点用户、目标端点和源端点的消息(300、 400);确定所述源端点用户是否被允许访问与所述消息相关联的应用程序 (304、 406);确定所述源端点是否是针对所述目标端点来配置的(314、 410);以及确定所述源端点用户是否是针对所述源端点来配置的(316、 412)。
18. 如权利要求17所述的方法,其特征在于,还包括从不同于所述源 端点用户的提交用户接收所述消息,将所述提交用户认证为中介用户(300、 400),以及确定所述中介用户对所述源端点是否有效(316、 412)。
19. 如权利要求17所述的方法,其特征在于,还包括调用所述应用程 序中的一种方法来执行与所述消息相关联的动作(318、 416),从所述方法接 收至少一个约束(320、 418),将所述至少一个约束与同所述源端点相关联的 约束列表进行比较(322、 420),以及基于所述至少一个约束和所述约束列表 之间的比较来确定是否提交由所述方法做出的改变(322、 420)。
20. 如权利要求17所述的方法,其特征在于,还包括确定与所述消息 相关联的动作对所述源端点是否有效(316、 412)。
全文摘要
提供了控制对受保护应用程序的访问的安全模型。在该安全模型之下,在用户提交一消息以使得应用程序执行一动作时认证该提交用户。然后使用该应用程序来确定该提交用户是否被授权代表存储在该消息中的源端点提交消息。然后在扮演存储在该消息中的源端点用户时调用该应用程序中的一种方法来执行该动作。
文档编号G06F21/00GK101496022SQ200780028595
公开日2009年7月29日 申请日期2007年7月26日 优先权日2006年7月28日
发明者A·斯里尼瓦桑, J·科默斯科特, V·库马 申请人:微软公司