托管移动设备的单点登录的制作方法

文档序号:13823494阅读:203来源:国知局
托管移动设备的单点登录的制作方法

adamrykowski,ashishjain,dalerobertolds,emilyhongxu,kabirbarday,kyleaustin,sridharababukommireddy,jonathanbrannon,camilolotero

相关申请的交叉引用

本申请要求于2015年6月15日提交的标题为“托管移动设备的单点登录(singlesign-onformanagedmobiledevices)”的美国非临时专利申请号14/739,975的权益,其全部内容通过引用并入本文。

本申请涉及于2015年6月15日提交的代理人案号为w205.02、标题为“托管移动设备的单点登录(singlesign-onformanagedmobiledevices)”、序列号为14/739,980的美国专利申请,于2015年6月15日提交的代理人案号为w204.01、标题为“非托管移动设备的单点登录(singlesign-onforunmanagedmobiledevices)”、序列号为14,739,983的美国专利申请,以及于2015年6月15日提交的代理人案号为w204.02、标题为“非托管移动设备的单点登录(singlesign-onforunmanagedmobiledevices)”、序列号为14/739,972的美国专利申请。



背景技术:

用户可能拥有许多不同的账户用于众多应用程序和服务。应用程序和服务的示例可以包括社交网络服务、文件共享服务、电子邮件服务、语音通信服务、办公生产力服务、任务跟踪服务等等。用户可能必须建立对应的用户名和密码以对每个账户进行认证。在涉及众多账户的情况下,这成为困难且不便的做法。因此,用户可以设置较短或易于记忆的弱密码、在多个账户之间共享密码、使用第三方密码管理器或采用可能被认为不安全的其他做法。

身份联合(identityfederation)的概念提出了这个问题的解决方案。在身份联合下,用户使用联合身份提供者建立账户。为此,用户指定单组安全凭证(credential)。然后联合账户链接到由其他组织提供的大量应用程序和服务。当用户试图访问链接到联合账户的应用程序和服务时,用户可以简单地提供联合账户的单个用户名、密码或其他凭证进行认证。以类似的方式,组织(诸如企业)可以使用目录服务(诸如microsoft公司的activedirectory),以便为该组织的多个应用程序和服务中的每一个提供单一登录。

尽管身份联合具有可用性,最终用户体验可能仍然是不理想的。即使假设用户能够为多个应用程序和服务使用单个联合账户,用户也可能被要求分别输入联合账户凭证。例如,假设用户登录由社交网络服务提供者所提供的社交网络应用程序,社交网络服务提供者也是联合身份提供者。随后,用户可能想要使用链接至该联合身份提供者的文件共享应用程序。然后用户可能必须提供先前为社交网络应用程序输入的相同的用户名和密码。为每个应用程序和服务重复输入这些安全凭证可能会使用户沮丧。

附图说明

参照以下附图可以更好地理解本公开的许多方面。附图中的组件不一定按比例绘制,而是着重于清楚地示出本公开的原理。此外,在附图中,贯穿若干视图的相同的附图标记表示相应的部分。

图1是示出本公开的示例性场景的图。

图2是根据本公开的各种示例的网络化环境的图。

图3是示出根据本公开的各种示例的示例性组件交互的顺序图。

图4-8是示出根据本公开的各种示例的功能的示例的流程图。

具体实施方式

本公开涉及为移动设备的用户提供单点登录体验。凭借单点登录体验,用户可以输入或获取账户的单组安全凭证,并且一旦进行认证,用户能够访问链接至该账户的多个不同的应用程序和服务。当用户被要求提供知识、财产或生物认证因素的组合时,也可以采用多因素认证。如本文所考虑的,术语“单点登录”可以包括由于会话超时、不活动时段、可疑活动或可能导致用户认证被怀疑的其他事件而需要用户重新输入安全凭证的情境。

在网页浏览器的情况下,可以通过cookie启用单点登录体验。响应于用户使用联合身份提供者登录,可以将cookie存储在用户的设备上,其包含指示认证的令牌(token)。当用户稍后通过联合身份提供者访问支持认证的另一网络站点时,显示cookie并可以交换令牌以获得站点特定的令牌。因此,用户不必再次登录以访问网络站点。

但是,来自浏览器环境的单点登录设计范例在移动应用程序的环境中不起作用。尽管移动应用程序可以调用网页(web)视图,但作为移动应用程序内被调用的网页视图的一部分的cookie不能在其他移动应用程序中或通过浏览器访问。即使假定用户通过第一移动应用程序登录到联合账户,表示成功认证的cookie和应用程序令牌对第二移动应用程序不是可用的,因为它们可能具有不同的网页视图。如将要描述的,本公开的各种实现方式促进了移动应用程序内和体现该限制的其他应用程序内的单点登录。此外,根据本公开,为了实现单点登录,可以无需提出为每个应用程序使用特定软件开发工具包(softwaredevelopmentkit,sdk)的需求。

具体地,在本公开中,公开了使能用于被托管的移动设备的单点登录体验的示例。参照图1,示出的是示例性单点登录场景100的示意图。在101,用户启动管理应用程序,其可以管理用户的移动设备上的应用程序。管理应用程序可以是本地移动应用程序或从浏览器访问的基于网页的管理应用程序。管理应用程序呈现被配置为接收设备管理服务的登录信息的用户界面。具体地,在该示例中,用户界面包括被配置为接收用户名和密码的表格。其他安全凭证或认证因素可以在其他示例中引出。用户输入信息后,用户选择登录输入组件。

在输入正确的登录信息之后,用户通过认证,然后可以更新用户界面以在102向用户指示登录成功。随后,用户可以启动或访问移动设备上的其他托管应用程序,诸如在103的社交网络应用程序、在104的电子邮件应用程序或在105的文件共享应用程序。这些应用程序可以与外部服务进行通信。由于用户已通过设备管理应用程序进行了认证,因此这些应用程序指示该用户已经通过认证。因此,用户不必分别为多个应用程序提供登录信息,并且用户能够使用通过各个应用程序访问的服务。

参照图2,示出的是根据各种示例的网络化环境200。网络化环境200包括客户端设备203、设备管理服务204、身份提供者206以及多个服务提供者209a...209n,其彼此之间可以通过网络212处于数据通信。网络212包括,例如因特网、一个或更多个内联网、外联网、广域网(wideareanetwork,wan)、局域网(localareanetwork,lan)、有线网络、无线网络、其他合适的网络或者两个或更多个这种网络的任何组合。例如,网络可以包括卫星网络、电缆网络、以太网和其他类型的网络。

设备管理服务204、身份提供者206和服务提供者209可以包括,例如服务器计算机或提供计算能力的任何其他系统。可选地,设备管理服务204、身份提供者206和服务提供者209可以使用多个计算设备,例如,其可以被排布在一个或更多个服务器库(bank)、计算机库或其他布置中。计算设备可以位于单个装置中,或者可以分布在多个不同的地理位置。例如,设备管理服务204、身份提供者206和服务提供者209可以包括多个计算设备,其共同形成主机计算资源、网格计算资源或任何其他分布式计算布置。在一些情况下,设备管理服务204、身份提供者206和服务提供者209可以作为弹性计算资源的至少一部分进行操作,其中处理、网络、存储或其他计算相关资源的所分配容量可以随着时间而变化。设备管理服务204、身份提供者206和服务提供者209还可以包括或被操作为一个或更多个虚拟计算机实例。通常,可以按照特定的安全协议来操作设备管理服务204、身份提供者206和服务提供者209,以使它们被认为是受信的计算环境。

设备管理服务204可以管理或监督多个客户端设备203的操作。在一些示例中,企业(诸如一个或更多个公司或其他组织)可以操作设备管理服务204以监督或管理雇员、承包商或企业环境中的其他用户的客户端设备203的操作。在这个意义上,客户端设备203可以包括由设备管理服务204管理的托管设备。

为了促进客户端设备203的管理,设备管理服务204可以建立与客户端设备203的安全通信信道(例如,移动设备管理信道或mdm信道)。设备管理服务204可以通过创建与客户端设备203的安全通信链路来建立安全通信信道。可以使用由客户端设备203执行的操作系统所提供的mdm应用程序编程接口(applicationprogramminginterface,api)来建立安全通信链路。在一些示例中,可以使用由关联于客户端设备203的操作系统生态系统所提供的推送通知框架或通知服务来建立安全通信信道,其允许设备管理服务204与客户端设备203之间的通过网络212的通信,且其使用数字证书来加密。

可以通过由操作系统提供的api,将客户端设备203注册为设备管理服务204的托管设备。注册过程可以包括用户的凭证的认证。在由设备管理服务204认证用户的凭证之后,客户端设备203使用操作系统的mdmapi可以将客户端设备203注册为托管设备,从而可以通过安全通信信道安全地执行各种管理功能。

管理功能的示例可以包括擦除来自客户端设备203的某些数据的命令、安装某些应用程序或应用程序更新的命令、锁定客户端设备203或激活显示器锁定特征的命令、远程执行客户端设备203恢复出厂设置的命令或其他管理功能。另外,可以通过安全通信信道将数据安全地传输至客户端设备203或由客户端设备203执行的应用程序。

另外,客户端设备203的操作系统还可以提供创建与安装在客户端设备203上的特定应用程序相关联的访问受限存储的能力。访问受限存储可以通过安全通信信道与安装在客户端设备203上的多个应用程序相关联。在某些场景下,可以向由公共证书签名的应用程序提供对彼此的访问受限存储的访问,而没有被证书签名的应用程序不能访问其他应用程序的访问受限存储。另外,设备管理服务204可以通过安全通信信道将数据传输至客户端设备203,其可以被存储在访问受限存储中,使得它可由某些应用程序访问而对安装在客户端设备203上的其他应用程序是不可访问的。

可以使用与客户端设备203、设备管理服务204或与客户端设备203相关联的企业相关联的数字证书来加密或保护安全通信信道。在一个场景中,设备管理服务204可以获得安全证书(诸如安全套接层(securesocketslayer,ssl)证书),其对与客户端设备203相关联的特定企业是唯一的。在一个示例中,与企业相关联的管理员可以使用管理员控制台或上传证书可以采用的其他功能来向设备管理服务204提供证书。证书还可以由证书管理中心(authority)签署,其在一些情况下可以由设备管理服务204来操作。设备管理服务204可以使用该证书来加密或保护安全通信信道,使得安全通信信道是通过网络212的安全通信链路,通过该安全通信链路可以将数据发送到客户端设备203。

另外,设备管理服务204可以指定通过安全通信信道发送的数据只能被安装在客户端设备203上的某些应用程序访问。可以访问通过安全通信信道发送的数据的应用程序也可以受限于如何在客户端设备203上操纵、查看或处理某些数据。例如,安装在客户端设备203上的应用程序可被编码以限制用户从客户端设备203捕获、共享或移除数据的能力,该数据是通过安全通信信道被接收的。

设备管理服务204还可以促进确保由设备管理服务204管理的客户端设备203按照各种合规性规则(compliancerule)进行操作。在一个场景中,设备管理服务204可以发出管理命令,其指示客户端设备203针对合规性规则采取特定的动作。例如,如果客户端设备203被指定为丢失或被盗,则设备管理服务204可以发出命令,指示客户端设备203擦除先前通过安全通信信道或其他通信链接发送到客户端设备203并以其他方式存储在客户端设备203上的数据和应用程序。设备管理服务204还可以从第三方计算环境(诸如应用程序、安全码、认证令牌或其他数据)获取数据。作为另一示例,如果设备管理服务204确定客户端设备203违反了关于安装在客户端设备203上的未授权的修改或未授权的应用程序的合规性规则,则设备管理服务204可以发出命令,指示客户端设备203擦除存储在客户端设备203上的数据和应用程序。作为再一示例,设备管理服务204还可以发出命令,指示客户端设备203激活客户端设备203的显示锁定,其要求用户输入个人标识号码(personalidentificationnumber,pin),以使用客户端设备203。

存储在管理数据存储213中且对设备管理服务204可用的数据包括例如认证数据、合规性规则、设备数据以及潜在的其他数据。认证数据可以包括用于验证由用户呈现的用于认证的一个或更多个安全凭证的数据。为此,为了加密安全通信信道和/或用于其他功能,可以存储安全证书并使其对已经被认证的客户端设备203可用。

在企业环境中,合规性规则包括一个或更多个规则,当违反规则时可以使设备管理服务204发出管理命令。合规性规则可包括未授权的硬件功能、软件功能或可能对企业数据或企业应用程序的使用构成威胁的应用程序的列表。如上所述,如果客户端设备203不符合一个或更多个合规性规则,则管理命令可以被传输至客户端设备203,指示客户端设备203执行由合规性规则指定的一个或更多个动作。可选地,合规性规则也可以驻留在客户端设备203上,其可以自我增强合规性规则。管理数据存储213还可以包括用户账户数据。用户账户数据可以包括认证用户账户可以采用的信息,诸如用户凭证。用户账户数据还可以包括数据,诸如电子邮件、联系人、日历数据、文档、文件或与用户账户相关联的其他数据。

设备数据可以表示存储在与客户端设备203相关联的管理数据存储213中的数据,所述客户端设备203通过设备管理服务204被注册为托管设备。设备数据可以包括与客户端设备203相关联的唯一设备标识符、与特定客户端设备203相关联的设备策略、与特定客户端设备203相关联的状态信息以及促进设备管理服务204对客户端设备203的管理的其他数据。设备数据还可以包括与特定客户端设备203同步的用户数据。用户账户可以与多个客户端设备203相关联。与用户账户相关联的不同客户端设备203可以具有存储在其上的不同用户账户数据。例如,用户的智能手机可以具有存储在设备上的一定数量的文档或电子邮件消息,而用户的膝上型电脑或平板电脑可以具有存储在设备上的不同数量的类型的用户账户数据。

身份提供者206可以代表服务提供者209提供联合身份服务。为此,身份提供者206可以与身份数据存储215进行通信,该身份数据存储215存储与用户身份相关联的信息。该信息可以包括,例如,用户名、安全凭证、生物身份信息、授权的客户端应用程序、未授权的客户端应用程序、授权的客户端设备203、未授权的客户端设备203等等。如将要描述的,用户能够通过身份提供者206进行认证,以便访问由多个服务提供者209提供的服务。身份提供者206可以包括多个平台适配器216,以促进不同客户端平台(诸如ios、android、windows等)上的平台特定认证。

服务提供者209为客户端应用程序提供相应的服务。这些服务可以包括,例如,社交网络服务、电子邮件服务、语音通信服务、企业信息管理服务、生产力服务、游戏服务等等。在一些示例中,服务提供者209中的一个或更多个可以从身份提供者206分别认证用户,由此给予用户直接登录到身份提供者206或服务提供者209的选项。

服务提供者209和身份提供者206可以通过超文本传输协议(hypertexttransferprotocol,http)、简单对象访问协议(simpleobjectaccessprotocol,soap)、代表性状态传输(representationalstatetransfer,rest)和/或其他协议的方式在网络212上与客户端设备203通信。

客户端设备203可以表示基于处理器的系统,诸如计算机系统,其可以以台式计算机、膝上型计算机、个人数字助理、蜂窝电话、智能手机、机顶盒、音乐播放器、网络平板电脑、平板电脑系统、游戏机、电子书阅读器或具有类似功能的任何其他设备的形式体现。客户端设备203可以包括显示器218,其包括例如一个或更多个设备,诸如液晶显示(liquidcrystaldisplay,lcd)显示器或其他类型的显示设备。客户端设备203还可以配备有联网能力或网络接口,包括本地化网络或通信能力,诸如nfc能力、rfid读取和/或写入能力、麦克风和/或扬声器或其他本地通信能力。

客户端设备203可以执行各种应用程序,诸如管理应用程序221、多个客户端应用程序224a...224n以及其他应用程序、服务或进程。管理应用程序221可以接收来自用户的安全凭证并且用于向设备管理服务204进行认证。一旦向设备管理服务204进行了认证,管理应用程序221能够获得管理凭证225,其反过来允许客户端应用程序224从身份提供者206请求身份断言,以便向各自的服务提供者209认证客户端应用程序224,如将要描述的那样。虽然被描述为应用程序,但是应当理解,管理应用程序221可以是客户端设备203的操作系统的集成组件。而且,在一些场景中,可以将管理凭证225直接供应给操作系统以供所有客户端应用程序224使用。这可以使用安装在被管理证书密钥链中的证书配置文件或证书和kerberos配置文件一起的组合,在ios下执行。在一些场景中,管理凭证225可以存储在操作系统本身中,而不是存储在管理应用程序221中。各种访问规则226可以限制哪些客户端应用程序224被允许使用管理凭证225用于向身份提供者206进行认证。在各种实现方式中,访问规则226可以由身份提供者206来维护和实施。

安全断言标记语言(securityassertionmarkuplanguage,saml)中的身份断言,例如包含服务提供者209用来做出访问控制决定的安全信息包。saml支持三种类型的声明(statement):认证声明、属性声明和授权决定声明。认证声明向服务提供者209断言客户端设备203在特定的时间使用特定的认证方法向身份提供者206进行认证。属性声明断言客户端设备203与某些属性相关联。授权决定声明断言客户端应用程序224被允许执行相对于由服务提供者209提供的资源的某动作。可以采用可扩展访问控制标记语言(extensibleaccesscontrolmarkuplanguage,xacml)和/或其他语言。

客户端应用程序224对应于被用来访问由服务提供者209提供的服务的各种应用程序。客户端应用程序224可以包括网页视图组件,由此客户端应用程序224与服务提供者209交互,以通过超文本传输协议(http)请求和响应获取网络内容。然而,与用于访问各种基于网页的应用程序的浏览器不同,通过一个客户端应用程序224设置的cookie不能被另一个客户端应用程序224访问。客户端应用程序224和管理应用程序221可以单独地在显示器218上呈现各自的用户界面227。

现在参考图3,示出的是说明客户端应用程序224、管理应用程序221、设备管理服务204、服务提供者209和身份提供者206之间的交互的一个示例的顺序图300。归因于客户端应用程序224、管理应用程序221、设备管理服务204、服务提供者209和身份提供者206的功能可以在单个进程或应用程序中或在多个进程或应用程序中实现。本文讨论的功能的分离或分割仅出于说明的目的而呈现。

从步骤303开始,客户端应用程序224向服务提供者209发送访问请求。在步骤306,服务提供者209将重定向发送回客户端应用程序224,这导致客户端应用程序224将访问请求重定向到身份提供者206。在步骤309,客户端应用程序224向身份提供者206发送身份断言请求。在步骤312,身份提供者206检测客户端应用程序224的类型和平台,并以通过请求针对特定平台的管理凭证225的方式进行认证的方式响应。这可以对应于证书挑战或kerberos挑战。在步骤315,客户端应用程序224从管理应用程序221请求管理凭证225。

在步骤318,管理应用程序221通过用户界面227从用户获取一个或更多个安全凭证。该步骤可以在管理应用程序221的初始启动时发生,伴随着凭证由管理应用程序221在各种场景中本地化存储或者存储在云服务器上(诸如身份数据存储215),以提供用于未来访问的单点登录体验。在步骤321,管理应用程序221向设备管理服务204发送认证请求。该认证请求可以指定从用户获取的安全凭证。在步骤324,设备管理服务204将管理凭证225发送到管理应用程序221。在步骤327,管理应用程序221将管理凭证225返回给客户端应用程序224。

在步骤330,客户端应用程序224使用管理凭证225来向身份提供者206进行认证。在步骤333,身份提供者206向客户端应用程序224返回身份断言。在步骤336,客户端应用程序224向服务提供者209提供身份断言。在步骤339,服务提供者209验证身份断言。服务提供者209生成会话令牌(例如oauth令牌),并在步骤342返回会话令牌。

由此为随后的客户端应用程序224或者试图向另一个服务提供者209进行认证的客户端应用程序224实现了单点登录。因此,该过程可以再次重复用于客户端应用程序224a...224n。然而,一旦用户以认证客户端应用程序224a的目的而向管理应用程序221认证,则用户不需要为认证客户端应用程序224b再次输入安全凭证,除非可能由于不活动或可能导致用户身份被怀疑的其他事件。步骤315、318、321、324和327可以在对客户端应用程序224a的初始访问期间执行,但是由于管理应用程序221已经获得管理凭证225,这些步骤可以在随后访问客户端应用程序224b时省略。可选地,凭证可由管理应用程序221存储,并在步骤318自动输入而无需用户输入。在单点登录过程期间,用户界面可以保持稳定以避免来回“翻动”,使该过程对用户流畅。

现在参考图4,示出的是提供身份提供者206的操作的一个示例的流程图。作为替代,图4的流程图可被视为描绘了在计算设备中实现的方法的成分的示例。属于身份提供者206的功能可以在单个进程或应用程序中或者在多个进程或应用程序中实现。本文讨论的功能的分离或分割仅出于说明的目的而呈现。

从步骤403开始,身份提供者206从客户端应用程序224接收身份断言请求。客户端应用程序224已经由服务提供者209重定向到身份提供者206。例如,可以通过具有状态码302的超文本传输协议(http)重定向响应执行重定向。在步骤406,身份提供者206在一些场景中可以确定客户端应用程序224对应于移动应用程序网页视图而不是浏览器。例如,客户端应用程序224可以在http请求内将用户代理字符串发送到身份提供者206。用户代理字符串可以识别请求是源自特定浏览器还是源自本地应用程序的网页视图。对于浏览器,可以使用用于身份联合的单点登录的替代形式,因为由身份提供者206设置的cookie可以由不同的服务提供者209访问。然而,对于使用网页视图的移动应用程序,不使用专门的软件开发工具包(sdk)则cookie不能在不同的应用程序间共享。在一些情形下,如果客户端应用程序224是浏览器或非托管应用程序,则身份提供者206可被配置为拒绝访问。

在步骤407,身份提供者206确定客户端设备203的平台。身份提供者206也可以通过检查http请求的用户代理字符串来确定平台。例如,身份提供者206可以至少部分地基于包含在用户代理字符串中的对应标识符来确定客户端设备203对应于ios、android、windows、blackberry或其他平台。

在步骤408,身份提供者206至少部分地基于检测到的客户端设备203的平台来请求通过管理凭证225进行认证。具体地,身份提供者206可以在至少部分地基于由客户端设备203提供的信息来查询平台的表格之后,使用平台特定的管理凭证225请求认证。取决于客户端设备203的平台,可以使用不同类型的安全凭证和证书。例如,管理凭证225可以包括安全证书、kerberos配置文件或其他凭证。因此,为了允许来自不同平台的单点登录,平台适配器216可以请求适合于请求访问的客户端设备203的管理凭证225的类型。例如,当平台是ios时,可以使用对应于ios特定证书适配器或kerberos适配器的平台适配器216,诸如esso配置文件。当平台是android时,可以使用对应于证书适配器的平台适配器216。作为附加示例,osx操作系统可以使用密钥链,并且windows10可以使用账户提供者凭证。可以通过返回具有状态码401的http响应来执行对认证的请求,表明需要授权。此外,http响应可以具体地通过管理凭证225的使用由特定协议(例如kerberos协议)请求认证。

在步骤410,身份提供者206确定客户端设备203是否对应于托管设备。如果客户端设备203是托管设备,则步骤408的认证将正确完成。如果步骤408的认证失败,则客户端设备203可以被推测为非托管。如果客户端设备203不对应于托管设备,则身份提供者206继续到步骤411。如果客户端设备203的确对应于托管设备,则身份提供者206移动到步骤412。

在步骤415,身份提供者206接收与管理凭证225相关联的或由管理凭证225生成的数据。在步骤418,身份提供者206确定所呈现的管理凭证225对于所请求的身份断言是有效的。身份提供者206可以验证是否允许使用管理凭证225来认证特定的客户端应用程序224或者用于特定的服务提供者209。在步骤421,如果管理凭证225被确定为有效的,则生成身份断言并且发送到客户端应用程序224。身份断言可以包括安全断言标记语言(saml)、可扩展访问控制标记语言(xacml)或其他数据。之后,进程继续进行到完成。

如果,相反地,客户端设备203不是托管设备,则在步骤411,身份提供者206根据策略确定客户端应用程序224是否被允许在非托管设备上执行。如果客户端应用程序224不被允许在非托管设备上执行,则身份提供者206从步骤411移动到步骤424,并阻止客户端应用程序224的认证,并且可能返回未授权消息。之后,进程继续进行到完成。

如果客户端应用程序224被允许在非托管设备上执行,则身份提供者206从步骤411移动到步骤427,并且身份提供者206通过用户提供的凭证(诸如用户名和密码、生物凭证、多因素凭证等等)请求认证。在步骤430,身份提供者206接收并验证来自客户端应用程序224的用户提供的凭证。然后,身份提供者移动到步骤421,在其中生成身份断言并将其发送到客户端应用程序224。身份断言可以包括安全断言标记语言(saml)、可扩展访问控制标记语言(xacml)或其他数据。之后,进程继续进行到完成。

继续到图5,示出的是提供设备管理服务204的操作的一个示例的流程图。属于设备管理服务204的功能可以在单个进程或应用程序中或者在多个进程或应用程序中实现。本文讨论的功能的分离或分割仅出于说明的目的而呈现。

从步骤501开始,设备管理服务204从客户端设备203接收注册请求。例如,用户可以导航到浏览器中的某个统一资源定位符(uniformresourcelocator,url),管理应用程序221可以被安装在客户端设备203上,并且用户可以接受注册条款。然后,平台特定的管理证书可以被发送到管理应用程序221。可以在配置文件内接收平台特定的管理证书,客户端设备203将该配置文件作为管理配置文件安装在配置文件存储中。

在步骤503中,设备管理服务204从客户端设备203的管理应用程序221接收认证请求。该请求可以指定一个或更多个安全凭证,诸如用户名、密码、生物标识、一次性密码等等。在步骤506,设备管理服务204确定已经呈现的安全凭证是有效的。如果安全凭证无效,则可能会生成错误。

在步骤509,设备管理服务204向客户端设备203发送一个或更多个管理凭证225。管理凭证225可以由对应于设备管理服务204的证书管理中心生成。管理凭证225可以用于在设备管理服务204和管理应用程序221之间创建用于设备管理目的的安全通信信道。之后,进程继续进行到完成。

参照图6,示出的是提供管理应用程序221的操作的一个示例的流程图。属于管理应用程序221的功能可以在单个进程或应用程序中或者在多个进程或应用程序中实现。本文讨论的功能的分离或分割仅出于说明的目的而呈现。

从步骤603开始,管理应用程序221从客户端应用程序224接收单点登录请求。例如,可以提示客户端应用程序224使用管理凭证225以便向身份提供者206进行认证。在步骤606,管理应用程序221确定用户是否已经被认证。如果用户还没有被认证,则管理应用程序221移动到步骤609,并在显示器218上呈现用户界面227,其请求来自用户的一个或更多个安全凭证。在步骤612,管理应用程序221通过用户界面227接收安全凭证。管理应用程序221继续到步骤615。如果用户已经被管理应用程序221认证,则管理应用程序221直接从步骤606移动到步骤615。

在步骤615,管理应用程序221确定客户端应用程序224是否被授权接收管理凭证225。管理应用程序221可以针对访问规则226或通过与设备管理服务204通信以做出决定。访问规则216的示例包括检测设备是否已越狱(jailbroken)、是否使用具有给定长度或复杂度的密码、是否在某地理区域内使用、是否安装了某些应用程序、是否具有某些硬件设备(例如,指纹识别器)和/或是否满足与托管客户端设备203的组织有关的其他标准。如果客户端应用程序224未被授权,则管理应用程序221移动到步骤618并拒绝该请求。之后,进程继续进行到完成。

如果客户端应用程序224被授权,则管理应用程序221移动到步骤621,并确定管理凭证225是否已被高速缓存在客户端设备203中。如果管理凭证225已被高速缓存,则在步骤624管理应用程序221从该高速缓存加载管理凭证225。在步骤625,管理应用程序221将管理凭证225提供给客户端应用程序224。之后,进程继续进行到完成。

如果管理凭证225尚未被高速缓存,则管理应用程序221从步骤621移动到步骤627,并且向设备管理服务204进行认证。为此,管理应用程序221可以使用用户提供的凭证或会话或注册令牌进行认证。在步骤630,管理应用程序221将对管理凭证225的请求发送到设备管理服务204。在步骤633,管理应用程序221从设备管理服务204接收管理凭证225。在步骤625,管理应用程序221向客户端应用程序224提供管理凭证225。之后,进程继续进行到完成。

现在转到图7,示出的是提供客户端应用程序224的操作的一个示例的流程图。属于客户端应用程序224的功能可以在单个进程或应用程序中或者在多个进程或应用程序中实现。本文讨论的功能的分离或分割仅出于说明的目的而呈现。

从步骤703开始,客户端应用程序224向服务提供者209发送访问请求。在步骤706,客户端应用程序224接收到身份提供者206的重定向。重定向可以包括具有状态码302的超文本传输协议(http)重定向响应。在步骤709,客户端应用程序224向身份提供者206发送身份断言请求。在步骤712,客户端应用程序224接收响应,该响应请求通过管理凭证225进行认证。

在步骤715,客户端应用程序224从管理应用程序221获取管理凭证225。为此,客户端应用程序224可以通过本地统一资源定位符(url)向管理应用程序221发送请求,并且还可以通过本地url从管理应用程序221接收响应。用于调用管理应用程序221的本地url可以包括回调信息,诸如对应于客户端应用程序224的方案名称,使得管理应用程序221可以识别客户端应用程序224并返回所请求的管理凭证225。

在步骤718,客户端应用程序224将与管理凭证225相关联的或由管理凭证225生成的数据发送给身份提供者206。在步骤721,客户端应用程序224从身份提供者206接收身份断言。身份断言可以对应于安全断言标记语言(saml)断言或另一个断言。在步骤724,客户端应用程序224使用身份断言向服务提供者209进行认证。在步骤727,客户端应用程序224从服务提供者209接收会话令牌。例如,会话令牌可以对应于oauth令牌。随后,在步骤730,客户端应用程序224可以向服务提供者209进行认证以访问资源。之后,进程继续进行到完成。

接下来参照图8,示出的是提供服务提供者209的操作的一个示例的流程图。作为替代,图8的流程图可以被视为描绘在计算设备中实现的方法的成分的示例。属于服务提供商209的功能可以在单个进程或应用程序中或者在多个进程或应用程序中实现。本文讨论的功能的分离或分割仅出于说明的目的而呈现。

从步骤803开始,服务提供者209从客户端应用程序224接收访问请求。服务提供者209然后将该访问请求与身份提供者206的使用相关联以进行认证。在步骤806,服务提供者209向客户端应用程序224发送重定向响应。这可以包括具有状态码302的超文本传输协议(http)重定向响应。重定向响应可以将客户端应用程序224重定向到身份提供者206。重定向响应可以包括请求身份断言的安全断言标记语言(saml)。

在步骤809,服务提供者209从客户端应用程序224接收身份断言。在步骤812,服务提供者209验证身份断言。例如,身份断言可以包括由身份提供者206生成的认证令牌,并且服务提供者209可以确认认证令牌是真实的。

在步骤815,服务提供者209生成会话令牌。在步骤818,服务提供者209为客户端应用程序224设置包括会话令牌的会话cookie。在步骤821,服务提供者209通过统一资源定位符(url)或会话cookie,至少部分地基于呈现会话令牌的客户端应用程序224,提供对客户端应用程序224的服务访问。之后,进程继续进行到完成。

图4-8的流程图和图3的顺序图示出了本文描述的组件的实现方式的功能和操作的示例。本文描述的组件可以以硬件、软件或者硬件和软件的结合来体现。如果体现为软件,则每个成分可以表示代码模块或代码部分,其包括用于实现指定逻辑功能的程序指令。程序指令可以以例如包括用编程语言编写的人类可读语句的源代码或者包括可由合适的执行系统(诸如计算机系统或其他系统中的处理器)识别的机器指令的机器代码的形式来体现。如果体现为硬件,则每个成分可以表示实现指定逻辑功能的电路或多个互连电路。

尽管流程图和顺序图显示了特定的执行顺序,但是可以理解的是,执行顺序可以不同于所示顺序。例如,两个或更多个成分的执行顺序可以相对于所示的顺序进行交换。此外,连续显示的两个或更多个成分可以同时执行或部分同时执行。此外,在一些示例中,流程图中示出的成分中的一个或更多个可以被跳过或省略。

客户端设备203、设备管理服务204、身份提供者206、服务提供者209或本文描述的其他组件可以包括至少一个处理电路。该处理电路可以包括,例如一个或更多个处理器以及耦合到本地接口的一个或更多个存储设备。本地接口可以包括,例如具有伴随的地址的数据总线/控制总线或任何其他合适的总线结构。

用于处理电路的一个或更多个存储设备可以存储数据或组件,其可由处理电路的一个或更多个处理器执行。例如,设备管理服务204、身份提供者206、服务提供者209、管理应用程序221、客户端应用程序224和/或其他组件可以被存储在一个或更多个存储设备中,并且可以由一个或更多个处理器执行。此外,数据存储(诸如身份数据存储215或管理数据存储213)可以被存储在一个或更多个存储设备中。

本文描述的身份提供者206、设备管理服务204、服务提供者209、管理应用程序221、客户端应用程序224和/或其他组件可以以硬件形式、作为可由硬件执行的软件组件或作为软件和硬件的组合来体现。如果体现为硬件,则本文描述的组件可以实现为采用任何合适的硬件技术的电路或状态机。硬件技术可以包括,例如一个或更多个微处理器、具有在应用一个或更多个数据信号时用于实现各种逻辑功能的逻辑门的分立逻辑电路、具有适当逻辑门的专用集成电路(applicationspecificintegratedcircuit,asic)、可编程逻辑设备(例如现场可编程门阵列(field-programmablegatearray,fpga)和复杂可编程逻辑器件(complexprogrammablelogicdevice,cpld))。

此外,本文描述的包括软件或程序指令的组件中的一个或更多个可以体现在任何非暂时性计算机可读介质中,以供指令执行系统(诸如计算机系统或其他系统中的处理器)使用或与其结合使用。计算机可读介质可以包含存储和/或维护由指令执行系统使用或与其结合使用的软件或程序指令。

计算机可读介质可以包括物理介质,诸如磁的、光学的、半导体和/或其他合适的介质。合适的计算机可读介质的示例包括但不限于固态驱动器、磁驱动器或闪存。此外,本文描述的任何逻辑或组件可以以各种方式来实现和构造。例如,所描述的一个或更多个组件可以被实现为单个应用程序的模块或组件。此外,本文描述的一个或更多个组件可以在一个计算设备中执行或者通过使用多个计算设备执行。

需要强调的是,本公开的上述示例仅仅是为了清楚地理解本公开的原理而提出的实现方式的示例。在实质上不偏离本公开的精神和原理的情况下,可以对上述示例做出许多变化和修改。所有这样的修改和变化旨在被包括在本公开的范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1