使用密钥访问客户端凭证集的制作方法

文档序号:23993435发布日期:2021-02-20 14:32阅读:82来源:国知局
使用密钥访问客户端凭证集的制作方法
使用密钥访问客户端凭证集
[0001]
背景
技术领域
[0002]
本公开文本总体上涉及计算机系统,并且更具体地涉及对客户端凭证集的访问以与目的地计算机系统进行认证。


背景技术:

[0003]
计算机系统(诸如,基于云的平台)经常运行与由那些系统为其用户存储的数据交互的应用。并非这些计算机系统的供应商的用户可以开发被下载和安装以在计算机系统上运行的应用。这些应用可以被设计为从计算机系统可访问的数据库取得用户的数据,然后对数据执行操作。然而,在一些情况下,用户可能希望以在这些计算机系统上运行的应用不支持的特定方式来处理他们的数据。
附图说明
[0004]
图1是展示根据一些实施方案的用于访问客户端凭证集的系统的示例元件的框图。
[0005]
图2是展示根据一些实施方案的用于将密钥映射到多个客户端凭证集的示例方法的框图。
[0006]
图3是展示根据一些实施方案的使用密钥访问客户端凭证集的计算机系统的示例元件的框图。
[0007]
图4是展示根据一些实施方案的实现认证服务的目的地计算机系统的示例元件的框图。
[0008]
图5至图7是展示根据一些实施方案的与使用密钥访问凭证相关的示例方法的流程图。
[0009]
图8至图9是展示根据一些实施方案的用于多租户数据库系统的示例环境的框图。
[0010]
图10是示出根据一些实施方案的示例计算机系统的框图。
[0011]
本公开文本包括对“一个实施方案”或“实施方案”的引用。短语“在一个实施方案中”或“在实施方案中”的出现不一定指代同一实施方案。特定特征、结构或特性可以通过与本公开文本一致的任何合适方式组合。
[0012]
在本公开文本内,不同的实体(可以不同地称为“单元”、“电路”、其他组件等)可以被描述或要求保护为“被配置成”执行一个或多个任务或操作。这种格式——被配置成[执行一个或多个任务]的[实体]——在本文中用于指代结构(即,某种物理事物,诸如电子电路)。更具体地,这种格式用于指示此结构被布置为在操作期间执行所述一个或多个任务。结构可以被称为“被配置成”执行一些任务,即使所述结构当前未被操作。“被配置成通过网络执行通信的网络接口”旨在覆盖例如具有在操作期间执行此功能的电路系统的集成电路,即使所讨论的集成电路当前未被使用(例如,电源未与其连接)。因此,被描述或叙述为

被配置成”执行一些任务的实体指代某种物理事物,诸如存储可执行以实现任务的程序指令的设备、电路、存储器等。此短语在本文中不用于指代某种无形事物。因此,“被配置成”构造在本文中不用于指代软件实体,诸如应用编程接口(api)。
[0013]
术语“被配置成”不旨在意指“可配置成”。例如,未编程的fpga将不被视为“被配置成”执行一些特定功能,尽管其可以是“可配置成”执行该功能并且可以是在编程之后“被配置成”执行该功能。
[0014]
如本文中所使用的,术语“第一”、“第二”等被用作它们所先于的名词的标签,并且不暗示任何类型的排序(例如,空间的、时间的、逻辑的等),除非明确说明。例如,在具有多个部分的一次性密码中,术语“第一”部分和“第二”部分可以用于指代所述一次性密码的任何部分。换言之,第一部分和第二部分不限于一次性口令的起初两部分。
[0015]
如本文中所使用的,术语“基于”用于描述影响确定的一个或多个因素。该术语不排除附加因素可能影响确定的可能性。即,确定可以仅基于指定因素或基于指定因素以及其他未指定因素。考虑短语“基于b确定a”。该短语指明b是用于确定a或者影响a的确定的因素。此短语不排除a的确定也可基于某一其他因素,诸如c。该短语还旨在覆盖仅基于b来确定a的实施方案。如本文中所使用的,短语“基于”因此与短语“至少部分地基于”同义。
具体实施方式
[0016]
因为在特定计算机系统上运行的应用可能无法执行特定任务,所以可能令人期望的是将数据推送到远程定位并可被称为“目的地计算机系统”的另一个计算机系统(或请求由其执行任务)。为了将数据推送到目的地计算机系统,应用可以首先必须通过提供属于用户的客户端凭证来与目的地计算机系统进行认证(代表给定用户)。在一些情况下,计算机系统可以使用由应用指定的客户端凭证来代表应用与目的地计算机系统进行认证。然而,这种应用可能没有被设计成支持跨不同的用户的多个唯一客户端凭证或没有被设计成致使计算机系统取决于使用应用的用户来向不同的目的地计算机系统发出请求。因此,可能令人期望的是使应用能够由计算机系统的不同的用户安装并且能够取决于用户来促进对多个客户端凭证的访问。
[0017]
本公开文本描述了用于使得能够访问可用于与相应的目的地计算机系统进行认证的一个或多个客户端凭证集的各种技术。在下面所描述的各种实施方案中,计算机系统使用与特定应用相关联地接收的密钥来查找针对不同的用户账户存储的客户端凭证集。具体地,在各种实施方案中,计算机系统提供基于服务器的平台,所述基于服务器的平台是多个用户可访问的,其允许由一个用户开发的应用被其他用户安装和使用。因而,在一些实施方案中,用户可以(在计算机系统处)安装特定应用,所述特定应用能够致使请求被发送至目的地计算机系统(在一些情况下,使用由计算机系统提供的功能)。当用户希望设置应用时,在各种实施方案中,计算机系统从不同的计算机系统取得配置数据。这种配置数据可以指定用于访问对于不同的用户账户存储的一个或多个客户端凭证集的密钥。在各种情况下,用户可以独立地提供从密钥到其客户端凭证集的映射。因而,在各种实施方案中,当伴随应用发生事件时,计算机系统则通过使用由用户提供的密钥和映射来访问用户的客户端凭证集。此后,在各种实施方案中,计算机系统发送与目的地计算机系统进行认证的请求,其中请求包括客户端凭证集。在各种情况下,另一用户可以安装应用并且提供从密钥到其
自己的客户端凭证集的映射。因而,当伴随该应用发生事件时,计算机系统可以使用密钥来访问该用户账户内的用户的客户端凭证集。因此,密钥可以使得能够访问一个或多个客户端凭证集。
[0018]
在一些实施方案中,特定应用可以被实现为较大框架的一部分。例如,在一个背景(context)下,特定应用可以是在允许开发工作流进程的工具内可选择的事物。(这样的工具可以允许用户开发计算机实现的方法,其中一个步骤可以是特定应用的执行。)因而,用户可以在其与计算机系统的账户下安装应用。用户然后可以将步骤添加到工作流进程,其中所述步骤对应于应用。在这样的环境中,当到达工作流进程中的所述步骤时,在各种实施方案中,计算机系统然后执行所安装的应用以执行期望的操作,诸如向目的地系统发送通知。
[0019]
作为说明这种方法的方面的许多可能的实施例中的一个实施例,考虑向需要认证的第三方系统发送消息的通信应用。例如,应用的不同实例可以由不同的用户安装以向twitter发送消息(被称为推文)。为了发送这些通信,通信应用可以首先必须在其可以发送消息之前与第三方系统进行认证。在现有方法中,为了认证,可能需要在应用的创建期间向通信应用嵌入认证凭证。换言之,在这种类型的实现方式中,为了使通信应用被多个用户安装和使用(这是许多应用的要求),将必须为每个用户构建应用的不同实例,其中每个实例包含对应用户的凭证。但是使用本文中所描述的技术允许开发者创建例如单个通信应用,所述单个通信应用可以访问安装和使用应用的许多用户中的每一个用户的适当凭证。在一些实现方式中,通信应用可以使用密钥值来查找对于在其下安装通信应用的账户的客户端凭证集。
[0020]
这些技术可以优于现有方法,因为这些技术允许创建单个多租户应用,其促进了代表一个或多个用户对目的地计算机系统(在一些情况下,多个系统)的认证请求。即,密钥(以上所解释的)可以使应用:1)能够安装在不同的用户账户中;并且2)能够在代表相应用户账户的用户向目的地计算机系统作出认证请求时访问所述账户的客户端凭证集。现在将在下文从图1开始讨论用于实现这些技术的系统。
[0021]
现在转到图1,示出了系统100的框图。系统100是经由硬件或硬件和软件例程的组合实现的一组组件。在所展示的实施方案中,系统100包括计算机系统110、外围计算机系统120和目的地计算机系统130。如进一步示出的,计算机系统110包括应用112和具有客户端凭证集115的数据对象114。同样如所示出的,外围计算机系统120包括具有密钥125的配置数据124。在一些实例中,应用112可以由外围计算机系统120维持。在一些实施方案中,系统100与所示不同地实现,例如,系统120和130可以是同一组件的一部分(即,被组合)。
[0022]
在各种实施方案中,计算机系统110实现基于服务器的平台,其允许该服务的用户开发、运行和管理应用,所述应用包括与工作流进程相关联的应用(诸如,应用112)。计算机系统110可以是例如多租户数据库系统,诸如,以下关于图8和图9详细讨论的多租户数据库系统。因而,计算机系统110可以与用户、应用、数据库和其他系统(例如,系统120和130)交互,以便存储、分析、操作和服务数据。
[0023]
在各种实施方案中,计算机系统110通过基于服务器的平台提供服务,其允许该服务的租户(即,指定的用户组,诸如属于公司或公司内的组的那些用户)创建工作流进程,该工作流进程具有被设计成控制进程流并致使与租户相关联的用户(例如,客户)发生交互的
各种步骤。这样的工作流服务的一个可能的实施例是salesforce的journey builder,其允许salesforce的平台的用户跟踪与客户的一系列交互,有可能跨诸如移动设备和网络等不同通道。
[0024]
工作流进程中的步骤可以包括例如决定在工作流进程中采取哪条路径、向用户发送文本或电子邮件、更新用户的数据库记录等。在各种实施方案中,工作流进程中的步骤由底层应用(例如,应用112)实现。返回到通信应用实施例,安装应用的用户可以将致使一个或多个电子邮件被发送给用户(或某个其他实体)的步骤(例如,诸如图标等步骤指示)添加到对应的工作流进程。当到达所述步骤时,计算机系统110可以执行或致使执行通信应用,以向用户发送通知。(注意,尽管在工作流进程的背景下描述了涉及应用112的交互,但是考虑其他背景,例如,计算机系统110可以响应于来自用户的运行应用的请求而简单地执行应用112。)
[0025]
在一些实例中,当在工作流进程中到达步骤时,可能令人期望的是与目的地计算机系统130(例如,诸如用户自己的服务器系统等端点系统或诸如提供感兴趣的服务的twitter等第三方系统)通信。因而,在各种实施方案中,应用112可以致使对目的地计算机系统130进行应用编程接口(api)调用。在一些情况下,应用112可以直接对目的地计算机系统130进行这些调用,而在其他情况下,应用112可以被设计为利用计算机系统110的功能来进行这种api调用,例如,应用112可以对在计算机系统110上运行的另一程序发出请求以进行api调用。在任一情况下,可以说计算机系统110对目的地计算机系统130进行api调用。为了对目的地计算机系统130进行这些api调用,计算机系统110可以首先必须与目的地计算机系统130进行认证。在各种实施方案中,计算机系统110使用维持在数据对象114中的客户端凭证集115来与目的地计算机系统130进行认证。具体地,计算机系统110可以将客户端凭证集115传递到由目的地计算机系统130提供的认证服务以便接收可以允许认证的api调用的认证令牌。在各种实施方案中,客户端凭证集115由在计算机系统110处在其账户下安装应用112的用户提供。
[0026]
应用112可以由计算机系统110的用户(即,租户)开发和安装,并且然后由那些用户(或其他用户)在其自己的工作流进程中使用。虽然应用112被描绘为驻留在计算机系统110处,但是在各个实施方案中,应用112驻留在不同的系统(诸如外围计算机系统120)处。在这样的实施方案中,当应用112需要被执行时,计算机系统110可以通过指示外围计算机系统120执行应用112来促使所述应用的执行。如果应用112在外围计算机系统120处执行以直接对目的地计算机系统130进行api调用,则外围计算机系统120可被称为进行这种调用。在一些实施方案中,应用112可以被划分成至少两个组件:由计算机系统110执行的程序指令和由外围计算机系统120执行的程序指令。作为实施例,计算机系统110可以执行程序指令以向用户呈现用于在工作流进程中配置步骤的用户界面,而外围计算机系统120可以执行程序指令以实现该步骤的功能。
[0027]
在一些实施方案中,在安装应用112时,计算机系统110可以从外围计算机系统120取得(例如,下载)应用112。即,应用112可以是由外围计算机系统120开发和提供以供其他实体下载的第三方应用。例如,计算机系统110可以从创建应用的公司的服务器系统下载通信应用。在一些实施方案中,应用112作为应用商店的一部分被维持在计算机系统110处,所述应用商店可以由计算机系统110提供。在各个实施方案中,一旦被安装,应用112就对用户
(安装了所述应用的用户)可用,从而包括到他们的工作流进程中。因此,用户可以将指示(例如,步骤)添加到其对应于所安装的应用112的工作流进程。
[0028]
在各种实施方案中,在安装应用112之后(或在一些情况下,在安装所述应用之前),用户可以提供密钥125与客户端凭证集115之间的映射,此映射可以被存储在数据对象114中或被存储为所述数据对象。在各种情况下,该用户可以从应用112的供应商(例如,开发者)获得密钥125并且可以从目的地计算机系统130的供应商获得客户端凭证集115。在各种实施方案中,密钥125也被单独地包括在配置数据124中,所述配置数据可以由外围计算机系统120提供给计算机系统110。具体地,当用户将(对应于应用112的)步骤添加到其工作流进程时,计算机系统110可以从外围计算机系统120取得配置数据124以用于配置该应用112。
[0029]
在各种实施方案中,当在工作流进程内到达该步骤时,计算机系统110使用密钥125在数据对象114中查找客户端凭证集115。具体地,客户端凭证集115可以与特定账户相关联地存储在计算机系统110处,并且因此系统110可以使用密钥125查找针对所述账户存储的客户端凭证集115。此后,在各种实施方案中,计算机系统110发出认证请求132以与目的地计算机系统130进行认证。请求132可以包括所取得的客户端凭证集115。计算机系统110然后可以接收指示计算机系统110是否已经认证的认证响应134。
[0030]
在各种实施方案中,外围计算机系统120提供特定应用112(和对应的配置数据124),所述特定应用可以由计算机系统110的用户安装并然后由那些用户在其工作流进程中使用。外围计算机系统120可以是例如由开发应用112以便在计算机系统110处安装/注册的第三方供应商维持的计算机系统。在一些实施方案中,外围计算机系统120单独地向计算机系统110提供应用112和配置数据124。具体地,外围计算机系统120可以将特定应用112上传到由计算机系统110提供的应用商店服务。因而,计算机系统110的用户可以通过访问应用商店服务来下载和安装特定应用112。一旦用户已经将对应于安装的应用112的步骤添加到其工作流进程,该用户就可以配置该应用112。因而,计算机系统110可以从外围计算机系统120取得配置数据124。
[0031]
在各种实施方案中,外围计算机系统120经由网页提供配置数据124。具体地,在一些实施方案中,外围计算机系统120托管(host)与应用112相关联的网络应用。因而,当计算机系统110希望取得配置数据124时,计算机系统110可以将一组超文本传输协议(http)请求发送到外围计算机系统120,并且作为响应,接收包括配置数据124的网页。在一些实施方案中,计算机系统110通过内嵌框架向用户呈现网页。用户然后可以提供可以在处理应用112时使用的附加信息(成网页的表单和其他元素)。在一些实施方案中,用户可以经由所呈现的网页提供密钥125与客户端凭证集115之间的映射。
[0032]
在各种实施方案中,目的地计算机系统130是提供期望的功能的端点(end-point)计算机系统。具体地,可能令人期望的是访问特定应用112不支持的特定数据和/或功能。例如,用户可能希望将数据从计算机系统110推送到目的地计算机系统130以用于后数据处理。在一些实施方案中,目的地计算机系统130的功能是经由受保护的api可访问的。如此,在各种实施方案中,在使用受保护的api来访问一些期望的功能之前,计算机系统110可以首先必须与目的地计算机系统130进行认证。因而,计算机系统110可以将客户端凭证集115提供给目的地计算机系统130,以便代表对应于该客户端凭证集的特定用户来与目的地计
算机系统130进行认证。在被验证之后,计算机系统110然后可以进行api调用以用于将数据发送到目的地计算机系统130或访问由系统130提供的特定功能。在一些实施方案中,计算机系统110接收对api调用的响应。所述响应可以例如指示成功(或失败)或者可以包括请求的数据。
[0033]
在系统100的一个示例实现方式中,计算机系统110提供多个用户可访问的基于服务器的平台(例如,多租户数据库系统)。在这个实施例中,基于服务器的平台允许由计算机系统110的用户安装应用112(诸如,通信应用)。通信应用可以由第三方供应商提供并且在工作流进程中使用。因而,在这个实施例中,已经安装此通信应用的用户可以将步骤添加到其对应于所述应用的工作流进程中。在这个实施例中,在用户已经添加所述步骤之后,计算机系统110从第三方供应商的系统(外围计算机系统120)取得配置数据124。此配置数据124可以指定密钥125。单独地,用户可以提供该密钥125与可用于与目的地计算机系统130进行认证的客户端凭证集115之间的映射。用户可以从第三方供应商获得该密钥125。在这个实施例中,当触发工作流进程中的所述步骤时,计算机系统110使用特定密钥125来访问由用户提供的客户端凭证集115。一旦已经访问客户端凭证集115,计算机系统110就可以与目的地计算机系统130进行认证并且然后向其提供通知。
[0034]
继续所述示例实现方式,计算机系统110可以从另一用户接收安装通信应用的请求,以使得该另一用户可以将步骤添加到其工作流进程。因而,该另一用户可以提供密钥125与其客户端凭证集115之间的映射。此映射可以在维持在该另一用户的账户下的数据对象114中指定。因此,当在该另一用户的工作流中触发所述步骤时,计算机系统110使用相同的密钥125,但是在该另一用户的账户(而不是原始用户的账户)下查看客户端凭证集115。一旦该另一用户已经访问客户端凭证集115,计算机系统110就可以与同一(或另一)目的地计算机系统130进行认证并且然后向其提供通知。
[0035]
以此方式来实现系统100可以是有利的,因为它可以允许开发应用,所述应用可以促进对安装应用的不同的用户的客户端凭证集的访问。现在将关于图2讨论密钥125与客户端凭证集115之间的映射的示例高级别视图。
[0036]
现在转到图2,示出了用于将密钥125映射到不同的客户端凭证集115的示例方法的框图。在所展示的实施方案中,方法200涉及具有多个账户210的计算机系统110。虽然多个账户210被示为驻留在计算机系统110处,但在一些实施方案中,一个或多个账户210可以被维持在另一位置处。
[0037]
如之前提及的,计算机系统110可以是能够向多个用户提供基于服务器的平台的多租户数据库系统。因而,在各种实施方案中,计算机系统110为其用户维持账户210,这允许他们访问由计算机系统110提供的功能,包括与账户210相关联地存储数据。在一些实施方案中,计算机系统110可以针对给定账户210存储定义从密钥125到客户端凭证集115的映射的数据对象114(以及在一些情况下的附加信息,诸如目的地计算机系统130的位置(例如,url))。
[0038]
在各种实施方案中,密钥125是可用于在账户210的数据对象114中查找客户端凭证集115的标识符。在一些实施方案中,密钥125是全局(globally)唯一的值,并且由相关联的应用112的开发者定义。密钥125可以是例如随机字符(例如,数字、字母等)的字符串值。在各种实施方案中,在以下两个不同点处将密钥125提供给计算机系统110:1)在用户提供
密钥125到客户端凭证集115的映射时;和2)在计算机系统110取得配置数据124时。在一些实例中,计算机系统110可以仅在其接收配置数据124时接收密钥125。在此类实例中,计算机系统110然后可以请求用户提供客户端凭证集115,其中计算机系统110将密钥125映射到该客户端凭证集115。密钥125可以用于访问多个客户端凭证集115。具体地,当数据对象114与账户210相关联地被存储时,密钥125和账户210的组合可以允许计算机系统110访问与特定用户相关联的特定客户端凭证集115。
[0039]
在各种实施方案中,客户端凭证集115是使诸如计算机系统110等系统能够(代表那些凭证的用户)与目的地计算机系统130进行认证的一组值。客户端凭证集115可以是例如客户端标识符和客户端机密(诸如在oauth中所使用的),或者可以是用户名和密码。在各种实施方案中,客户端凭证集115由应用112的用户提供。例如,用户可以在提供密钥125与客户端凭证集115之间的映射时提供客户端凭证集115。
[0040]
在各种实施方案中,有效服务统一资源定位符(url)可以与客户端凭证集115一起存储并使用密钥125来访问。有效服务url可以标识可以使用(经由认证响应134接收的)令牌来访问资源的一组位置。例如,如果指定www.twitter.com/*的有效服务url模式,则在令牌响应有效负载中接收到的令牌可以被发送到所有的twitter端点(例如,www.twitter.com/api),但是不被发送到其他端点(例如,www.fakeendpoint.com/api)。
[0041]
如旨在图2中示出的,密钥125可以用于访问存储在帐户210内的客户端凭证集115。因而,在计算机系统110尝试查找客户端凭证集115时,计算机系统110可以访问存储在相关账户210中的数据对象114,该相关账户可以与包括对应于应用112的步骤的工作流进程相关联。即,在各种实施方案中,当在工作流进程中到达对应于应用112的步骤时,计算机系统110然后可以(使用密钥125)访问存储在与该工作流进程相关联的特定账户210中的客户端凭证集115。因此,应用112可以由多个用户安装并在多个工作流进程中使用,同时仍能够促进对与各个工作流进程和用户相关的特定客户端凭证集115的访问。现在将关于图3讨论计算机系统110的实施例。
[0042]
现在转到图3,示出了计算机系统110的框图。在所展示的实施方案中,计算机系统110包括账户210和工作流引擎310。如所示出的,工作流引擎310包括密钥125和两个工作流进程315。如进一步示出的,每个账户210包括具有客户端凭证集115的对应数据对象114。在一些实施方案中,计算机系统110与所示不同地实现。例如,计算机系统110可以不包括工作流引擎310,而是可以在不存在工作流进程的情况下(即,在与工作流进程不同的背景下)执行应用112和使用密钥125。
[0043]
在各种实施方案中,工作流引擎310使得能够管理工作流进程315,包括那些进程的创建和执行。因而,用户可以通过添加指示将在该进程的执行期间进行的动作的各种步骤来创建工作流进程315。虽然工作流引擎310可以提供(或支持)一组默认的步骤(例如,由计算机系统110的供应商提供的步骤),但是在各种实施方案中,引擎310允许用户添加由该用户或另一实体设计的定制步骤。为了添加定制步骤,用户可以注册/安装应用112,如之前提到的。在一些情况下,作为特定应用112的安装的一部分,用户可以提供特定应用112维持在何处的指示(例如,端点url),例如外围计算机系统120的url。因而,计算机系统110可以取得该特定应用112并使其可用于与请求它的用户相关联的工作流进程315中。一旦特定应用112可用于工作流进程315中,用户就可以将对应于该应用的步骤添加到其工作流进程。
在一些实施方案中,通过将步骤拖放到显示在由计算机系统110提供的图形用户界面内的画布上来将这种步骤添加到工作流进程315。
[0044]
在一些实施方案中,工作流进程315与通过各种步骤控制移动的事件驱动的触发器相关联。例如,购买产品的用户可以发起工作流进程315,其中第一步骤是向用户的邮箱发送关于购买的电子邮件。因而,可以响应于事件117来触发对应于应用112的步骤的发生。作为实施例,响应于自从执行前一步骤以来过去一个月,工作流引擎310可以发起下一步骤,所述下一步骤可以是对应于应用112的步骤。响应于这样的步骤被触发,在各种实施方案中,计算机系统110执行或致使执行(例如,指示外围计算机系统120执行)对应的应用112。
[0045]
在各种实施方案中,应用112的执行致使计算机系统110使用密钥125取得特定客户端凭证集115。如之前提及的,工作流进程315可以与账户210相关联。如所示出的,例如,工作流进程315a与账户210a相关联,并且工作流进程315b与账户210b相关联。因此,与工作流进程315a相关联的应用112的执行可以致使计算机系统110访问客户端凭证集115a,因为所述客户端凭证集被存储用于账户210a。在一些实施方案中,除了访问客户端凭证集115之外,计算机系统110进一步访问针对适当账户210存储的标识目的地计算机系统130的信息(例如url)。此类信息可以被存储在数据对象114中。此后,在各种实施方案中,计算机系统110发出与目的地计算机系统130进行认证的请求132并且接收指示计算机系统110是否与目的地计算机系统130认证的响应134。响应134可以包括认证令牌。因而,计算机系统110可以对目的地计算机系统130进行进一步的api调用(其包括所接收的认证令牌)以用于执行某些操作。现在将关于图4讨论目的地计算机系统130的实施例。
[0046]
现在转到图4,示出了目的地计算机系统130的框图。在所展示的实施方案中,目的地计算机系统130包括认证服务410和api 420。在一些实施方案中,目的地计算机系统130与所示不同地实现,例如,目的地计算机系统130可以与外围计算机系统120组合。如前所述,目的地计算机系统130可以认证计算机系统110,并且然后允许计算机系统110进行认证的api调用。
[0047]
在各种实施方案中,认证服务410促进计算机系统(诸如计算机系统110)的认证。为了认证计算机系统110,服务410可以通过将请求132中供应的客户端凭证集115与由目的地计算机系统130存储的有效客户端凭证集115进行比较来验证所述请求中供应的客户端凭证集。在各种实施方案中,如果在请求132中供应的客户端凭证集115有效,则服务410在响应134中返回认证令牌。令牌可以允许计算机系统110对目的地计算机系统130进行认证的api调用。如果客户端凭证集115无效,则服务410可以返回计算机系统110未被认证的指示。
[0048]
在各种实施方案中,应用编程接口420允许计算机系统110与由目的地计算机系统130提供的功能交互。作为实施例,计算机系统可以经由api 420将数据提供到目的地计算机系统130或发出命令。为了利用api 420,计算机系统110可以必须通过服务410获得认证令牌。一旦计算机系统110具有认证令牌,计算机系统110就可以通过api 420进行api调用422。在一些实施方案中,目的地计算机系统130向计算机系统110提供api响应424。api响应424可以包括例如请求的数据或已执行特定操作的指示。
[0049]
现在转到图5,示出了方法500的流程图。方法500是由诸如计算机系统110等计算
机系统执行以与目的地计算机系统(例如,目的地计算机系统130)进行认证的方法的一个实施方案。方法500可以包括附加步骤,诸如,计算机系统提供对数据储存器的用户访问以用于安装应用(例如,应用112)。
[0050]
方法500开始于步骤510,其中计算机系统提供多个用户可访问的基于服务器的平台。此基于服务器的平台可以允许由所述多个用户中的一个用户开发的应用被所述多个用户中的其他用户利用。
[0051]
在步骤520中,在接收使应用可用于所述多个用户中的一个特定用户的指示之后,计算机系统从不同的计算机系统(例如,外围计算机系统120)取得配置数据(例如,配置数据124)。此配置数据可以指定对密钥值(例如,密钥125)的引用。在一些实施方案中,使应用可用包括在特定用户的账户(例如,账户210)下安装或注册应用并且允许特定用户将对应于应用的步骤添加到工作流进程(例如,进程315)。
[0052]
在步骤530中,计算机系统维持包括对于特定用户的客户端凭证集(例如,客户端凭证集115)的数据对象(例如,数据对象114)。
[0053]
在步骤540中,响应于与应用相关联的事件(例如,事件117)的发生,计算机系统使用密钥值和特定用户的指示(例如,账户标识符)从数据对象访问特定用户的客户端凭证集。在一些实施方案中,特定用户的指示对应于在其下维持数据对象的账户。因此,访问客户端凭证集可以包括访问对于该账户的数据对象。事件的发生可以包括在工作流进程中到达步骤。
[0054]
在步骤550中,计算机系统向目的地计算机系统发送与目的地计算机系统进行认证的请求(例如,请求132)。请求可以包括客户端凭证集。在各种实施方案中,在发送与目的地计算机系统进行认证的请求之前,计算机系统从特定用户接收定义从密钥值到客户端凭证集的映射的信息。数据对象可以指定映射。在一些实施方案中,在发送与目的地计算机系统进行认证的请求之前,计算机系统从特定用户接收指定对应于目的地计算机系统的统一资源定位符(url)的信息。因而,可以基于指定的url发送进行认证的请求。
[0055]
在步骤560中,计算机系统从目的地计算机系统接收指示计算机系统是否已经与目的地计算机系统认证的响应(例如,响应134)。
[0056]
在一些实施方案中,计算机系统接收使应用对所述多个用户中的一个不同的用户可用的指示。计算机系统可以维持包括对于所述不同的用户的客户端凭证集(例如,集115b)的第二数据对象(例如,数据对象114b)。响应于与应用和所述不同的用户相关联的事件的发生(例如,事件与安装在所述不同的用户的账户210下的应用相关联地发生),在一些实施方案中,计算机系统使用密钥值和所述不同的用户的指示从第二数据对象访问所述不同的用户的客户端凭证集。计算机系统然后可以向不同的(或同一)目的地计算机系统发送请求以与目的地计算机系统进行认证。请求可以包括所述不同的用户的客户端凭证集。
[0057]
现在转到图6,示出了方法600的流程图。方法600是由计算机系统(诸如计算机系统110)执行的用于访问客户端凭证集(例如,客户端凭证集115)以与目的地计算机系统(例如,目的地计算机系统130)进行认证的方法的一个实施方案。方法500可以包括附加步骤,诸如,计算机系统提供对数据储存器的用户访问以用于安装应用(例如,应用112)。
[0058]
方法600开始于步骤610,其中计算机系统提供多个用户可访问的基于服务器的平台。基于服务器的平台可以允许由所述多个用户中的一个用户开发的应用(例如,应用112)
被所述多个用户中的其他用户安装。
[0059]
在步骤620中,计算机系统从特定用户接收在基于服务器的平台处与特定用户的账户(例如,账户210)相关联地安装应用的请求。
[0060]
在步骤630中,在为特定用户安装应用之后,计算机系统取得指定对密钥值(例如,密钥125)的引用的配置数据(例如,配置数据124)。在为特定用户安装应用之后,在各种实施方案中,计算机系统从特定用户接收修改工作流进程(例如,工作流进程315)以添加对应于应用的步骤的请求。响应于接收配置所添加的步骤的请求,计算机系统可以取得配置数据。
[0061]
在步骤640中,计算机系统与特定用户的账户相关联地维持数据对象(例如,数据对象114)。在各种实施方案中,数据对象包括对于特定用户的客户端凭证集(例如,客户端凭证集115)。
[0062]
在步骤650中,响应于与应用相关联的事件的发生,计算机系统从数据对象访问特定用户的客户端凭证集。可以使用密钥值和特定用户的指示来访问特定用户的客户端凭证集。特定用户的指示可以是对应于在其下维持数据对象的账户的账户标识符。在各种实施方案中,响应于与应用相关联的事件的发生,计算机系统执行所安装的应用以执行发起步骤660和670的一组操作。
[0063]
在步骤660中,计算机系统向目的地计算机系统发送与目的地计算机系统进行认证的请求(例如,请求132)。在各种实施方案中,请求包括客户端凭证集。在各种实施方案中,计算机系统从特定用户接收指定统一资源定位符(url)、客户端凭证集以及密钥值与客户端凭证集之间的映射的认证信息。url可以对应于在目的地计算机系统处实现的认证服务(例如,服务410),并且数据对象可以对应于映射。
[0064]
在步骤670中,计算机系统从目的地计算机系统接收指示计算机系统是否已经与目的地计算机系统认证的响应(例如,响应134)。在各种实施方案中,来自目的地计算机系统的响应包括认证令牌。如此,计算机系统可以代表应用与目的地计算机系统进行认证的应用编程接口(api)调用。这种api调用可以包括认证令牌。
[0065]
在各种实施方案中,计算机系统从不同的用户接收在基于服务器的平台处与所述不同的用户的账户(例如,账户210b)相关联地安装应用的请求。在一些实施方案中,计算机系统与所述不同的用户的账户相关联地维持第二数据对象(例如,数据对象114b)。此数据对象可以包括对于所述不同的用户的客户端凭证集。如此,响应于与应用相关联的事件的发生,计算机系统可以使用密钥值和所述不同的用户的指示从第二数据对象访问所述不同的用户的客户端凭证集。在一些实施方案中,计算机系统向目的地计算机系统发送与目的地计算机系统进行认证的请求。请求可以包括所述不同的用户的客户端凭证集。
[0066]
现在转到图7,示出了方法700的流程图。方法700是由计算机系统(诸如计算机系统110)执行的用于访问客户端凭证集(例如,客户端凭证集115)以与目的地计算机系统(例如,目的地计算机系统130)进行认证的方法的一个实施方案。在一些实施方案中,方法700包括附加步骤,诸如,计算机系统提供对数据储存器的用户访问以用于安装应用(例如,应用112)。
[0067]
方法700开始于步骤710,其中计算机系统从特定用户接收在计算机系统处注册应用的请求。在各种实施方案中,应用的注册可以致使应用可用于工作流进程(例如,工作流
进程315)。在各种实施方案中,应用的执行致使计算机系统向目的地计算机系统发送一个或多个请求(例如,请求132)。在一些实施方案中,计算机系统包括多租户数据库系统,所述多租户数据库系统将多个用户的数据存储在相应的租户专用存储区域中。
[0068]
在步骤720中,计算机系统从特定用户接收将步骤添加到特定工作流进程的请求。这个步骤可以对应于经注册的应用,并且到达特定工作流进程中的步骤可以导致经注册的应用被执行。
[0069]
在步骤730中,在将步骤添加到特定工作流进程之后,计算机系统从不同的计算机系统(例如,外围计算机系统120)取得配置数据(例如,配置数据124)。在各种实施方案中,配置数据指定密钥值(例如,密钥125)。密钥值可以是由应用的开发者指定的全局唯一标识符。
[0070]
在步骤740中,计算机系统从特定用户接收指示密钥值到可用于与目的地计算机系统进行认证的客户端凭证集的映射的映射信息。在一些实施方案中,映射信息与特定用户的指示相关联地存储,例如,存储在数据对象114中或作为所述数据对象存储。客户端凭证集可以包括客户端标识符和客户端机密。在一些实施方案中,客户端凭证集被存储在对应于特定用户的租户专用存储区域中。
[0071]
在步骤750中,在到达所述步骤并且使用密钥值和特定用户的指示(例如,在特定用户的账户下)访问客户端凭证集之后,计算机系统向目的地计算机系统发送与目的地计算机系统进行认证的请求(例如,请求132)。在各种实施方案中,请求包括客户端凭证集。在一些实施方案中,计算机系统从特定用户接收指示目的地计算机系统的地址的信息。因而,与目的地计算机系统进行认证的请求可以被发送到该地址。
[0072]
在步骤760中,计算机系统从目的地计算机系统接收指示计算机系统是否已经与目的地计算机系统认证的响应(例如,响应134)。
[0073]
在各种实施方案中,计算机系统从不同的用户接收将对应于应用的步骤添加到不同的工作流进程的请求。在一些实施方案中,计算机系统从所述不同的用户接收指示密钥值到可用于与目的地计算机系统进行认证的不同的客户端凭证集的映射的映射信息。来自所述不同的用户的映射信息可以与所述不同的用户的指示相关联地存储。在各种实施方案中,在工作流进程中到达所述步骤之后,计算机系统使用密钥值和所述不同的用户的指示来访问所述不同的客户端凭证集。在一些实施方案中,计算机系统向目的地计算机系统发送与目的地计算机系统进行认证的请求,其中所述请求包括所述不同的客户端凭证集。在一些实施方案中,计算机系统从目的地计算机系统接收指示计算机系统是否已经与目的地计算机系统认证的响应。
[0074]
示例性多租户数据库系统
[0075]
图8展示了可以实现多租户数据库和高速缓存系统的示例性环境。注意,所公开的多租户系统被包括用于说明性目的,但不旨在限制本公开文本的范围。在其他实施方案中,可以在非多租户环境(诸如各种客户端/服务器环境、云计算环境、集群计算机等)中实现类似的技术。如图8中(并且在图9中更详细地)展示的,一个或多个用户系统812可以经由网络814与多租户数据库系统(mts)816交互,所述多租户数据库系统可以是计算机系统110。那些用户系统812的用户可以是不同能力的用户,并且特定用户系统812的能力可以由当前用户来确定。例如,当销售人员正在使用特定用户系统812来与mts816交互时,该用户系统812
可以具有分配给该销售人员的能力。然而,当管理员正在使用相同的用户系统812来与mts 816交互时,其具有分配给该管理员的能力。因而,在各种实施方案中,由实现系统816的系统(例如,计算机系统110)维持的信息(例如,数据对象114)可以仅由具有适当能力(例如,权限)的用户修改。
[0076]
网络814可以是lan(局域网)、wan(广域网)、无线网络、点对点网络、星形网络、令牌环网络、枢纽网络(hub network)或任何其他适当的配置。通常被称为具有大写“i”的“互联网(internet)”的网络的全球互联网络将在本文中的许多实施例中使用并且是tcp/ip(传输控制协议和互联网协议)网络的一个实施例。然而,应当理解,本发明可以利用的网络任何其他类型的网络。
[0077]
用户系统812可以使用tcp/ip与mts 816通信,并且在更高的网络级别上使用其他常见的互联网协议进行通信,诸如http、ftp、afs、wap等。作为实施例,在使用http的情况下,用户系统812可以包括用于在mts 816处从http服务器发送和接收http消息的通常被称为“浏览器”的http客户端。这样的服务器可以被实现为mts 816与网络814之间的唯一网络接口,但是也可以使用其他技术或者替代地使用其他技术。在一些实现方式中,mts 816与网络814之间的接口包括负载共享功能(诸如循环(round-robin)http请求分配器),以平衡负载并在多个服务器上均匀地分配传入的http请求。优选地,所述多个服务器中的每个服务器至少对于正在访问服务器的用户能够访问mts的数据。
[0078]
在一些实施方案中,图8中示出的系统实现基于网络的客户关系管理(crm)系统。例如,在一些实施方案中,mts 816包括应用服务器,所述应用服务器能够实现和执行crm软件应用以及向用户系统812和从所述用户系统提供相关的数据、代码、表单、网页和其他信息,并且将相关的数据、对象和网页内容存储到数据库系统以及从所述数据库系统取得相关数据、对象和网页内容。在多租户系统的实施方案中,租户数据优选地被布置成使得一个租户的数据保持与其他租户的数据分开,使得一个租户不能访问另一租户的数据,除非这种数据被明确地共享。
[0079]
图8中示出了mts 816的元件的一种布置,包括网络接口820、用于租户数据的存储822、用于mts 816和可能的多个租户可访问的系统数据的存储824、用于实现mts 816的各种功能的程序代码826、以及用于执行mts系统进程和租户特定进程(诸如运行作为应用服务的一部分的应用)的进程空间828。
[0080]
图8中示出的系统中的若干元件可以包括常规的、众所周知的元件,在此不需要详细解释。例如,每个用户系统812可以是台式个人计算机、工作站、膝上型计算机、pda、蜂窝电话、或任何wap使能的设备、或能够直接或间接地接口连接到互联网或其他网络连接的任何其他计算设备。用户系统812可以执行http客户端,例如,浏览程序(诸如microsoft的internet explorer
tm
浏览器、netscape的navigator
tm
浏览器、opera的浏览器、或在蜂窝电话的情况下wap使能的浏览器)、pda或其他无线设备等,从而允许用户系统812的用户(例如,crm系统的订户)通过网络814从mts 816访问、处理和查看对其可用的信息和页面。每个用户系统812可以包括一个或多个用户接口设备,诸如键盘、鼠标、触摸屏、笔等,以用于结合由mts 816或其他系统或服务器提供的页面、表单和其他信息在显示监视器屏幕、lcd显示器等上与由浏览器提供的图形用户界面(gui)交互。如上所述,本发明适于与互联网一起使用,互联网是指网络的特定全球互联网络。然而,应当理解,可以使用其他网络代替互联
网,诸如,内联网、外联网、虚拟专用网络(vpn)、基于非tcp/ip的网络、任何lan或wan等。
[0081]
在一些实施方案中,每个用户系统812及其组件是操作者使用包括在一个或多个处理元件上可执行的计算机代码的诸如浏览器等应用可配置的。类似地,在一些实施方案中,mts 816(以及mts的附加实例,其中存在多于一个mts)及其组件是操作者使用包括在一个或多个处理元件上可执行的计算机代码的一个或多个应用可配置的。因此,本文中描述的各种操作可以通过执行存储在非暂时性计算机可读介质上并且由一个或多个处理元件执行的程序指令来执行。程序指令可以被存储在诸如硬盘等非易失性介质上,或者可以被存储在众所周知的任何其他易失性或非易失性存储器介质或设备(诸如rom或ram)中,或者被提供在能够启动程序代码的任何介质(诸如光盘(cd)介质、数字通用盘(dvd)介质、软盘等)上。此外,整个程序代码或其部分可以例如通过互联网从软件源或从其他服务器(如众所周知的)传输和下载,或者使用任何通信介质和协议(例如,tcp/ip、http、https、以太网等)(如众所周知的)通过任何其他的常规网络连接(如众所周知的)(例如,外联网、vpn、lan等)进行传输。还将理解,用于实现本发明的方面的计算机代码可以用可在服务器或服务器系统上执行的任何编程语言(诸如例如,用c、c+、html、java、javascript或任何其他脚本语言(诸如vbscript))来实现。
[0082]
根据一个实施方案,每个mts 816被配置为向用户系统812提供网页、表单、应用、数据和/或媒体内容,以支持由作为mts 816的租户的用户系统812的访问。如此,在这个实施方案中,mts 816提供安全机制以保持每个租户的数据分离,除非数据被共享。如果使用多于一个mts,则它们可以彼此非常接近地定位(例如,在位于单个建筑物或园区中的服务器场中),或者它们可以分布在彼此远离的位置(例如,位于城市a中的一个或多个服务器和位于城市b中的一个或多个服务器)。如本文中所使用的,mts可以包括本地地或跨一个或多个地理位置分布的一个或多个逻辑和/或物理连接的服务器。另外,术语“服务器”包括计算机系统(包括处理硬件和一个或多个进程空间)以及相关联的存储系统和数据库应用,如本领域中众所周知的。还应当理解,“服务器系统”和“服务器”在本文中通常可互换地使用。类似地,本文中描述的数据库可以被实现为单个数据库、分布式数据库、分布式数据库的集合、具有冗余的在线或离线备份或其他冗余的数据库等,并且可以包括分布式数据库或存储网络和相关联的处理智能。
[0083]
图9更详细地展示了mts 816和各种互连的示例性实施方式。在这个实施例中,网络接口被实现为一个或多个http应用服务器900。还示出了系统进程空间902,其包括单独的租户进程空间904、系统数据库906、一个或多个租户数据库908和租户管理进程空间910。租户数据库908可以跨应用服务器900共享并且可以被划分成单独的租户存储区域912,这些租户存储区域可以是物理布置或逻辑布置。在每个租户存储区域912内,可以为每个用户分配用户存储914。尽管未示出,由mts 816的租户提供的一个或多个应用112可以在应用服务器900上运行。
[0084]
在所展示的实施方案中,每个应用服务器900还包括高速缓存918的至少一部分。在一些实施方案中,利用网络应用的用户系统812可以请求将数据存储在高速缓存918中(例如,使用“放置”操作)并且稍后取得数据(例如,使用“获取”操作)而不是重新生成数据。在一些实施方案中,能力限制可被分配给不同的用户/租户/分区等,并且高速缓存的数据可以被逐出以便保持在所分配的能力之下。在一些实施方案中,特定租户的高速缓存的数
据相对于其他租户保持私有。进一步地,特定租户内的高速缓存的数据的可见范围可以是可配置的。
[0085]
在一些实施方案中,高速缓存918跨多个应用服务器900被分割。在一些实施方案中,跨多个实例的分割可以允许高速缓存918中的数据适合系统存储器空间,这可相对于将高速缓存918的数据存储在例如盘存储中改善响应时间。如本文中所使用的,“存储器内高速缓存”是将数据存储在系统存储器空间中(这通常意味着数据可以被存储在ram中)而不是要求分页以便存储(例如,如传统盘存储通常要求的)的高速缓存。在使用单个高速缓存来为多个不同的租户实体提供单独的虚拟高速缓存的意义上,高速缓存918也可以是“多租户”高速缓存。不同的租户可以使用同一数据结构来存储数据,或者不同的租户可以在高速缓存中具有不同的数据结构。在各种实施方案中,多租户高速缓存实施租户之间的数据安全,使得来自一个租户的数据对其他租户不可用。因此,如本文中所使用的,在多租户高速缓存的背景下的术语“租户”是指实体,针对所述实体,高速缓存条目被分开地维持,从而使得不同的租户不能访问彼此的数据。在一些实施方案中,租户可以授权其他租户经由高速缓存来访问其数据,而在其他实施方案中,给定租户的数据可以仅由该租户经由多租户高速缓存来访问(尽管该租户可随后共享从高速缓存取得到的数据,如该租户所期望的)。
[0086]
还应当理解,每个应用服务器900可以经由不同的网络连接可通信地耦合到数据库系统,例如,系统数据库906和一个或多个租户数据库908。例如,一个服务器900
i
可以经由网络814耦合,另一服务器900
n-1
可以经由直接网络链路耦合,并且另一服务器900
n
可以通过又一不同的网络连接耦合。传输控制协议和互联网协议(tcp/ip)是用于在服务器900与数据库系统之间通信的优选协议,然而,对于本领域技术人员显而易见的是,取决于所使用的网络互连,可以使用其他传输协议来优化系统。
[0087]
在优选方面中,每个应用服务器900能够处理对于任何用户/组织的请求。因为令人期望的是能够出于任何原因在任何时间从服务器池添加和移除应用服务器,所以优选地不存在用户和/或组织对特定应用服务器900的服务器亲和。因此,在一个实施方案中,实现负载平衡功能(例如,f5 big-ip负载平衡器)的接口系统(未示出)可通信地耦合在服务器900与用户系统812之间以将请求分配至服务器900。在一个方面中,负载平衡器使用最小连接算法来将用户请求路由至服务器900。也可以使用负载平衡算法的其他实施例,诸如循环和观测响应时间。例如,在某些方面中,来自同一用户的三个连续请求可能命中三个不同的服务器,并且来自不同的用户的三个请求可能命中同一服务器。以此方式,mts 816是多租户的,其中mts 816跨不同的用户和组织处理不同的对象和数据的存储。
[0088]
作为存储的实施例,一个租户可以是采用销售队伍(sales force)的公司,其中每个销售人员使用mts 816来管理他们的销售进程。因此,用户可以维持联系人数据、领导数据、客户随访数据、性能数据、目标和进度数据,全部适用于该用户的个人销售进程(例如,在租户数据库908中)。在一些mts实施方案中,由于所有这种数据和访问、查看、修改、报告、传送、计算等应用可以由仅具有网络接入的用户系统维持和访问,所以用户可以管理他或她的来自许多不同的用户系统中的任何用户系统的销售努力(sales efforts)和周期。例如,如果销售人员正在访问客户并且客户在其会客室内具有互联网接入,则销售人员可以在等待客户到达会客室的同时获得关于该客户的关键更新。
[0089]
尽管每个用户的销售数据可以与其他用户的销售数据分开,而不管每个用户的雇
主如何,但一些数据可以是由多个或所有销售共享或可访问的组织范围的数据,对于作为租户的给定组织是三个。因此,可以存在由mts 816管理的在租户级别分配的一些数据结构,而其他数据结构在用户级别管理。因为mts可以支持多个租户(包括可能的竞争者),所以mts应具有保持数据、应用和应用使用分离的安全协议。同样,因为许多租户将选择访问mts而不是维持其自己的系统,所以安全、冗余、可用时间和备份是更关键的功能并且需要在mts中实现。
[0090]
除了用户特定数据和租户特定数据之外,mts 816还可以维持可由多个租户使用的系统级别数据。这样的系统级别数据可以包括在租户之间可共享的行业报告、新闻、帖子等。
[0091]
在某些方面中,客户端系统812与应用服务器900通信以请求和更新来自mts 816的系统级别数据和租户级别数据,这可能需要对数据库系统906和/或数据库系统908的一个或多个查询。因而,服务器900可以运行由mts 816的供应商供应的应用112以执行一个或多个特定操作。在一些实施方案中,mts 816自动生成被设计为访问期望信息的一个或多个sql语句(sql查询)。
[0092]
每个数据库总体上可以被视为包含适合预定义类别的数据的一组逻辑表。每个表通常包含逻辑地布置在物理列中的一个或多个数据类别。表的每一行通常包含由列定义的每一类别的数据的实例。例如,crm数据库可以包括描述具有诸如姓名、地址、电话号码、传真号码等基本联系人信息的列的客户的表。另一个表可以描述采购订单,包括诸如客户、产品、销售价格、日期等信息的列。
[0093]
现在转到图10,描绘了可以实现计算机系统110、外围计算机系统120和/或目的地计算机系统130的示例性计算机系统1000的框图。计算机系统1000包括经由互连1060(例如,系统总线)耦合到系统存储器1020和一个或多个i/o接口1040的处理器子系统1080。一个或多个i/o接口1040耦合到一个或多个i/o设备1050。计算机系统1000可以是各种类型的设备中的任一种,包括但不限于服务器系统、个人计算机系统、台式计算机、膝上型或笔记本计算机、大型计算机系统、平板计算机、手持式计算机、工作站、网络计算机、诸如移动电话、音乐播放器或个人数据助理(pda)等消费者设备。尽管为方便起见在图10中示出了单个计算机系统1000,但是系统1000还可以被实现为一起操作的两个或更多个计算机系统。
[0094]
处理器子系统1080可以包括一个或多个处理器或处理单元。在计算机系统1000的各种实施方案中,处理器子系统1080的多个实例可以耦合到互连1060。在各种实施方案中,处理器子系统1080(或1080内的每个处理器单元)可以包含高速缓存或其他形式的板上存储器。
[0095]
系统存储器1020可用于存储可由处理器子系统1080执行以致使系统1000执行本文中描述的各种操作的程序指令。系统存储器1020可以使用不同的物理存储器介质来实现,诸如,硬盘存储、软盘存储、可移除盘存储、闪存、随机存取存储器(ram-sram、edo ram、sdram、ddr sdram、rambus ram等)、只读存储器(prom、eeprom等)等。计算机系统1000中的存储器不限于诸如存储器1020等主存储。而是,计算机系统1000还可以包括其他形式的存储,诸如,处理器子系统1080中的高速缓存存储器和i/o设备1050上的辅助存储(例如,硬盘驱动器、存储阵列等)。在一些实施方案中,这些其他形式的存储还可存储可以由处理器子系统1080执行的程序指令。以上描述的应用112可以被包括在系统存储器1020内。
[0096]
根据各种实施方案,i/o接口1040可以是被配置成耦合到其他设备并且与其他设备通信的各种类型的接口中的任何接口。在一个实施方案中,i/o接口1040是从前侧到一个或多个后侧总线的桥式芯片(例如,南桥(southbridge))。i/o接口1040可以经由一个或多个对应的总线或其他接口耦合到一个或多个i/o设备1050。i/o设备1050的实施例包括存储设备(硬盘驱动器、光盘驱动器、可移除闪存驱动器、存储阵列、san或其相关联的控制器)、网络接口设备(例如,到局域网或广域网)或其他设备(例如,图形、用户接口设备等)。在一个实施方案中,计算机系统1000经由网络接口设备1050耦合到网络(例如,被配置成通过wifi、蓝牙、以太网等进行通信)。
[0097]
本申请的主题的实现包括但不限于以下实施例1至20。
[0098]
1.一种方法,其包括:
[0099]
由计算机系统提供多个用户可访问的基于服务器的平台,其中,所述基于服务器的平台允许由所述多个用户中的一个用户开发的应用被所述多个用户中的其他用户利用;
[0100]
在接收使应用对所述多个用户中的一个特定用户可用的指示之后,所述计算机系统从不同的计算机系统取得配置数据,其中,所述配置数据指定对密钥值的引用;
[0101]
由所述计算机系统维持包括对于所述特定用户的客户端凭证集的数据对象;
[0102]
响应于与所述应用相关联的事件的发生,所述计算机系统:
[0103]
从所述数据对象访问所述特定用户的客户端凭证集,其中,使用所述密钥值和所述特定用户的指示来访问所述特定用户的客户端凭证集;
[0104]
向目的地计算机系统发送与所述目的地计算机系统进行认证的请求,其中,所述请求包括所述客户端凭证集;并且
[0105]
从所述目的地计算机系统接收指示所述计算机系统是否已经与所述目的地计算机系统认证的响应。
[0106]
2.根据实施例1所述的方法,其进一步包括:
[0107]
由所述计算机系统接收使所述应用对所述多个用户中的一个不同的用户可用的指示;
[0108]
由所述计算机系统维持包括对于所述不同的用户的客户端凭证集的第二数据对象;
[0109]
响应于与所述应用和所述不同的用户相关联的事件的发生,所述计算机系统:
[0110]
从所述第二数据对象访问所述不同的用户的客户端凭证集,其中,使用所述密钥值和所述不同的用户的指示来访问所述不同用户的客户端凭证集;并且
[0111]
向不同的目的地计算机系统发送与所述不同的目的地计算机系统进行认证的请求,其中,所述请求包括所述不同的用户的客户端凭证集。
[0112]
3.根据实施例1所述的方法,其进一步包括:
[0113]
在发送与所述目的地计算机系统进行认证的所述请求之前,所述计算机系统从所述特定用户接收定义从所述密钥值到所述客户端凭证集的映射的信息。
[0114]
4.根据实施例1所述的方法,其中,所述特定用户的指示对应于在其下维持所述数据对象的账户,并且其中,访问所述客户端凭证集包括访问对于所述账户的所述数据对象。
[0115]
5.根据实施例1所述的方法,其中,使所述应用可用包括在所述特定用户的账户下安装所述应用并且允许所述特定用户将对应于所述应用的步骤添加到工作流进程。
[0116]
6.根据实施例5所述的方法,其中,所述事件的发生包括在所述工作流进程中到达所述步骤。
[0117]
7.根据实施例1所述的方法,其进一步包括:
[0118]
在发送与所述目的地计算机系统进行认证的所述请求之前,所述计算机系统从所述特定用户接收指定对应于所述目的地计算机系统的统一资源定位符(url)的信息,其中,基于所指定的url来发送进行认证的所述请求。
[0119]
8.一种非暂时性计算机可读介质,其具有存储在其上的程序指令,所述程序指令能够致使计算机系统执行包括以下各项的操作:
[0120]
提供多个用户可访问的基于服务器的平台,其中,所述基于服务器的平台允许由所述多个用户中的一个用户开发的应用被所述多个用户中的其他用户安装;
[0121]
从特定用户接收在所述基于服务器的平台处与所述特定用户的账户相关联地安装所述应用的请求;
[0122]
在为所述特定用户安装所述应用之后,取得指定对密钥值的引用的配置数据;
[0123]
与所述特定用户的账户相关联地维持数据对象,其中,所述数据对象包括对于所述特定用户的客户端凭证集;并且
[0124]
响应于与所述应用相关联的事件的发生:
[0125]
从所述数据对象访问所述特定用户的客户端凭证集,其中,使用所述密钥值和所述特定用户的指示来访问所述特定用户的客户端凭证集;
[0126]
向目的地计算机系统发送与所述目的地计算机系统进行认证的请求,其中,所述请求包括所述客户端凭证集;并且
[0127]
从所述目的地计算机系统接收指示所述计算机系统是否已经与所述目的地计算机系统认证的响应。
[0128]
9.根据实施例8所述的非暂时性计算机可读介质,其中,所述操作进一步包括:
[0129]
从不同的用户接收在所述基于服务器的平台处与所述不同的用户的账户相关联地安装所述应用的请求;
[0130]
与所述不同用户的账户相关联地维持第二数据对象,其中,所述数据对象包括对于所述不同的用户的客户端凭证集;并且
[0131]
响应于与所述应用相关联的事件的发生:
[0132]
从所述第二数据对象访问所述不同的用户的客户端凭证集,其中,使用所述密钥值和所述不同的用户的指示来访问所述不同用户的客户端凭证集;并且
[0133]
向所述目的地计算机系统发送与所述目的地计算机系统进行认证的请求,其中,所述请求包括所述不同的用户的客户端凭证集。
[0134]
10.根据实施例8所述的非暂时性计算机可读介质,其中,所述操作进一步包括:
[0135]
在为所述特定用户安装所述应用之后,接收来自所述特定用户的修改工作流进程以添加对应于所述应用的步骤的请求;并且
[0136]
响应于接收配置所添加的步骤的请求,执行所述配置数据的取得。
[0137]
11.根据实施例8所述的非暂时性计算机可读介质,其中,所述操作进一步包括:
[0138]
从所述特定用户接收指定统一资源定位符(url)、所述客户端凭证集以及所述密钥值与所述客户端凭证集之间的映射的认证信息,其中,所述url对应于在所述目的地计算
机系统处实现的认证服务,并且所述数据对象对应于所述映射。
[0139]
12.根据实施例8所述的非暂时性计算机可读介质,其中,来自所述目的地计算机系统的响应包括认证令牌,并且其中,所述操作进一步包括:
[0140]
代表所述应用向所述目的地计算机系统进行认证的应用编程接口(api)调用,其中,所述api调用包括所述认证令牌。
[0141]
13.根据实施例8所述的非暂时性计算机可读介质,其中,响应于与所述应用相关联的所述事件的发生,执行所安装的应用以执行发起所述访问、所述发送和所述接收的一组操作。
[0142]
14.根据实施例8所述的非暂时性计算机可读介质,其中,所述特定用户的指示是对应于在其下维持所述数据对象的所述账户的账户标识符。
[0143]
15.一种方法,其包括:
[0144]
由计算机系统从特定用户接收在所述计算机系统处注册应用的请求,其中,所述应用的注册致使所述应用可用于在工作流进程中使用,并且其中,所述应用的执行致使所述计算机系统向目的地计算机系统发送一个或多个请求;
[0145]
由所述计算机系统从所述特定用户接收将步骤添加到特定工作流进程的请求,其中,所述步骤对应于经注册的应用,并且其中,在所述特定工作流进程内到达所述步骤导致经注册的应用被执行;
[0146]
在将所述步骤添加到所述特定工作流进程之后,所述计算机系统从不同的计算机系统取得配置数据,其中,所述配置数据指定密钥值;
[0147]
由所述计算机系统从所述特定用户接收指示所述密钥值到可用于与所述目的地计算机系统进行认证的客户端凭证集的映射的映射信息,其中,所述映射信息与所述特定用户的指示相关联地存储;并且
[0148]
在到达所述步骤并且使用所述密钥值和所述特定用户的指示访问所述客户端凭证集之后,所述计算机系统:
[0149]
向所述目的地计算机系统发送与所述目的地计算机系统进行认证的请求,其中,所述请求包括所述客户端凭证集;并且
[0150]
从所述目的地计算机系统接收指示所述计算机系统是否已经与所述目的地计算机系统认证的响应。
[0151]
16.根据实施例15所述的方法,其进一步包括:
[0152]
由所述计算机系统从不同的用户接收将对应于所述应用的步骤添加到不同的工作流进程的请求;
[0153]
由所述计算机系统从所述不同的用户接收指示所述密钥值到可用于与所述目的地计算机系统进行认证的不同的客户端凭证集的映射的映射信息,其中,来自所述不同的用户的所述映射信息与所述不同的用户的指示相关联地存储;并且
[0154]
在到达添加到所述不同的工作流进程的所述步骤之后,所述计算机系统:
[0155]
使用所述密钥值和所述不同的用户的指示来访问所述不同的客户端凭证集;
[0156]
向所述目的地计算机系统发送与所述目的地计算机系统进行认证的请求,其中,所述请求包括所述不同的客户端凭证集;并且
[0157]
从所述目的地计算机系统接收指示所述计算机系统是否已经与所述目的地计算
机系统认证的响应。
[0158]
17.根据实施例15所述的方法,其进一步包括:
[0159]
由所述计算机系统从所述特定用户接收指示所述目的地计算机系统的地址的信息,其中,与所述目的地计算机系统进行认证的所述请求被发送到所述地址。
[0160]
18.根据实施例15所述的方法,其中,所述客户端凭证集包括客户端标识符和客户端机密。
[0161]
19.根据实施例15所述的方法,其中,所述密钥值是由所述应用的开发者指定的全局唯一标识符。
[0162]
20.根据实施例15所述的方法,其中,所述计算机系统包括多租户数据库系统,所述多租户数据库系统将所述多个用户的数据存储在相应的租户专用存储区域中,其中,所述客户端凭证集被存储在对应于所述特定用户的租户专用存储区域中。
[0163]
***
[0164]
尽管以上已经描述了特定实施例,但这些实施例不旨在限制本公开文本的范围,即使在关于特定特征仅描述单个实施例的情况下。除非另有说明,否则本公开文本中所提供的特征的示例旨在是说明性的而不是限制性的。以上描述旨在覆盖此类替代、修改和等效物,如受益于本公开文本的本领域技术人员将清楚的。
[0165]
本公开文本的范围包括本文中所公开的任何特征或特征的组合(明确地或隐含地)、或其任何概括,无论其是否缓解了本文中所解决的任何或所有问题。因而,在本申请(或要求其优先权的申请)的审查过程中可以针对特征的任何此类组合制定新的权利要求。具体地,参考所附权利要求,来自从属权利要求的特征可以与独立权利要求的特征组合,并且来自各个独立权利要求的特征可以以任何适当的方式组合,而不仅仅是在所附权利要求中列举的特定组合中。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1