一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

用于多租户组织的嵌套访问权限检查的制作方法

2022-06-12 04:34:09 来源:中国专利 TAG:

用于多租户组织的嵌套访问权限检查


背景技术:

1.在大型组织中管理对软件和其他资源的访问是一个复杂的过程。用户可以加入和离开组织,当用户离开组织时需要购买附加的许可证(license)或重新指派许可证。一些组织可能被划分为多个针对其购买软件许可证的子实体。当来自组织的一个子实体的用户需要与来自组织的另一个子实体的用户共享许可的资源时,许可约束和其他访问权限可能会阻止用户能够跨组织边界进行合作。在多租户组织中处理资源访问权限的新机制和已批准机制有很多重要领域。


技术实现要素:

2.根据本发明的第一方面的示例计算设备包括处理器和计算机可读介质。计算机可读介质存储用于使处理器执行操作的可执行指令,操作包括:经由通信网络接收第一信号,该第一信号请求关于用户是否具有访问与访问管理服务的第一租户相关联的资源或通过数据处理系统使用该资源执行操作的访问权限的指示;响应于接收到所述第一信号,访问存储在存储器中并与所述访问管理服务的所述第一租户相关联的用户的第一用户账户数据,其中所述第一用户账户数据包括链接账户标识符属性,该链接账户标识符属性包括与所述访问管理服务的第二租户相关联的第一标识符和与所述第二租户的第二用户账户数据相关联的第二标识符;确定第一用户账户数据不包括允许访问所述资源的访问权限属性;响应于确定所述第一用户账户数据不具有访问所述资源的访问权限,通过以下操作执行嵌套访问权限检查:访问所述第一用户账户数据的链接账户标识符属性以确定所述用户是否与所述第二租户的第二用户账户数据相关联;在确定了所述用户与所述第二用户账户数据相关联时,访问所述访问管理服务的第二租户中的所述第二用户账户数据;以及确定所述第二用户账户数据包括指示允许所述用户访问所述资源的访问权限属性;以及响应于所述嵌套访问权限检查确定所述用户被允许访问所述资源,经由所述通信网络授予对所述资源的访问权。
3.根据本发明的第二方面,由数据处理系统执行的用于管理对由访问管理服务管理的资源的访问的示例方法包括:经由通信网络接收第一信号,第一信号请求关于用户是否具有访问与访问管理服务的第一租户相关联的资源或者通过数据处理系统使用该资源执行操作的访问权限的指示;响应于接收到所述第一信号,访问存储在存储器中并与所述访问管理服务的第一租户相关联的用户的第一用户账户数据,其中所述第一用户账户数据包括链接账户标识符属性,该链接账户标识符属性包括与所述访问管理服务的第二租户相关联的第一标识符和与所述第二租户的第二用户账户数据相关联的第二标识符;确定第一用户账户数据不包括允许访问所述资源的访问权限属性;响应于确定所述第一用户账户数据不具有访问所述资源的访问权限,通过以下操作来执行嵌套访问权限检查:访问所述第一用户账户数据的链接账户标识符属性以确定所述用户是否与所述第二租户的第二用户账户数据相关联;在确定了所述用户与所述第二用户账户数据相关联时,访问所述访问管理服务的第二租户中的第二用户账户数据;以及确定所述第二用户账户数据包括指示允许用
户访问所述资源的访问权限属性;以及响应于所述嵌套访问权限检查确定所述用户被允许访问所述资源,经由所述通信网络授予对所述资源的访问权。
4.根据本发明第三方面的示例存储器设备存储指令,当在计算设备的处理器上执行时,指令使计算设备通过以下操作来管理对由访问管理服务管理的资源的访问:经由通信网络接收第一信号,第一信号请求关于用户是否具有访问与访问管理服务的第一租户相关联的资源或者通过数据处理系统使用该资源执行操作的访问权限的指示;响应于接收到所述第一信号,访问存储在存储器中并与所述访问管理服务的第一租户相关联的用户的第一用户账户数据,其中所述第一用户账户数据包括链接账户标识符属性,该链接账户标识符属性包括与所述访问管理服务的第二租户相关联的第一标识符和与所述第二租户的第二用户账户数据相关联的第二标识符;确定第一用户账户数据不包括允许访问所述资源的访问权限属性;响应于确定所述第一用户账户数据不具有访问所述资源的访问权限,通过以下操作来执行嵌套访问权限检查:访问所述第一用户账户数据的链接账户标识符属性以确定所述用户是否与所述第二租户的第二用户账户数据相关联;在确定了所述用户与所述第二用户账户数据相关联时,访问所述访问管理服务的第二租户中的第二用户账户数据;以及确定所述第二用户账户数据包括指示允许用户访问所述资源的访问权限属性;以及响应于所述嵌套访问权限检查确定所述用户被允许访问所述资源,经由所述通信网络授予对所述资源的访问权。
5.提供本发明内容是为了以简化形式介绍一些概念,这些概念将在下面的详细描述中进一步描述。本发明内容并非旨在识别所要求保护的主题的关键特征或基本特征,也不旨在用于限制所要求保护的主题的范围。此外,要求保护的主题不限于解决在本公开的任何部分中指出的任何或所有缺点的实施方式。
附图说明
6.附图仅作为示例而非限制的方式描绘了根据本教导的一种或多种实施方式。在图中,相同的附图标记指代相同或相似的元素。此外,应当理解,附图不一定按比例绘制。
7.图1呈现了一个示例操作环境,其中可以执行用于执行嵌套许可证检查的技术;
8.图2是示出向多租户组织的用户指派软件许可证的示例的图。
9.图3是示出用户试图跨组织内的租户访问内容的示例的图;
10.图4是示出用户试图跨组织内的租户访问内容的另一个示例的图;
11.图5是示出用户试图跨组织内的租户访问内容的另一个示例的图;
12.图6是示出用户试图跨租户和跨组织访问内容的示例的图;
13.图7是访问管理服务的示例实施方式的框图;
14.图8是用于执行嵌套访问权限检查的示例过程;
15.图9是示出示例软件架构的框图,其各个部分可以与这里描述的各种硬件架构结合使用,这些硬件架构可以实现这里描述的任何特征;
16.图10是示出配置成从机器可读介质读取指令并执行本文描述的任何特征的示例机器的组件的框图;以及
17.图11是示出用户账户数据的示例的框图。
具体实施方式
18.在以下详细描述中,通过示例的方式阐述了许多具体细节,以便提供对相关教导的透彻理解。然而,应该明显的是,可以在没有这些细节的情况下实践本教导。在其他情况下,众所周知的方法、过程、组件和/或电路已经在相对较高的水平上进行了描述(而没有细节),以避免不必要地模糊本教导的方面。
19.提供了用于管理对由访问管理服务管理的多租户环境中的资源的访问的技术。访问管理服务为组织(例如,公司、大学、政府机构或其他实体)提供了用于管理用户对与访问管理服务相关联的资源的访问的手段。这些资源可以包括组织内部的资源,例如为在组织内使用而开发的内部应用、内联网站点和/或组织内的用户可以访问的其他资源。由访问管理服务管理的资源可以包括外部资源,例如基于云的软件应用和组织的用户可以被允许访问的其他外部资源。访问管理服务可以划分为访问管理服务的逻辑“租户”,每个租户都有其自己的一组与之相关联的用户账户、资源、许可证和策略。每个租户都由访问管理服务作为单独的实体进行管理,并且理想情况下,每个组织将与组织中的单个租户相关联,其中与该组织相关联的所有用户都将被包含在单个租户中。每个组织的这种单租户方法将使组织的用户之间的协作简单得多,因为组织的所有资源将被组织到访问管理服务上的单个租户中。然而,实际上许多组织具有多个部门或其他子实体,并且每个部门或其他子实体可能出于以下示例中讨论的各种原因在访问管理服务中拥有其自己的租户。这可能会使用户账户驻留于不同租户中的用户难以相互协作,因为对软件和其他资源的访问通常是在租户内拥有用户账户的受限用户。
20.解决这些问题的一种方法是为与组织相关联的多个租户中的用户建立多个账户,以允许用户访问驻留在与组织相关联的不同租户中的资源。用户可能具有在该用户主要附属的其归属租户中具有主要用户账户。例如,用户的主要用户账户可以在与用户是其雇员的组织的部门相关联的租户中建立。用户还可能拥有在组织的其他租户中建立的一个或多个“影子”账户。影子账户允许用户通过其他租户进行认证并访问其中的资源。然而,这种方法给组织管理员带来了重大的技术问题,他们必须为用户管理多个账户。大型组织可能在每个租户中包含数千名用户和不同的资源。可能需要数千个影子账户来代表与同一组织相关联的其他租户中的用户,以允许用户能够访问归属于那些其他租户的资源。
21.与维护大量影子账户相关联的认证和开销只是多租户组织中出现的技术问题。其他重要的技术问题是管理软件许可证和允许用户访问与特定租户相关联的资源(例如,软件应用)的其他此类访问权限。在访问管理服务的传统多租户配置中,软件许可证和/或访问资源的其他此类访问权限通常限于单个租户。因此,用户可能需要相同软件许可证或其他访问权限的多个副本被指派给跨多个租户的每个影子账户,以便用户能够跨多个租户使用该资源。这给这种多租户组织的管理员带来了重大的技术问题,因为跨每个租户为用户管理多个许可证和/或访问权限的重大开销。此外,为同一用户获得多个许可证的成本可能相当高,并且管理员可能需要试图从软件提供者处获得折扣或免费许可证或其他访问权限,以避免不得不为每个用户针对相同的资源为多个许可证或其他访问权限付费。本文公开的技术通过提供可以访问跨租户链接或映射在一起的用户账户的嵌套许可证检查,为多租户组织中的管理员面临的这些和其他技术问题提供技术解决方案。嵌套访问权限检查可以检查同一组织内多个租户中的每个用户账户,以确定用户是否具有访问资源的有效许可
证或与用户的用户账户中的至少一个相关联的其他访问权限。如果发现访问所请求资源的有效许可证或其他访问权限与组织的多个租户内的用户的用户账户中的至少一个相关联,则用户将被授予对所请求资源的访问权。这种方法提供了一种技术解决方案,其可以显著减少或消除为组织中的同一用户维护软件许可证的多个副本和/或其他访问权限的需要。该技术解决方案可以通过消除传统访问管理服务中需要的软件许可证的不必要的重复副本,大大简化用户账户的维护并降低运营成本。
22.图1呈现了示例操作环境100,其中可以执行用于执行嵌套访问权限检查的技术。操作环境包括访问管理服务135、第一基于云的软件即服务(saas)提供者130a、第二saas提供者130b、第一组织105和第二组织115。
23.访问管理服务135是基于云的访问管理服务,可以提供用于管理组织的用户对包括内部和外部资源的各种资源的访问的手段。外部资源可能包括组织未提供的saas应用。内部资源可能包括组织的网络和内部网上的应用和组织开发的基于云的应用。在一些实施方式中,访问管理服务135可以由microsoft azure active directory(azuread)实现,并且在其他实施方式中可以使用其他访问管理服务来实现访问管理服务135。
24.访问管理服务135还可以提供用于验证用户身份的身份管理服务。例如,第一saas提供者130a和/或第二saas提供者130b可以将认证外包给访问管理服务135。saas提供者130a和130b可以向访问管理服务135注册,并且访问管理服务135可以被配置为:在访问管理服务135为访问管理服务135的每个“租户”维护的“目录”中注册由saas提供者130a和130b提供的每个应用。该目录可以包括识别用户、用户组和与租户相关联的应用的信息。租户可以是组织或组织的子实体,如将在以下示例中进一步讨论的。访问管理服务135可以被配置为支持各种认证协议,例如但不限于oauth 2.0、openid connect、ws-federation和saml 2.0。在访问管理服务135之间传递的请求和响应的特定流将取决于在向访问管理服务135注册应用时选择的认证协议。
25.访问管理服务135还可以被配置为允许管理员定义与租户的每个用户账户相关联的一组访问权限。访问权限可以由访问管理服务135使用来确定是否允许特定用户访问由访问管理服务135管理的资源。由访问管理服务135管理的资源可以包括被许可的软件,并且访问权限可以包括允许用户访问与特定许可证相关联的软件应用的软件许可证。软件许可证可以被指派给特定的用户账户和/或可以被指派给用户组(“组许可”),这些用户组可以使用被指派给组的许可证池中的许可证来访问与许可证相关联的软件。
26.第一和第二saas提供者130a和130b提供基于云的软件服务,其中软件在线递送而不是安装在各个计算机上。第一和第二saas提供者130a和130b可以在线提供各种应用和服务。对由第一和第二saas提供者提供的软件的访问可以是基于订阅的服务,其中用户购买许可证以使用由每个saas提供者提供的一个或多个软件产品。第一和第二saas提供者130a和130b可以被配置为使用访问管理服务135来执行许可管理,其中第一和第二saas提供者130a和130b依靠访问管理服务135来验证用户是否具有有效的许可证以访问由第一和第二saas提供者130a和130b提供的软件。第一和第二saas提供者130a和130b可以提供各种类型的软件,例如文档编辑器、电子表格编辑器、照片编辑器和/或可供用作基于云的软件的其他软件产品。此类应用和服务的示例可能包括但不限于microsoft office 365和microsoft azure。
27.访问管理服务135、第一和第二saas提供者130a和130b、第一组织105和第二组织115可以通过网络125进行通信。网络125可以包括一个或多个公共和/或专用网络并且可以包括至少部分是因特网。
28.图1包括用于示出在本文公开的多租户环境中管理访问权限的概念的两个示例组织。这些示例多租户组织的具体结构和组织绝不是限制性的。
29.访问管理服务135可以被配置为支持被称为“租户”的一个或多个逻辑域。每个租户可能与一个或多个用户账户相关联,并且用户可能在多于一个租户中拥有账户。每个用户可以与访问权限相关联,所述访问权限定义用户可以在租户内部和外部访问哪些资源。如以下示例中所讨论的,与用户账户相关联的访问权限可以包括一个或多个软件许可证,其允许与用户账户相关联的用户访问特定软件应用。
30.在多部门组织中(例如,图1所示的第一组织105和第二组织115),可以将每个部门建立为访问管理服务135上的单独租户。在访问管理服务115上具有多于一个租户的组织可能来自合并和收购。已经是访问管理服务135的租户的组织获得了也已经是访问管理服务135的租户的另一个组织,导致该组织在访问管理服务135中具有多个租户。组织内的多租户配置也可能是组织的不同业务部门均单独地迁移到基于云的软件解决方案而不是迁移整个组织的结果。然后,每个业务部分成为访问管理服务135上的单独租户。如将在以下示例中讨论的,这种具有组织的多租户配置可能使跨多租户组织的租户的协作变得麻烦。
31.在该示例中,第一组织105是公司,在本文中也称为“公司a”。第一组织105包括具有访问管理服务135的第一租户110a的第一部门和具有第二租户110b的第二部门。第一租户110a包括用户a的第一用户账户111、用户b的第二用户账户112和访客账户113。第一用户账户111和第二用户账户112是成员账户,其具有在租户中创建内容并邀请其他用户就内容进行协作的能力。访客账户113对租户的资源具有更有限的访问权,并且可能不被允许创建新内容并且可能不被允许邀请其他用户就内容进行协作。
32.第一用户账户111(用户a)和第二用户账户112(用户b)可以均被指派一个或多个访问权限。访问权限可以由访问管理服务135使用来确定用户a和用户b是否被允许访问由访问管理服务135管理的资源。访问权限可以与外部和/或内部资源有关。外部资源可以包括从组织外部提供的资源,例如由第一和第二saas提供者130a和130b提供的saas应用。内部资源可以包括从组织内部提供的资源,例如在组织的内部网络或内联网上提供的应用以及由组织开发的基于云的应用。
33.访问权限可以包括允许用户访问软件应用的软件许可证。在图1所示的示例中,与用户相关联的访问权限可以包括用于第一saas提供者130a、第二saas提供者130b和/或其他软件提供者的其他软件应用的许可证。第一组织105的第二租户110b包括用户c的第一用户账户114、用户d的第二用户账户115和访客账户116。第一用户账户114(用户c)和第二用户账户115(用户d)可以均被指派一个或多个访问权限。这些访问权限可以包括软件许可证,例如由第一saas提供者130a、第二saas提供者130b和/或软件提供者提供的应用的许可证。访客账户113可以与可以被指派给第一组织105的第一租户110a的访客用户的软件许可证的池相关联,并且访客账户116可以与可以被指派给第一组织105的第二租户110b的访客用户的软件许可证的池相关联。
34.第二组织115在该示例中是被称为“公司b”的公司。第二组织115包括在访问管理
服务135上具有第一租户120a的第一部门和具有第二租户120b的第二部门。第一租户120a包括用户e的第一用户账户121、用户f的第二用户账户122和访客账户123。第二租户120b包括用户g的第一用户账户124、用户h的第二用户账户125和访客账户126。用户账户121、122、124和125是成员账户。用户账户和访客账户中的每一个可以与一个或多个访问权限相关联,该访问权限可以包括一个或多个软件许可证。
35.在该示例中示出的示例组织105和115均具有两个部门。然而,其他组织可能有两个以上的部门,并且来自第一部门的用户可能希望与来自多于一个其他部门的用户协作。这些示例和随后的示例绝不是限制性的并且旨在说明由访问管理服务135可以如何实现嵌套访问权限检查的示例。
36.图2示出了已经指派给多租户组织的用户的访问权限的示例。图2示出了来自图1的第一组织105的图,其中访问权限已被指派给每个用户账户。在该示例中,可以为用户账户指派访问权限,该访问权限允许与用户账户相关联的用户访问软件产品a、b、c和d中的一个或多个。访问权限可以包括软件产品a、b、c和d的软件许可证(如果这些软件产品需要许可证)。在图2所示的示例中,用户a的用户账户111已经被指派了对产品a的访问权限201和对产品b的访问权限202。用户b的用户账户112已经被指派了对产品a的访问权限203以及对产品b的访问权限204。用户c的用户账户114已经被指派了对产品a的访问权限211以及对产品c的访问权限212。用户d的用户账户115已经被指派了对产品a的访问权限213以及对产品d的访问权限214。以下示例将示出在以下情况时可能出现的一些挑战:与一个租户相关联的用户试图与关联于不同租户的用户进行协作,和/或用户试图访问与不同租户关联的资源或通过数据处理系统使用与不同租户关联的资源或应用执行操作。
37.图3示出了来自组织105的第二租户110b的用户c邀请来自组织的第一租户110a的用户a就项目进行协作的示例。然而,用户a和用户c在不同的部门中,每个部门都与他们自己的、访问管理服务135的相应租户相关联。这可以从认证的角度和许可的角度提出挑战。如果用户具有用户账户并且可以通过访问管理服务进行认证,则用户只能获得对与访问管理服务135的租户相关联的内容的访问。
38.为了允许用户访问组织的另一个租户(其不是用户的归属租户)中的内容,管理员可以在另一个租户中供应用户账户。在图3所示的示例中,可以在第二租户110b中为用户a创建重复的用户账户301(也称为“影子账户”)。重复的用户账户301允许用户a被认证并访问第二租户110b中的内容。重复的用户账户301可以被映射或链接到第一租户110a中用户a的用户账户111。访问管理服务可以被配置为当用户a试图访问与组织的第二租户110b相关联的租户中的内容时,允许根据与用户账户111相关联的用户简档信息来认证用户a。此解决方案克服了让组织中的用户分布在多个租户中所带来的访问挑战,但可能会给管理员在资源许可方面带来其他严重困难。
39.图11示出了表示用户a的用户账户111和影子账户301的用户账户数据的示例。用户账户数据和与租户相关联的其他资源可以由访问管理服务135存储在不同的目录结构中,这些目录结构彼此隔离,使得在一个租户中维护的资源不能在另一个租户中直接访问。用户账户数据可以包括对象标识符,该对象标识符是由访问管理服务135用于引用与账户相关联的用户账户数据的唯一标识符。用户账户数据还可以包括租户标识符,该租户标识符是访问管理服务135用来识别与用户账户数据相关联的租户的唯一标识符。用户账户数
据可以包括附加信息,例如用户可以用于认证目的并且可以被其他用户用来识别特定用户的用户名。用户名是人类可读的标识符,其可以用于指代由访问管理服务135管理的应用和/或服务内的用户。在一些实施方式中,用户名可以是用户的电子邮件地址或其他别名。用户账户数据还可以包括用户的姓名。用户账户数据还可以包括与用户相关联的一个或多个角色,例如但不限于成员、管理员或访客,并且每个角色可以具有一个或多个相关联的访问权限。用户账户数据还可以包括认证凭证,所述认证凭证可以用于针对访问租户和由租户管理的资源对用户进行认证。认证凭证可以包括用户名和口令、生物特征信息和/或可以用于向访问管理服务135识别用户的其他认证凭证。影子账户301可以不与认证凭证相关联,并且访问管理服务135可以被配置为访问在链接账户标识符属性中标识的用户账户数据,以确定当用户访问影子账户301时应该使用哪些认证凭证来认证用户。
40.用户账户数据可以包括备用安全标识符(alternate security identifier,“altsecid”)属性(在本文中也称为“链接账户标识符”),当创建影子账户时,该属性可以由访问管理服务135设置,影子账户将影子账户用户账户数据链接到由访问管理服务135管理的另一个租户中的用户账户数据。图11示出了可以如何实现影子账户301和用户账户111之间的链接302的示例。链接账户标识符包括两个信息:链接用户账户数据所位于的租户的标识符,以及租户内用户账户数据的标识符。在图11所示的示例中,影子账户301的链接账户标识符包括:第一租户110a的标识符,其为“128765554”;以及与第一租户110a中的用户账户111相关联的用户账户数据的标识符,其为“190112124575933”。访问管理服务135可以使用该信息来查找与租户110a中的影子账户301相关联的用户账户数据。
41.当在第一租户中为在第二租户中具有用户账户的用户创建影子账户时,访问管理服务135可以设置影子账户的altsecid属性以包括第二租户的租户标识符和指派给第二租户中用户的用户账户数据的唯一的用户标识符。当对影子账户执行嵌套许可证检查时,访问管理服务135可以响应于altsecid属性被设置而识别出该影子账户是影子账户。访问管理服务135可以使用租户标识符和指派给用户账户的唯一标识符来访问第二租户的主管中的用户账户数据。一旦用户账户数据已经位于第二租户中,访问管理服务135就可以确定用户账户数据是否与任何访问权限属性相关联,该访问权限属性可以包括允许用户访问的资源的许可信息。访问管理服务135可以可选地确定第一和第二租户是否是同一组织的部分。访问管理服务135可以基于存储在每个租户的相应目录中的租户属性信息来确定第一租户和第二租户是否是同一组织的部分。
42.在一些实施方式中,用户的影子账户的创建可以由访问管理服务135自动化以用于同一组织内的跨租户访问。回到图3所示的示例,用户c可以经由电子邮件或经由其他方式向用户a发送邀请,该邀请为用户a提供访问第二租户110b中的资源的链接。在一些实施方式中,响应于访问管理服务135确定被邀请的用户在用户c所归属的第二租户110b中没有用户账户,用户c可以被呈现在第二租户110b中为用户a(或被邀请与用户c协作的任何其他用户)创建用户账户的选项。用户c可以为用户a指定电子邮件地址、别名或其他标识符,访问管理服务135可以使用电子邮件地址、别名或其他标识符在与第二租户110b相关联的租户的目录中查找用户a。响应于确定用户a在组织105的第二租户110b中不具有用户账户,访问管理服务135可以搜索在访问管理服务135的与同一组织(例如,图3所示示例中的组织105)相关联的其他租户中具有用户账户的用户。如果在与同一组织相关联的另一个租户中
找到匹配的用户账户,则访问管理服务135可以被配置成为共享资源所在的租户(例如,图3中所示的示例中的第二租户110b)中的用户供应影子账户。影子账户可以链接到租户中的主要用户账户,已为其供应新账户的用户位于该租户中。因此,访问管理服务135可以响应于用户a被邀请使用与第二租户110b相关联的租户中的资源进行协作或响应于用户a接受访问资源的邀请而自动生成影子账户301。访问管理服务135创建影子账户301并配置影子账户301以经由链接302引用用户a的主要用户账户111。
43.在图2和图3所示的示例中,用户可以具有对一个或多个软件产品a、b、c和d的访问权。这些软件产品可以是租户外部的软件应用,例如由saas提供者130a和130b提供的基于云的应用或者可以是驻留在特定租户内的内部应用。该软件可能需要购买许可证才能访问该软件。在单租户组织中,这不存在问题。但是,在多租户组织中,用户可能在归属租户中拥有主要用户账户,而在与组织的其他部门或子实体相关联的其他租户中拥有一个或多个影子账户。对于必须在大型组织中跨多个租户管理用户的访问权限的管理员来说,这可能会产生重大问题。
44.尤其是软件许可证可能是有问题的,因为用户可能需要使用跨多个租户的需要软件许可证来访问该软件的资源来访问资源或通过数据处理系统执行操作。软件许可证通常被指派给一个租户中的用户账户,并且不能用于访问另一个租户中的该软件,即使两个租户都属于同一组织的部分。为了克服这个问题,管理员必须获得附加的许可证,以便与用户需要访问特定的许可的软件应用的每个租户中的用户的用户账户相关联。管理员可以以高昂的成本购买这些许可证和/或可以与软件提供者协商以获得免费或打折的软件许可证,以指派给需要跨组织的多个租户访问该软件的用户的用户账户。本文公开的嵌套访问权限检查技术可以用于避免跨组织的多个租户为单个用户获取和维护多个软件许可证的该需要。
45.在访问管理服务135的常规实施方式中,访问管理服务可以被配置为提供访问权限验证应用编程接口(api),该api为应用提供接口以确定是否允许用户访问特定应用。应用可以经由api向访问管理服务135提交请求,该请求包括识别应用和请求访问应用的用户的信息。识别应用的信息可以包括应用的唯一标识符,并且还可以包括与应用相关联的租户的标识符。用户信息可以包括用户名、用户标识符、授权凭证(authorization credential)和/或与用户相关的其他信息。访问管理服务135可以被配置为在租户中查找与请求相关联的用户账户,并确定用户账户是否与软件许可证或指示用户被允许访问软件的其他访问权限相关联。如果该租户中的用户账户没有有效的软件许可证或其他表明该用户可以访问该软件的访问权限,则该用户将被拒绝访问该软件。但是,用户可能跨多个租户拥有多个用户账户,并且其中那些用户账户之一可能具有表明允许该用户访问该软件的有效的许可证或其他访问权限。然而,因为传统的访问权限检查仅检查与特定租户中的用户账户相关联的访问权限,所以用户仍将被拒绝访问软件应用。
46.图3示出了这个概念的一个示例。用户a具有在组织105的第一租户110a中的主要用户账户111和在组织105的第二租户110b中的影子账户301。影子账户301可以链接或以其他方式映射回到主要用户账户111。用户账户111与允许用户分别访问第一租户110a中的软件应用a和b的访问权限201和201相关联。影子账户301不与访问第二租户110b中的资源的任何访问权限相关联。因此,如果用户a试图使用第二租户110b中的影子账户301来访问软
件应用a或b,则访问将被拒绝,因为影子账户301与这些软件应用中的任何一个的任何访问权限都没有关联。在没有嵌套访问权限检查的传统访问管理系统中,管理员将需要向影子账户301指派所需的访问权限和/或软件许可证,以便用户a使用影子账户301访问软件应用a或b。
47.在可能有数千个用户的组织中,管理员可能必须为跨多个租户的这数千个用户供应具有适当访问权限和/或软件许可证的用户账户。虽然可以通过为用户创建影子账户以允许他们获得对驻留在组织的其他租户中的内容的访问权来轻松克服认证问题,但许可问题仍然存在问题。需要许可证才能访问由基于云的软件提供者(例如,saas提供者130a和130b)提供的软件。通常,此类基于云的提供者提供的软件实施许可证检查,作为其授权逻辑的部分。
48.本文公开的技术提供了一种嵌套访问权限检查,它克服了与多租户组织中的传统访问权限检查相关联的问题。嵌套访问权限检查可以被配置为确定已请求访问资源的用户的用户账户是否与该资源的有效许可证或其他访问权限相关联。如果用户账户与资源的有效许可证或其他访问权限相关联,则访问管理服务135可以授予对所请求资源的访问权。授予对资源的访问权可以包括向所请求的资源发送指示:应该允许用户访问该资源。该指示可以包括访问令牌或允许用户访问所请求资源的其他指示。
49.然而,如果用户账户不与有效许可证或其他访问权限相关联,则访问管理服务135可以确定与用户相关联的至少一个其他用户账户是否与所请求资源的有效许可证或其他访问权限相关联。如果发现与该用户相关联的另一用户账户与同一组织的另一租户相关联并且具有对该资源的有效许可证和/或其他访问权限,则访问管理服务135可以授予对该资源的访问权,即使请求访问资源的用户账户与访问资源的有效许可证和/或其他访问权限没有关联。访问管理服务135可以被配置为递归地检查用户账户和/或与该用户账户相关联的任何用户账户是否具有特定资源的有效许可证和/或访问权限。
50.返回参考图3来示出这些概念,用户a的影子账户301被链接或映射到用户a的用户账户111。如果用户a试图从影子账户301访问软件应用a或b,则访问管理服务135可以首先确定影子账户301没有这些软件应用的任何一个的有效许可证和/或访问权限。然而,嵌套访问权限检查可以确定影子账户301被直接或间接映射或链接到具有资源的有效许可证或访问权限的另一个用户账户。嵌套访问权限检查可以递归地检查链接账户,直到在链接账户之一上发现有效许可证或其他访问权限或没有更多链接账户可供检查。一旦找到有效许可证或访问权限,该过程就可以停止并且访问管理服务135可以准许对所请求资源的访问。在图3所示的示例中,影子账户301链接到主要用户账户111。主要用户账户111又可以链接到一个或多个其他用户账户(未示出),该其他用户账户也可以链接到与该用户相关联的其他用户账户。
51.图8是用于执行嵌套访问权限检查以确定用户是否具有访问资源或由数据处理系统使用资源执行操作的有效许可证和/或其他访问权限的示例过程800。过程800可以由访问管理服务135执行和/或可以由被配置为确定用户是否被允许访问该应用的应用执行。
52.嵌套访问权限检查可以包括确定链接的用户账户与相同的组织相关联。嵌套访问权限检查还可以包括确定第二用户账户与属于与第一用户账户相同的组织的租户相关联。如前面示例中所讨论的,用户可能具有与组织内的多个租户相关联的账户。不是将访问资
源的软件许可证和/或其他访问权限指派给这些用户账户中的每一个,组织的管理员可以仅将与资源相关联的许可证和/或其他访问权限指派给链接账户中的仅一个。在一些实施方式中,管理员可以将许可证和/或其他访问权限指派给与用户相关联的主要账户。在其他实施方式中,管理员可以将许可证和/或访问权限指派给映射或链接到主要用户账户的用户的影子账户。这种方法可以显著减少多租户组织可能需要的软件许可证数量,这可以显著减少向用户分配软件许可证所需的开销,因为只需更新一个用户账户,并显著降低成本,因为针对组织内拥有多个用户账户的用户仅须购买一份许可证副本。
53.过程800可以包括操作810,其中经由通信网络接收信号,请求如下指示:用户是否具有访问与访问管理服务135的第一租户相关联的资源或通过数据处理系统使用该资源执行操作的访问权限。所请求的资源可以是访问管理服务135的租户的用户可访问的基于云的应用。该应用可以响应于用户访问基于云的应用的试图,将信号发送到访问管理服务135。如在前面的示例中所讨论的,应用可以经由访问权限验证api与访问管理服务135通信,该访问权限验证api可以将信号发送到访问管理服务135,请求如下指示:已试图访问该应用的用户是否具有使用该应用的有效许可证。该应用可以与访问管理服务135的第一租户相关联,并且请求访问该应用的用户将需要许可证和/或其他访问权限来访问所请求的应用。访问管理服务135可以维护与特定租户相关联的用户的用户账户以及哪些访问权限与每个用户账户相关联。
54.过程800可以包括操作820,其中响应于接收到第一信号,访问存储在存储器中并且与访问管理服务的第一租户相关联的用户的第一用户账户数据。第一用户账户数据包括链接账户标识符属性,该属性包括与访问管理服务的第二租户相关联的第一标识符和与第二租户的第二用户账户数据相关联的第二标识符。访问管理服务135可以访问在从应用接收的请求中引用的用户账户数据以确定应用的许可证是否与用户账户相关联。回过头来参考图3和图11,如果用户a试图从影子用户账户301访问软件应用a,则访问管理服务135将确定用户a不具有与影子账户301相关联的许可证和/或访问权限。相比之下,如果用户a试图从主要用户账户111访问软件应用a,则访问管理服务135可以确定用户账户111与软件应用a的有效访问权限201相关联。
55.过程800可以包括操作830,其中通过确定存储在访问管理服务的存储器中并且与访问管理服务的第一租户相关联的第一用户账户数据不包括允许访问资源的访问权限属性来确定与用户相关联的第一用户账户不具有访问资源的访问权限。响应于确定用户与所请求资源的有效许可证和/或访问权限相关联,过程800可以继续到阶段850。
56.过程800可以包括操作840,其中响应于确定与用户相关联的第一用户账户不具有访问响应的访问权限,执行嵌套访问权限检查。执行嵌套访问权限检查可以包括操作840a,其中访问第一用户账户数据的链接账户标识符属性以确定用户是否与第二租户的第二用户账户数据相关联。过程800还可以包括:操作840b,其中在确定了用户与第二用户账户数据相关联,则在访问管理服务的第二租户中访问第二用户账户数据;以及操作840c,其中确定第二用户账户数据包括指示允许用户访问资源的访问权限属性。返回参考图11中所示的用户账户111和影子账户301的示例用户账户数据,第二租户110b中用户a的影子账户301包括链接账户标识符,该链接账户标识符引用第一租户110a中用户a的主要用户账户111。此示例中的链接账户标识符包括可以用于识别链接用户账户的两个信息。链接账户标识符的
第一部分包括链接用户账户所在的租户的标识符,并且链接账户标识符的第二部分包括该租户中的用户账户数据的标识符。在图11所示的示例中,影子账户301的链接账户标识符包括第一租户110a的标识符,在本示例中其为“128765554”。影子账户301的链接账户标识符的第二部分包括与第一租户110a中的用户账户111相关联的用户账户数据的标识符,在本示例中其为“190112124575933”。访问管理服务135可以使用链接账户标识符访问与用户账户111相关联的用户账户数据,并且可以访问与用户账户数据相关联的访问权限属性以确定用户账户是否与任何访问权限相关联。在图11所示的示例中,用户a的主要用户账户111与访问权限a 201和访问权限b 202相关联。在该示例中,用户a已试图从影子账户301访问软件应用a。由访问管理服务135执行的嵌套访问权限检查已经确定用户a具有访问主要用户账户111上的软件应用a的许可证,因此访问管理服务135将授予用户a的影子账户301对组织的租户110b中的软件应用a的权限权。
57.过程800可以包括操作850,其中响应于嵌套访问权限检查确定用户与第二用户账户相关联并且第二用户账户与访问资源的访问权限相关联,经由通信网络授予对资源的访问权。访问管理服务135可以向应用发送信号:用户具有与第二用户账户相关联的有效许可证或其他访问许可。在图3所示的示例中,与用户a相关联的影子账户301经由链接302映射到与第一租户110a相关联的用户账户111。第一用户账户111与软件应用a的访问权限201相关联,其可以包括访问软件应用a的软件许可证和/或其他访问权限。访问管理服务135可以向应用发送信号,其指示应经由许可证管理api授予用户对应用的访问权。如果用户没有用户试图访问的应用的有效许可证,则可以向应用发送信号:不应授予用户对应用的访问权。接收到这种信号的应用可以向用户呈现一条消息,该消息指示用户不具有用户试图访问的应用的有效许可证。
58.图4和图5示出了针对跨租户请求执行的嵌套访问权限检查的附加示例。在图4所示的示例中,用户b邀请用户d在需要用户d有对软件产品c进行访问权的项目上进行协作。用户d被提供有组织105的第一租户110a中的影子账户401。影子账户401包括到第二租户110b中的用户d的主要用户账户115的链接402。影子账户401不与对与第一租户110a相关联的任何内部或外部资源的任何访问权限相关联。在图4所示的示例中,嵌套访问权限检查将拒绝用户d访问软件应用c。用户d的影子账户401和主要用户账户115都没有软件应用c的许可证或其他访问权限。相比之下,在图5中,用户d的用户账户115包括软件应用c的访问权限501。在该示例中,嵌套访问权限检查将授权用户d经由影子账户401访问软件应用c的访问权,因为用户d的主要用户账户115包括访问软件应用c的软件许可证和/或其他访问权限。
59.图6示出了将嵌套访问权限检查应用于跨租户请求的示例,其中两个租户是不同组织的部分。图6中所示的示例示出了与第二组织115中的用户相关联的访问权限包括访问权限。用户e的用户账户121与访问应用a的访问权限601和访问应用b的访问权限602相关联。用户f的用户账户122与访问应用a的访问权限603和访问应用d的访问权限604相关联。用户g的用户账户124与访问应用a的访问权限611和访问应用b的访问权限612相关联。与用户h相关联的用户账户125与关联于访问应用a的访问权限613的访问权限613相关联,并且与访问应用d的访问权限614相关联。
60.在该示例中,第一组织105的用户d邀请来自第二组织115的用户e使用软件应用a在项目上协作。用户d和e与不同的组织相关联。即使在组织105的第二租户110b中为用户e
创建了影子账户,嵌套访问权限检查也不将授予用户e对第二租户110b中的软件访问a的访问权。用户e具有访问用户账户121中的应用a的访问权限601,但由于访问权限与用户e已试图访问应用a的组织不同的组织相关联,因此将不允许用户e使用与第二租户110b相关联的租户中的影子账户访问应用a。
61.图7是可以用于实现访问管理服务135的访问管理服务的示例实施方式的框图。访问管理服务可以包括用户认证单元705、用户账户管理单元710、访问权限验证单元715、访问权限管理单元720和租户管理单元725。访问管理服务135的功能性可以通过存储在计算设备的存储器中的处理器可执行指令来实现。访问管理服务135的功能性可以实现为基于云的服务,该服务可以通过互联网上的网络连接或经由一个或多个公共和/或专用网络来访问。
62.租户管理单元725可以被配置为提供用户接口,该用户接口使组织的管理员能够在访问管理服务135中建立和/或管理租户。如在前面的示例中所讨论的,租户可以代表整个组织。租户可以与组织的子实体相关联,例如公司的部门,并且组织可以具有多于一个租户,每个租户代表组织的子实体。
63.用户认证单元705可以被配置为使用各种认证技术向访问管理服务135的租户认证用户,认证技术包括口令、个人识别号(pin)、一个或多个生物特征参数(例如,指纹、面部识别和/或其他生物特征参数)。用户认证单元705可以被配置为确定用户账户是映射到与另一租户相关联的用户账户的影子账户。如果影子账户映射到另一租户中的用户账户,则用户认证单元705可以被配置为利用与另一租户中的用户账户相关联的认证参数来认证用户。当认证试图访问影子账户时,用户认证单元705可以被配置为使用用户将用来访问他们的主要账户的凭证来认证用户。例如,返回参考图3,当试图使用影子账户301访问与第二租户110b相关联的应用或其他资源时,可以提示用户a提供访问凭证。用户a可以提供他们的访问凭证以用于访问与该组织的第一部门110a相关联的租户中的内容。用户认证单元705可以使用与第一部门110a的主要用户账户111相关联的凭证来认证用户,但是认证单元705可以将与第二租户110b相关联的访问令牌提供给用户请求访问的应用或其他资源。跨租户认证过程对于用户请求访问的应用或其他资源可能是完全透明的。应用或资源可能不知道用户已经使用与访问管理服务135的另一个租户中的用户账户相关联的凭证进行了认证。
64.用户账户管理单元710可以被配置为提供用户接口,访问管理服务135的租户的管理员可以通过该用户接口来建立和/或配置用户账户。用户账户管理单元710可以为管理员提供建立成员账户和访客账户的能力。具有成员账户的用户可以在租户中创建内容并邀请其他用户就内容进行协作。具有访客账户的用户对租户资源的访问权更加有限。访客账户可能不允许创建新内容,也可能不被允许邀请其他用户就内容进行协作。访问管理服务135可以被配置为限制可以为特定租户创建的访客账户的数量。在一些实施方式中,用户账户管理单元710可以限制访客账户的数量,使得访客账户与成员账户的比率不超过预定阈值。由于对访客账户施加的限制,前面示例中讨论的影子账户被创建为成员账户。用户账户管理单元710还可以被配置为暂停或删除用户账户以及移除回到另一用户账户的映射。
65.访问权限验证单元715可以被配置为响应于与成员账户相关联的用户试图访问与访问管理服务135的租户相关联的内部或外部软件应用而确定成员账户是否具有软件产品的有效许可证。访问权限验证单元715还可以被配置为执行嵌套许可证检查以确定用户账
户是否与另一个用户账户相关联,该另一个用户账户与软件产品的有效许可证相关联。访问权限验证单元715可以被配置为对映射或链接到成员用户账户的一个或多个用户账户执行嵌套许可证检查,其中一个或多个用户账户与同一组织相关联。如前面示例中所讨论的,组织可以在访问管理服务中包括一个以上的租户。嵌套许可证检查允许用户将多个租户中的用户账户被指派在这些租户之一中的特定软件应用的许可证,并在与同一组织相关联的另一个租户中工作时使用此许可证来访问此软件应用。这避免了这些租户的管理员必须在用户可以访问软件应用的每个租户中为用户获取重复的许可证。访问权限验证单元715不允许使用与来自另一个组织的用户账户相关联的许可证来访问内容。这可以防止用户通过以下方式来规避许可要求:在租户中为来自另一个组织的租户的用户创建影子账户,并将影子账户与另一个组织中的用户账户链接。
66.访问权限验证单元715还可以被配置为响应于与访客账户相关联的用户试图访问资源来确定访客许可证是否可用。如果可从组许可证池中获得组许可证,则可以将访客许可证临时分配给访客用户账户,以允许访客用户访问特定资源。
67.访问权限管理单元720可以被配置成为租户的管理员提供用户接口以配置与包括但不限于软件许可证的用户账户相关联的访问权限。访问权限管理单元720可以被配置为提供用于向租户添加新软件许可证、将软件许可证与用户账户相关联和/或向租户添加新访客许可证的用户接口。访问权限管理单元720还可以被配置为从租户和/或从用户账户中移除许可证。从用户账户中移除的许可证可以放置在与租户的成员用户账户相关联的许可证池中。访问权限管理单元720还可以被配置成为管理员提供用户接口以定义用户组并指派可以由来自用户组的用户使用的许可证池。
68.结合图1-7对图8中所示的流程图中所示的操作的示例进行描述。应当理解,图8中公开的元素和/或操作的特定顺序或层次结构是示例方法。基于设计偏好,可以理解,图8中的元素和/或操作的特定顺序或层次结构在保持在本公开的范围内的同时可以被重新布置。图8呈现了示例顺序中各种操作的元素,并不意味着限于所呈现的特定顺序或层次结构。此外,所附权利要求以示例顺序呈现各种元素和/或操作的各种元素,并且不意味着限于所呈现的特定元素、顺序或层次结构。
69.结合图1-8描述的系统、设备和技术的详细示例在此呈现以示出本公开及其益处。这样的使用示例不应被解释为对本公开的逻辑过程实施例的限制,也不应将用户接口方法与本文所描述的那些的变化视为在本公开的范围之外。应当理解,对显示或呈现项目(例如但不限于在显示设备上呈现图像、经由一个或多个扬声器呈现音频和/或振动设备)的引用包括发布导致或合理预期会导致设备或系统显示或呈现该项目的指令、命令和/或信号。在一些实施例中,图1-8中描述的各种特征在相应的模块中实现,这些模块也可以被称为和/或包括逻辑、组件、单元和/或机制。模块可以构成软件模块(例如,体现在机器可读介质上的代码)或硬件模块。
70.在一些示例中,硬件模块可以机械地、电子地或利用其任何合适的组合来实现。例如,硬件模块可以包括被配置为执行某些操作的专用电路或逻辑。例如,硬件模块可以包括专用处理器,例如现场可编程门阵列(fpga)或专用集成电路(asic)。硬件模块还可以包括由软件临时配置以执行某些操作的可编程逻辑或电路,并且可以包括用于这种配置的机器可读介质数据和/或指令的一部分。例如,硬件模块可以包括包含在可编程处理器内的软
件,该可编程处理器被配置为执行一组软件指令。应当理解,以机械方式、在专用和永久配置的电路中或在临时配置的电路(例如,由软件配置)中实现硬件模块的决定可能受成本、时间、支持和工程考虑的驱动。
71.因此,短语“硬件模块”应理解为涵盖能够执行某些操作并且可以以某种物理方式配置或布置的有形实体,即物理构造、永久配置(例如、硬连线)和/或临时配置(例如,编程)以某种方式操作或执行本文描述的某些操作的实体。如本文所用,“硬件实现的模块”指的是硬件模块。考虑到硬件模块被临时配置(例如,被编程)的示例,每个硬件模块不需要在任何一个时间实例上被配置或实例化。例如,在硬件模块包括通过软件配置成为专用处理器的可编程处理器的情况下,可编程处理器可以在不同的时间分别被配置为不同的专用处理器(例如,包括不同的硬件模块)。软件可以因此配置一个或多个处理器,例如,以在一个时间实例构成特定硬件模块并且在不同时间实例构成不同的硬件模块。使用一个或多个处理器实现的硬件模块可以称为“处理器实现的”或“计算机实现的”。
72.硬件模块可以向其他硬件模块提供信息以及从其他硬件模块接收信息。因此,所描述的硬件模块可以被认为是通信耦合的。在同时存在多个硬件模块的情况下,可以通过两个或更多个硬件模块之间或之中的信号传输(例如,通过适当的电路和总线)来实现通信。在多个硬件模块在不同时间被配置或实例化的实施例中,这些硬件模块之间的通信可以例如通过在多个硬件模块可以访问的存储器设备中存储和检索信息来实现。例如,一个硬件模块可以执行操作并将输出存储在存储器设备中,并且然后另一个硬件模块可以访问存储器设备以检索和处理存储的输出。
73.在一些示例中,方法的至少一些操作可以由一个或多个处理器或处理器实现的模块来执行。此外,一个或多个处理器还可以操作以支持“云计算”环境中的相关操作的执行或作为“软件即服务”(saas)。例如,至少一些操作可以由多台计算机(作为包括处理器的机器的示例)和/或在多台计算机之中执行,其中,这些操作可经由网络(例如,因特网)和/或经由一个或多个软件接口(例如,应用程序接口(api))访问。某些操作的执行可以分布在处理器之中,不仅驻留在单个机器内,而且部署在多台机器上。处理器或处理器实现的模块可以位于单个地理位置(例如,在家庭或办公室环境或服务器场内),或者可以跨多个地理位置分布。
74.图9是示出示例软件架构902的框图900,其各个部分可以与本文描述的各种硬件架构结合使用,这些硬件架构可以实现任何上述特征。图9是软件架构的非限制性示例,并且应当意识到,可以实现许多其他架构以促进本文描述的功能。软件架构902可以在诸如图10的机器1000之类的硬件上执行,机器1000包括处理器1010、存储器1030和输入/输出(i/o)组件1050等。代表性的硬件层904被示出并且可以代表例如图10的机器1000。代表性硬件层904包括处理单元906和相关联的可执行指令908。可执行指令908表示软件架构902的可执行指令,包括本文描述的方法、模块等的实施方式。硬件层904还包括存储器/存储装置910,其还包括可执行指令908和伴随数据。硬件层904还可以包括其他硬件模块912。由处理单元908保持的指令908可以是由存储器/存储装置910保持的指令908的部分。
75.示例软件架构902可以被概念化为层,每个层提供各种功能性。例如,软件架构902可以包括层和组件,例如操作系统(os)914、库916、框架918、应用920和呈现层944。在操作上,应用920和/或层内的其他组件可以调用对其他层的api调用924并接收对应的结果926。
所示的层本质上是代表性的,并且其他软件架构可以包括附加层或不同的层。例如,某些移动或专用操作系统可能不提供框架/中间件918。
76.os 914可以管理硬件资源并提供公共服务。os 914可以包括例如内核928、服务930和驱动程序932。内核928可以充当硬件层904和其他软件层之间的抽象层。例如,内核928可以负责存储器管理、处理器管理(例如,调度)、组件管理、网络、安全设置等。服务930可以为其他软件层提供其他公共服务。驱动程序932可以负责控制底层硬件层904或与底层硬件层904接合。例如,驱动程序932可以包括显示器驱动程序、相机驱动程序、存储器/存储装置驱动程序、外围设备驱动程序(例如,经由通用串行总线(usb))、网络和/或无线通信驱动程序、音频驱动程序等(取决于硬件和/或软件配置)。
77.库916可以提供可以由应用920和/或其他组件和/或层使用的公共基础设施。库916通常可以提供供其他软件模块使用以执行任务的功能性,而不是直接与os 914交互。库916可以包括可以提供诸如存储器分配、字符串操纵和文件操作之类的功能的系统库934(例如,c标准库)。另外,库916可以包括api库936,例如媒体库(例如,支持图像、声音和/或视频数据格式的呈现和操纵)、图形库(例如,用于在显示器上渲染2d和3d图形的opengl库)、数据库库(database library)(例如,sqlite或其他关系数据库函数)和web库(例如,可以提供web浏览功能性的webkit)。库916还可以包括各种类型的其他库938以提供用于应用920和其他软件模块的许多功能。
78.框架918(有时也称为中间件)提供可以由应用920和/或其他软件模块使用的更高级别的公共基础设施。例如,框架918可以提供各种图形用户接口(gui)功能、高级资源管理或高级位置服务。框架918可以为应用920和/或其他软件模块提供一系列多种多样的其他api。
79.应用920包括内置应用940和/或第三方应用942。内置应用940的示例可以包括但不限于联系人应用、浏览器应用、位置应用、媒体应用、消息传递应用和/或游戏应用。第三方应用942可以包括由除特定平台的供应商之外的实体开发的任何应用。应用920可以使用经由os 914、库916、框架918和呈现层944可用的功能来创建用户接口以与用户交互。
80.一些软件架构使用虚拟机,如虚拟机948所示。虚拟机948提供执行环境,其中应用/模块可以如同它们在硬件机器(例如,图10的机器1000)上执行一样执行。虚拟机948可以由主机os(例如,os 914)或管理程序托管,并且可以具有管理虚拟机948的操作和与主机操作系统的互操作的虚拟机监视器946。可能不同于虚拟机外部的软件架构902的软件架构在虚拟机948内执行,例如os 914、库952、框架954、应用956和/或呈现层958。
81.图10是示出示例机器1000的组件的框图,该示例机器1000被配置为从机器可读介质(例如,机器可读存储介质)读取指令并且执行本文描述的任何特征。示例机器1000是计算机系统的形式,在计算机系统内可以执行用于使机器1000执行这里描述的任何特征的指令1016(例如,以软件组件的形式)。因此,指令1016可以用于实施本文所述的模块或组件。指令1016使未编程和/或未配置的机器1000充当被配置为执行所描述的特征的特定机器。机器1000可以被配置为充当独立设备或者可以耦合(例如,联网)到其他机器。在联网部署中,机器1000可以在服务器-客户端网络环境中以服务器机器或客户端机器的身份操作,或者作为对等或分布式网络环境中的节点操作。机器1000可以被体现为例如服务器计算机、客户端计算机、个人计算机(pc)、平板计算机、膝上型计算机、上网本、机顶盒(stb)、游戏
和/或娱乐系统、智能手机、移动设备、可穿戴设备(例如,智能手表)和物联网(iot)设备。此外,虽然仅示出了单个机器1000,但术语“机器”包括单独或联合执行指令1016的机器的集合。
82.机器1000可以包括处理器1010、存储器1030和i/o组件1050,它们可以经由例如总线1002通信耦合。总线1002可以包括经由各种总线技术和协议耦合机器1000的各种元件的多条总线。在示例中,处理器1010(包括例如中央处理单元(cpu)、图形处理单元(gpu)、数字信号处理器(dsp)、asic或它们的合适组合)可以包括可以执行指令1016并处理数据的一个或多个处理器1012a到1012n。在一些示例中,一个或多个处理器1010可以执行由一个或多个其他处理器1010提供或标识的指令。术语“处理器”包括多核处理器,其包括可以同时执行指令的核心。虽然图10示出了多个处理器,但机器1000可以包括具有单个核心的单处理器、具有多个核心的单处理器(例如,多核处理器)、均具有单个核心的多个处理器、均具有多个核心的多个处理器,或它们的任何组合。在一些示例中,机器1000可以包括分布在多个机器之中的多个处理器。
83.存储器/存储装置1030可以包括主存储器1032、静态存储器1034或其他存储器,以及存储单元1036,两者都可由处理器1010例如经由总线1002访问。存储单元1036和存储器1032、1034存储体现本文描述的任何一个或多个功能的指令1016。存储器/存储装置1030还可以为处理器1010存储临时的、中间的和/或长期的数据。在其执行期间,指令1016还可以完全或部分地驻留在存储器1032、1034内、存储单元1036内、处理器1010中的至少之一(例如,在命令缓冲器或高速缓冲存储器内)、存储器内、至少一个i/o组件1050内,或其任何合适的组合。因此,存储器1032、1034、存储单元1036、处理器1010中的存储器和i/o组件1050中的存储器是机器可读介质的示例。
84.如本文所用,“机器可读介质”是指能够临时或永久存储使机器1000以特定方式操作的指令和数据的设备,并且可以包括但不限于随机访问存储器(ram)、只读存储器(rom)、缓冲存储器、闪存、光存储介质、磁存储介质和设备、高速缓冲存储器、网络可访问或云存储装置、其他类型的存储装置和/或其任何合适的组合。术语“机器可读介质”适用于用于存储供机器1000执行的指令(例如,指令1016)的单个介质或多个介质的组合,使得指令在由机器1000的一个或多个处理器1010执行时使机器1000执行这里描述的一个或多个特征。因此,“机器可读介质”可以指单个存储设备,以及包括多个存储装置或设备的“基于云的”存储系统或存储网络。术语“机器可读介质”不包括信号本身。
85.i/o组件1050可以包括适合于接收输入、提供输出、产生输出、传输信息、交换信息、捕获测量值等的多种硬件组件。特定机器中包括的特定i/o组件1050将取决于机器的类型和/或功能。例如,诸如移动电话之类的移动设备可能包括触摸输入设备,而无头服务器(headless server)或iot设备可能不包括这样的触摸输入设备。图10所示的i/o组件的特定示例绝不是限制性的,并且机器1000中可以包括其他类型的组件。i/o组件1050的分组仅仅是为了简化该讨论,并且该分组决不是限制性的。在各种示例中,i/o组件1050可以包括用户输出组件1052和用户输入组件1054。用户输出组件1052可以包括例如用于显示信息的显示组件(例如,液晶显示器(lcd)或投影仪)、声学组件(例如,扬声器)、触觉组件(例如,振动电机或力反馈设备)和/或其他信号发生器。用户输入组件1054可以包括例如字母数字输入组件(例如,键盘或触摸屏)、指点组件(例如,鼠标设备、触摸板或另一指点工具)和/或触
觉输入组件(例如,物理按钮或提供位置和/或触摸力或触摸手势的触摸屏),其被配置为接收各种用户输入,例如用户命令和/或选择。
86.在一些示例中,i/o组件1050可以包括生物特征组件1056、运动组件1058、环境组件1060和/或定位组件1062,以及广泛的其他物理传感器组件。生物特征组件1056可以包括例如检测身体表情(例如,面部表情、声音表达、手或身体姿势或眼睛跟踪)、测量生物信号(例如,心率或脑电波)以及识别人(例如,经由基于语音、视网膜、指纹和/或面部的识别)的组件。运动组件1058可以包括例如加速度传感器(例如,加速度计)和旋转传感器(例如,陀螺仪)。环境组件1060可以包括例如照明传感器、温度传感器、湿度传感器、压力传感器(例如,气压计)、声传感器(例如,用于检测环境噪声的麦克风)、接近传感器(例如,附近物体的红外感测)和/或可以提供与周围物理环境相对应的指示、测量值或信号的其他组件。定位组件1062可以包括例如位置传感器(例如,全球定位系统(gps)接收器)、高度传感器(例如,可以从中导出高度的气压传感器)和/或方位传感器(例如,磁力计)。
87.i/o组件1050可以包括通信组件1064,其实现了多种技术,可操作以将机器1000经由相应的通信耦合1072和1082耦合到网络1070和/或设备1080。通信组件1064可以包括一个或多个网络接口组件或其他合适的设备以与网络1070接合。通信组件1064可以包括例如适于提供有线通信、无线通信、蜂窝通信、近场通信(nfc)、蓝牙通信、wi-fi和/或经由其他方式的通信的组件。设备1080可以包括其他机器或各种外围设备(例如,经由usb耦合)。
88.在一些示例中,通信组件1064可以检测标识符或包括适于检测标识符的组件。例如,通信组件1064可以包括射频识别(rfid)标签阅读器、nfc检测器、光学传感器(例如,一维或多维条形码,或其他光学码)和/或声学检测器(例如,麦克风,其用于识别标记的音频信号)。在一些示例中,位置信息可以基于来自通信组件1064的信息来确定,例如但不限于经由互联网协议(ip)地址的地理位置,经由wi-fi、蜂窝、nfc、蓝牙的位置,或其他无线站识别和/或信号三角测量。
89.在下文中,系统和方法的进一步特征、特性和优点将通过以下项目来描述:项目1。1.一种计算设备,包括:处理器;以及计算机可读介质,其存储用于使所述处理器执行操作的可执行指令,所述操作包括:经由通信网络接收第一信号,所述第一信号请求以下指示:是否用户具有访问与访问管理服务的第一租户相关联的资源、或通过数据处理系统使用所述资源执行操作的访问权限;响应于接收到所述第一信号,访问存储在存储器中并且与所述访问管理服务的所述第一租户相关联的所述用户的第一用户账户数据,其中,所述第一用户账户数据包括链接账户标识符属性,所述链接账户标识符属性包括与所述访问管理服务的第二租户相关联的第一标识符以及与所述第二租户的第二用户账户数据相关联的第二标识符;确定第一用户账户数据不包括允许访问所述资源的访问权限属性;响应于确定所述第一用户账户数据不具有访问所述资源的访问权限,通过以下操作执行嵌套访问权限检查:访问所述第一用户账户数据的所述链接账户标识符属性以确定所述用户是否与所述第二租户的所述第二用户账户数据相关联;在确定了所述用户与所述第二用户账户数据相关联时,访问所述访问管理服务的所述第二租户中的所述第二用户账户数据;以及确定所述第二用户账户数据包括指示所述用户被允许访问所述资源的所述访问权限属性;以及响应于所述嵌套访问权限检查确定所述用户被允许访问所述资源,经由所述通信网络授予对所述资源的访问权。
90.项目2.根据项目1所述的计算设备,其中,由所述访问管理服务管理的所述资源包括应用,所述访问管理服务管理访问所述应用的访问权限,并且其中,用于接收请求是否用户的指示的所述第一信号的指令还包括被配置为使所述处理器执行操作的指令,所述操作包括:经由与所述访问管理服务相关联的访问权限验证应用编程接口(api)接收所述第一信号。
91.项目3.根据项目2所述的计算设备,其中,用于授予对所述资源的访问权的指令还包括被配置为使所述处理器执行操作的指令,所述操作包括:响应于所述用户与对于所述资源具有所述访问权限的第二用户账户相关联,经由所述访问权限验证api向所述应用发送指示应该被授予对所述应用的访问权的第二信号。
92.项目4.根据项目1所述的计算设备,还包括被配置为使所述处理器执行以下操作的指令:确定所述第一租户和所述第二租户是否是同一组织的部分;并且响应于所述嵌套访问权限检查的结果,响应于所述嵌套访问权限检查确定所述用户与所述第二用户账户相关联而授予对所述资源的访问权,所述第二用户账户与访问所述资源的所述访问权限相关联,并且所述第一租户和所述第二租户是所述同一组织的部分。
93.项目5.根据项目1所述的计算设备,还包括被配置为使所述处理器执行以下操作的指令:响应于从所述用户接收到所述请求,确定所述用户不具有与所述第一租户相关联的用户账户;确定所述用户具有与所述第二租户相关联的所述第二用户账户;以及响应于确定所述用户没有与所述第一租户相关联的用户账户并且所述用户具有与第二租户相关联的所述第二用户账户,创建与所述第一租户相关联的所述第一用户账户。
94.项目6.根据项目5所述的计算设备,还包括被配置为使所述处理器执行以下操作的指令:在所述访问管理服务中将所述第一用户账户链接到所述第二用户账户。
95.项目7.根据项目5所述的计算设备,其中,用于响应于确定所述用户不具有与所述第一租户相关联的用户账户而创建所述第一用户账户的指令还包括被配置为使所述处理器执行以下操作的指令:针对所述第一用户创建成员账户,所述成员账户不与访问关联于所述第一租户的资源的任何访问权限相关联。
96.项目8.根据项目1所述的计算设备,其中,用于执行所述嵌套访问权限检查的指令还包括用于使所述处理器执行以下操作的指令:确定所述用户的第一用户账户与由所述访问管理服务管理的多个用户账户相关联;确定所述多个用户账户中的相应用户账户是否与访问所述资源的访问权限相关联;以及响应于所述多个用户账户中的相应用户账户与所述访问权限相关联,确定所述用户与第二用户账户相关联,所述第二用户账户与访问所述资源的所述访问权限相关联。
97.项目9.一种由访问管理服务执行的方法,所述方法包括:经由通信网络接收第一信号,所述第一信号请求以下指示:是否用户具有访问与访问管理服务的第一租户相关联的资源、或者通过数据处理系统使用所述资源执行操作的访问权限;响应于接收到所述第一信号,访问存储在存储器中并且与所述访问管理服务的所述第一租户相关联的所述用户的第一用户账户数据,其中,所述第一用户账户数据包括链接账户标识符属性,所述链接账户标识符属性包括与所述访问管理服务的第二租户相关联的第一标识符以及与所述第二租户的第二用户账户数据相关联的第二标识符;确定第一用户账户数据不包括允许访问所述资源的访问权限属性;响应于确定所述第一用户账户数据不具有访问所述资源的所述访
问权限,通过以下操作来执行嵌套访问权限检查:访问所述第一用户账户数据的所述链接账户标识符属性以确定所述用户是否与所述第二租户的所述第二用户账户数据相关联;在确定了所述用户与所述第二用户账户数据相关联时,访问所述访问管理服务的所述第二租户中的所述第二用户账户数据;以及确定所述第二用户账户数据包括指示所述用户被允许访问所述资源的所述访问权限属性;以及响应于所述嵌套访问权限检查确定所述用户被允许访问所述资源,经由所述通信网络授予对所述资源的访问权。
98.项目10.根据项目9所述的方法,其中,由所述访问管理服务管理的所述资源包括应用,所述访问管理服务管理访问所述应用的访问权限,并且其中,接收包括来自所述用户的所述请求的所述第一信号包括:经由与所述访问管理服务相关联的访问权限验证应用编程接口(api)接收来自所述应用的所述第一信号。
99.项目11.根据项目10所述的方法,其中,授予对所述资源的访问权还包括:响应于所述用户与具有对所述资源的所述访问权限的第二用户账户相关联,经由所述访问权限验证api向所述应用发送指示所述用户应该被授予对所述应用的访问权的第二信号。
100.项目12.根据项目9所述的方法,还包括:确定所述第一租户和所述第二租户是否是同一组织的部分;并且响应于所述嵌套访问权限检查的结果,响应于所述嵌套访问权限检查确定所述用户与所述第二用户账户相关联而授予对所述资源的访问权,所述第二用户账户与访问所述资源的所述访问权限相关联,并且所述第一租户和所述第二租户是所述同一组织的部分。
101.项目13.根据项目12所述的方法,还包括:响应于接收到来自所述用户的所述请求,确定所述用户没有与所述第一租户相关联的账户;确定所述用户具有与关联于所述第一租户的所述第二租户相关联的用户账户;以及响应于确定所述用户没有与所述第一租户相关联的账户而创建所述第一用户账户。
102.项目14.根据项目13所述的方法,还包括:将所述第一用户账户链接到所述访问管理服务中的所述第二用户账户。
103.项目15.根据项目9所述的方法,其中,执行所述嵌套访问权限检查还包括:确定所述用户的所述第一用户账户与由所述访问管理服务管理的多个用户账户相关联;确定所述多个用户账户中的相应用户账户是否与访问所述资源的访问权限相关联;以及响应于所述多个用户账户中的相应用户账户与所述访问权限相关联,确定所述用户与第二用户账户相关联,所述第二用户账户与访问所述资源的所述访问权限相关联。
104.项目16.一种存储指令的存储器设备,所述指令当在计算设备的处理器上执行时,通过以下方式使计算设备在计算设备上提供访问管理服务:经由通信网络接收请求以下指示的第一信号:用户是否具有访问与访问管理服务的第一租户相关联的资源、或者由数据处理系统使用该资源执行操作的访问权限;响应于接收到所述第一信号,访问存储在存储器中并与所述访问管理服务的第一租户相关联的用户的第一用户账户数据,其中所述第一用户账户数据包括链接账户标识符属性,该链接账户标识符属性包括与所述访问管理服务的第二租户相关联的第一标识符和与所述第二租户的第二用户账户数据相关联的第二标识符;确定第一用户账户数据不包括允许访问所述资源的访问权限属性;响应于确定所述第一用户账户数据不具有访问所述资源的访问权限,通过以下操作来执行嵌套访问权限检查:访问所述第一用户账户数据的链接账户标识符属性以确定所述用户是否与所述第二租
户的第二用户账户数据相关联;在确定了所述用户与所述第二用户账户数据相关联时,访问所述访问管理服务的第二租户中的第二用户账户数据;以及确定所述第二用户账户数据包括指示允许用户访问所述资源的访问权限属性;以及响应于所述嵌套访问权限检查确定所述用户被允许访问所述资源,经由所述通信网络授予对所述资源的访问权。
105.项目17.根据项目16所述的存储器设备,其中,由所述访问管理服务管理的资源包括应用,所述访问管理服务管理访问该应用的访问权限,并且其中用于接收包括来自用户的请求的信号的指令还包括被配置为使计算设备执行操作的指令,所述操作包括:经由与所述访问管理服务相关联的访问权限验证应用编程接口(api)接收来自所述应用的第一信号;并且其中用于授予对资源的访问权的指令还包括被配置为使计算设备执行操作的指令,所述操作包括:响应于所述用户与具有对资源的访问权限的第二用户账户相关联,经由所述访问权限验证api向所述应用发送指示用户应该被授予对应用的访问权的第二信号。
106.项目18.根据项目16所述的存储器设备,进一步包括被配置为使所述计算设备执行以下操作的指令:确定所述第一租户和所述第二租户是否是同一组织的部分;以及响应于所述嵌套访问权限检查的结果,响应于所述嵌套访问权限检查确定用户与第二用户账户相关联而授予对所述资源的访问权限,所述第二用户账户与访问资源的访问权限相关联,并且所述第一租户和所述第二租户是同一组织的部分。
107.项目19.根据项目18所述的存储器设备,还包括被配置为使所述计算设备执行以下操作的指令:响应于接收到来自用户的请求,确定用户没有与所述第一租户相关联的账户;确定所述用户具有与关联于第一租户的第二租户相关联的用户账户;以及响应于确定用户没有与所述第一租户相关联的账户而创建所述第一用户账户。
108.项目20.根据项目19所述的存储器设备,还包括被配置为使所述计算设备执行以下操作的指令:将所述第一用户账户链接到所述访问管理服务中的所述第二用户账户。
109.尽管已经描述了各种实施例,但该描述旨在是示例性的,而不是限制性的,并且应当理解,在实施例的范围内的许多更多实施例和实施方式是可能的。尽管在附图中示出了许多可能的特征组合并且在该详细描述中进行了讨论,但是所公开的特征的许多其他组合也是可能的。除非特别限制,否则任何实施例的任何特征都可以与任何其他实施例中的任何其他特征或元素组合使用或替代任何其他特征或元素。因此,应当理解,本公开中所示和/或讨论的任何特征可以以任何合适的组合一起实施。因此,除了根据所附权利要求及其等同物之外,实施例不受限制。此外,可以在所附权利要求的范围内进行各种修改和改变。
110.虽然上文已经描述了被认为是最佳模式和/或其他示例的内容,但是应当理解,可以在其中进行各种修改并且可以以各种形式和示例来实施本文公开的主题,并且该教导可以应用于许多应用中,这里仅描述了其中的一些。所附权利要求旨在要求保护落入本教导的真实范围内的任何和所有应用、修改和变化。
111.除非另有说明,本说明书(包括所附的权利要求书)中阐述的所有测量值、值、额定值、位置、幅度、尺寸和其他规格都是近似的,而不是精确的。它们旨在具有与它们相关的功能以及它们所属领域的惯例一致的合理范围。
112.保护范围仅由现在所附的权利要求限制。当根据本说明书和随后的审查历史进行解释时,该范围旨在并且应该被解释为与权利要求中使用的语言的普通含义一致地宽,并且涵盖所有结构和功能等同物。尽管如此,没有任何权利要求旨在包含未满足专利法第
101、102或103条要求的主题,也不应以这种方式解释它们。特此否认对此类主题的任何意外包含。
113.除紧接上文所述外,已陈述或说明的任何内容均不旨在或应解释为导致将任何组件、步骤、特征、目的、利益、优势或等同物奉献给公众,无论其是否在权利要求中记载。
114.应当理解,本文所用的术语和表达具有与这些术语和表达相对于它们相应的相应调查和研究领域所赋予的普通含义,除非在本文中另外阐述了具体含义之处。诸如第一和第二等关系术语可以单独用于将一个实体或动作与另一个区分,而不必要求或暗示这些实体或动作之间的任何实际的这种关系或顺序。术语“包括”、“包含”或任何其他变体旨在涵盖非排他性的包含,使得包含元素列表的过程、方法、物品或装置不仅包括那些元素,而且可以包括未明确列出的或此类过程、方法、物品或装置固有的其他元素。在没有进一步限制的情况下,以“一”或“一个”开头的元素不排除在包含该元素的过程、方法、物品或装置中存在附加的相同元素。
115.提供本公开的摘要以允许读者快速确定技术公开的性质。提交的理解是它不会用于解释或限制权利要求的范围或含义。另外,在前面的详细描述中,可以看出,为了简化本公开的目的,在各种示例中将各种特征组合在一起。这种公开方法不应被解释为反映权利要求需要比每个权利要求明确记载的更多的特征的意图。相反,如所附权利要求所反映的,发明主题在于少于单个公开示例的所有特征。因此,所附权利要求特此并入详细说明中,每个权利要求独立作为单独要求保护的主题。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献