具体实施方式
现在将在下文中参考附图更全面地描述本公开,附图形成本公开的一部分,并且通过图示的方式示出了某些示例实施例。然而,主题可以以各种不同的形式体现,因此,所涵盖或要求保护的主题旨在被解释为不限于本文所述的任何示例实施例;提供示例实施例仅用于说明。同样,所要求保护或涵盖的主题的范围旨在相当广泛。例如,主题可以被体现为方法、设备、组件或系统,等等。因此,实施例可以例如采用硬件、软件、固件或其任何组合的形式(除软件本身之外)。因此,以下详细描述不应被视为限制意义。
在整个说明书和权利要求书中,术语可以具有超出所明确说明的含义的在上下文中建议或暗示的细微差别的含义。同样地,如本文使用的短语“在一个实施例中”不一定指代同一实施例,并且如本文使用的短语“在另一实施例中”不一定指代不同的实施例。例如,所要求保护的主题旨在包括整个或部分示例实施例的组合。
通常,术语可以至少部分地从上下文中的使用来理解。例如,如本文所使用的诸如“和”、“或”或“和/或”之类的术语可包括多种含义,这些含义可以至少部分地取决于使用这些术语的上下文。通常,“或”如果用于关联列表(例如A、B或C),则意指A、B和C(此处以包含性意义使用)以及A、B或C(此处以排他性含义使用)。此外,至少部分地取决于上下文,如本文所使用的术语“一个或多个”可以用于以单数意义描述任何特征、结构或特征,或者可以以复数含义描述特征、结构或特征的组合。类似地,至少部分地取决于上下文,诸如“一”、“一个”或“该”之类的术语也可以被理解为传达单数用法或传达复数用法。此外,至少部分地取决于上下文,术语“基于”可以被理解为不一定旨在传达因素的排他性组合,并且替代地,可以允许存在不一定被明确描述的其他因素。
下面参考方法和设备的框图和操作说明来描述本公开。应当理解,框图或操作说明的每个框以及框图或操作说明中的框的组合可以借助于模拟或数字硬件和计算机程序指令来实现。这些计算机程序指令可以被提供给通用计算机(以改变其如本文详述的功能)、专用计算机、ASIC或其他可编程数据处理装置的处理器,使得通过计算机或其他可编程数据处理装置的处理器执行的指令实现框图或一个或多个操作框中指定的功能/动作。在一些替代实现方式中,框中提到的功能/动作可以不按照操作说明中所指出的顺序发生。例如,连续示出的两个框实际上可以基本上同时执行,或者这些框有时可以以相反的顺序执行,这取决于所涉及的功能/动作。
可以将这些计算机程序指令提供给下列项的处理器:通用计算机(以改变其如本文详述的功能)、专用计算机、ASIC或其他可编程数据处理装置,使得通过计算机或其他可编程数据处理装置的处理器执行的指令实现框图或一个或多个操作块中指定的功能/动作,从而根据本文的实施例来转换它们的功能。
出于本公开的目的,计算机可读介质(或一个或多个计算机可读存储介质)以计算机可读的形式存储计算机数据,该数据可以包括可由计算机执行的计算机程序代码(或计算机可执行指令)。通过示例而非限制的方式,计算机可读介质可以包括用于数据的有形或固定存储的计算机可读存储介质,或用于对包含代码的信号进行瞬时解释的通信介质。如本文使用的计算机可读存储介质是指物理或有形存储装置(与信号相反),并且包括但不限于以用于信息(计算机可读指令、数据结构、程序模块或其他数据)的有形存储的方法或技术实现的易失性和非易失性、可移除和不可移除介质。计算机可读存储介质包括但不限于RAM、ROM、EPROM、EEPROM、闪存或其他固态存储器技术、CD-ROM、DVD、或其他光学存储装置、磁带盒、磁带、磁盘存储装置或其他磁存储设备、或可用于有形地存储所需信息或数据或指令并且可由计算机或处理器访问的任何其他物理或材料介质。
出于本公开的目的,术语“服务器”应该被理解为指代提供处理、数据库和通信设施的服务点。通过示例而非限制的方式,术语“服务器”可以指具有相关联的通信和数据存储装置和数据库设施的单个物理处理器,或者它可以指代处理器和相关联的网络和存储设备,以及支持服务器提供的服务的操作软件和一个或多个数据库系统和应用软件的联网或集群复合体。服务器的配置或功能可以有很大不同,但通常服务器可以包括一个或多个中央处理单元和存储器。服务器还可以包括一个或多个大容量存储设备、一个或多个电源、一个或多个有线或无线网络接口、一个或多个输入/输出接口、或一个或多个操作系统,例如,Windows Server、Mac OS X、Unix、Linux、FreeBSD等。
出于本公开的目的,“网络”应该被理解为指代可以耦合设备以便可以交换通信的网络,例如,在服务器和客户端设备之间或者其他类型的设备之间交换通信,例如,包括在通过无线网络耦合的无线设备之间交换通信。网络还可以包括大容量存储装置,例如附接网络的存储装置(NAS)、存储区域网络(SAN)或其他形式的计算机或机器可读介质。网络可以包括互联网、一个或多个局域网(LAN)、一个或多个广域网(WAN)、有线类型连接、无线类型连接、蜂窝或其任何组合。同样地,可以采用不同架构或者可以服从或兼容不同协议的子网可以在更大的网络内互操作。例如,可以使得各种类型的设备可用于为不同的架构或协议提供可互操作的能力。作为一个说明性示例,路由器可以提供其他分离和独立LAN之间的链路。
通信链路或信道可以包括模拟电话线,例如双绞线、同轴电缆、包括T1、T2、T3或T4类型线的全数字线或分数数字线、综合业务数字网络(ISDN)、数字订户线(DSL)、包括卫星链路的无线链路、或其他通信链路或信道,如本领域技术人员可能已知的。此外,计算设备或其他相关电子设备可以例如通过有线或无线线路或链路而远程耦合到网络。
出于本公开的目的,“无线网络”应被理解为将客户端设备与网络耦合。无线网络可以采用独立自组网络、网状网络、无线LAN(WLAN)网络、蜂窝网络等。无线网络还可以包括通过无线无线电链路等耦合的终端、网关、路由器等的系统,其可以自由地、随机地移动或任意地组织自身,使得网络拓扑可以改变,有时甚至快速地改变。
无线网络还可以采用多种网络接入技术,包括Wi-Fi、长期演进(LTE)、WLAN、无线路由器(WR)网、或者第2代,第3代或第4代(2G、3G、4G或5G)蜂窝技术等。网络接入技术可以实现设备的广域覆盖,例如具有不同程度的移动性的客户端设备。
例如,网络可以通过一种或多种网络接入技术来实现RF或无线类型通信,例如,全球移动通信系统(GSM)、通用移动电信系统(UMTS)、通用分组无线电服务(GPRS)、增强型数据GSM环境(EDGE)、3GPP长期演进(LTE)、LTE高级、宽带码分多址(WCDMA)、蓝牙、802.11b/g/n等。无线网络实际上可以包括任何类型的无线通信机制,通过这些机制,信号可以在诸如客户端设备或计算设备之类的设备之间、网络之间或之内等进行传送。
计算设备能够例如经由有线或无线网络来发送或接收信号,或者能够例如在存储器中作为物理存储器状态来处理或存储信号,并且因此可以用作服务器。因此,能够用作服务器的设备可以包括例如专用机架式服务器、台式计算机、膝上型计算机、机顶盒、组合各种特征(例如前述设备的两个或更多个特征)的集成设备等。服务器的配置或功能可以有很大不同,但通常服务器可以包括一个或多个中央处理单元和存储器。服务器还可以包括一个或多个大容量存储设备、一个或多个电源、一个或多个有线或无线网络接口、一个或多个输入/输出接口、或一个或多个操作系统,例如,Windows Server、Mac OS X、Unix、Linux、FreeBSD等。
出于本公开的目的,客户端(或消费者或用户)设备可以包括能够例如经由有线或无线网络发送或接收信号的计算设备。客户端设备可以例如包括台式计算机或便携式设备,例如蜂窝电话、智能电话、显示寻呼机、射频(RF)设备、红外(IR)设备和近场通信(NFC)设备、个人数字助理(PDA)、手持式计算机、平板计算机、平板电话、笔记本计算机、机顶盒、可穿戴计算机、智能手表、组合各种特征(例如上述设备的特征)的集成或分布式设备等。
客户端设备在能力或特征方面可以不同。所要求保护的主题旨在涵盖广泛的潜在变化。例如,简单的智能电话、平板计算机或平板电话可以包括数字小键盘或功能有限的显示器,例如用于显示文本的单色液晶显示器(LCD)。然而,相比之下,作为另一示例,支持网络的客户端设备可以包括高分辨率屏幕、一个或多个物理或虚拟键盘、大容量存储装置、一个或多个加速度计、一个或多个陀螺仪、全球定位系统(GPS)、或者其他位置标识类型能力、或具有高度功能的显示器,例如触敏彩色2D或3D显示器。
客户端设备可以包括或可以执行各种操作系统,包括个人计算机操作系统(例如,Windows、iOS或Linux)或移动操作系统(例如,iOS、Android或Windows Mobile等)。
客户端设备可以包括或可以执行各种可能的应用,例如,能够与其他设备进行通信的客户端软件应用,例如,传送一个或多个消息,例如通过电子邮件,例如,
Mail、短消息服务(SMS)或多媒体消息服务(MMS),例如,Yahoo!
包括通过网络,例如社交网络,包括例如
或
Instagram
TM,仅提供一些可能的示例。客户端设备还可以包括或执行应用以传送内容,例如文本内容、多媒体内容等。客户端设备还可以包括或执行应用以执行各种可能的任务,例如,浏览、搜索、播放、流式传输或显示各种形式的内容,包括本地存储或上传的图像和/或视频、或游戏(例如幻想体育联盟)。提供前述内容是为了说明所要求保护的主题旨在包括宽泛范围的可能的特征或能力。
出于本公开的目的,移动设备是或包括客户端设备,该客户端设备小到足以由人的一只或两只手握持和操作。在一些示例中,移动设备具有触摸屏界面,其具有数字导出的按钮和键盘、或物理按钮以及物理键盘或小键盘。移动设备可以通过Wi-Fi、蓝牙、蜂窝网络、或近场通信(NFC)连接到互联网并且与诸如物联网(IoT)设备或其他类型的网络连接设备之类的其他设备互连。相机和其他类型的传感器、以及数字媒体播放器和全球定位系统(GPS)的部件可以被包括在移动设备中。可以通过电池或诸如太阳能电源之类的其他无线电源向移动设备提供电力。移动设备可以运行移动操作系统,其允许第三方移动应用(例如,来自相同供应商的应用)在移动设备上安装和运行。
在一些实施例中,本文描述的移动应用可以包括一个或多个广告。出于本公开的目的,广告应当被理解为包括但不限于被体现为提供由另一用户、服务、第三方、实体等所提供的信息的媒体项的数字媒体内容。这样的数字广告内容可以包括可由计算设备呈现的任何类型的已知或将要知道的媒体,包括但不限于视频、文本、音频、图像和/或任何其他类型的已知或将要知道的多媒体项或对象。在一些实施例中,数字广告内容可以被格式化为提供深度链接特征和/或能力的超链接多媒体内容。因此,虽然某个内容被称为广告,但它仍是可由计算设备呈现的数字媒体项,并且这种数字媒体项包括中继由网络关联方提供的促销内容的内容。
本文描述的原理可以以许多不同的形式体现。所公开的系统和方法提供了用于在移动应用(例如,由相同供应商或某组供应商生产的移动应用)之间共享身份和/或认证的新颖和改进的框架。该框架可以是对已知框架(例如,使用cookie在移动应用之间共享身份和/或认证的框架)的改进。
如下面更详细讨论的,所公开的系统和方法从身份和/或认证平台提供高级功能,用于(例如,由相同供应商生产的)具有同一公共连接的至少两个移动应用之间对身份和/或认证的改进的共享。
现在将参考附图更详细地描述某些实施例。一般地,参考图1,示出了根据本公开的实施例的系统100。图1示出了在其中可以实施本文所讨论的系统和方法的一般环境的组件。并非需要所有组件来实施本公开,并且可以在不脱离本公开的精神或范围的情况下进行组件的布置和类型的变化。如图所示,图1的系统100包括局域网(“LAN”)/广域网(“WAN”)-网络105、无线网络110、移动设备(例如,手持客户端设备)102、103和104和客户端设备101。图1还包括各种服务器,例如,授权服务器106、第二服务器107(其可以是单独的辅助授权服务器、或可以与诸如应用服务器或内容服务器之类的其他类型的服务器进行组合)、和应用(或者“App”)服务器108。
移动设备102-104和客户端设备101中的每一个可以包括具有用于执行图5的过程500的至少一些操作的配置的设备。此外,移动设备102-104和客户端设备101中的每一个可以包括具有用于执行图4中的由第一移动应用402、第二移动应用404、和系统浏览器406执行的过程400的至少一些操作的配置的设备。
授权服务器106和/或第二服务器107可以包括具有用于执行图6的过程600的至少一些操作的配置的设备。此外,授权服务器106和/或第二服务器107可以包括具有用于执行图4中的由授权服务器408执行的过程400的至少一些操作的配置的设备。
以下更详细地描述移动设备102-104和客户端设备101的实施例。
通常,移动设备102-104实际上可以包括能够通过网络(例如网络105、无线网络110等)接收和发送消息的任何便携式计算设备。移动设备102-104通常还可以被描述为被配置为便携式的客户端设备。因此,移动设备102-104实际上可以包括能够连接到另一计算设备并接收信息的任何便携式计算设备。这些设备包括多点触摸和便携式设备,例如,蜂窝电话、智能电话、显示寻呼机、射频(RF)设备、红外(IR)设备、个人数字助理(PDA)、手持式计算机、膝上型计算机、可穿戴计算机、智能手表、平板计算机、平板电话、组合一个或多个前述设备的集成设备等。这样,移动设备102-104通常在能力和特征方面范围很广。例如,蜂窝电话可以具有数字小键盘和在其上只能显示文本的几行单色LCD显示器。在另一示例中,支持网络的移动设备可以具有触敏屏幕、触控笔和在其上可以显示文本和图形的HD显示器。
支持web的移动设备可以包括浏览器应用,其被配置为接收和发送网页、基于web的消息等。浏览器应用可以被配置为采用几乎任何基于网络的语言来接收和显示图形、文本、多媒体等,包括无线应用协议消息(WAP)等。在一个实施例中,浏览器应用能够采用手持设备标记语言(HDML)、无线标记语言(WML)、WMLScript、JavaScript、标准通用标记语言(SMGL)、超文本标记语言(HTML)、可扩展标记语言(XML)等来显示和发送消息。
移动设备102-104还可以包括被配置为从另一计算设备接收内容的至少一个客户端应用。客户端应用可以包括提供和接收文本内容、图形内容、音频内容等的能力。客户端应用还可以提供标识其自身的信息,包括类型、能力、名称等。在一个实施例中,移动设备102-104可以通过各种机制中的任何一种来唯一地标识它们自己,包括电话号码、移动识别码(MIN)、电子序列号(ESN)或另一移动设备标识符。
在一些实施例中,移动设备102-104还可以与非移动客户端设备(例如客户端设备101等)进行通信。在一个实施例中,这种通信可以包括发送和/或接收消息、搜索、查看和/或共享照片、音频剪辑、视频剪辑或任何各种其他形式的通信。客户端设备101实际上可以包括能够通过网络进行通信以发送和接收信息的任何计算设备。这种设备的集合可以包括通常使用有线或无线通信介质进行连接的设备,例如个人计算机、多处理器系统、基于微处理器或可编程的消费电子产品、网络PC等。因此,客户端设备101还可以具有用于显示信息的可导航视图的不同能力。
设备101-104计算设备能够例如经由有线或无线网络来发送或接收信号,或者能够例如在存储器中作为物理存储器状态来处理或存储信号,并且因此可以用作服务器。因此,能够用作服务器的设备可以包括例如专用机架式服务器、台式计算机、膝上型计算机、机顶盒、组合各种特征(例如,前述设备的两个或更多个特征)的集成设备等。
网络105被配置为将授权服务器106、应用服务器108等与其他计算设备(包括客户端设备101)相耦合,并通过无线网络110耦合到移动设备102-104。网络105能够采用任何形式的计算机可读介质来将信息从一个电子设备传送到另一电子设备。此外,除了局域网(LAN)、广域网(WAN)、直接连接(例如通过通用串行总线(USB)端口)、其他形式的计算机可读介质或其任何组合之外,网络105还可以包括互联网。在互连的一组LAN(包括基于不同架构和协议的LAN)上,路由器用作LAN之间的链路,使得消息能够从一个LAN发送到另一LAN、和/或其他计算设备。
在用于或被理解为适用于本公开的通信网络内,这种网络将采用用于通过网络进行通信的各种协议。经由网络(例如参与数字通信网络的网络)传送的信号分组可以兼容或服从一个或多个协议。所采用的信令格式或协议可以包括例如TCP/IP、UDP、QUIC(快速UDP互联网连接)、DECnet、NetBEUI、IPX、APPLETALKTM等。互联网协议(IP)的版本可以包括IPv4或IPv6。互联网是指网络的分散全球网络。互联网包括局域网(LAN)、广域网(WAN)、无线网络或例如允许信号分组在LAN之间进行传送的长途公共网络。信号分组可以在网络的节点之间进行传送,例如,传送到采用本地网络地址的一个或多个站点。例如,信号分组可以经由耦合到互联网的接入节点通过互联网从用户站点进行传送。同样地,例如,信号分组可以经由网络节点被转发到经由网络接入节点耦合到网络的目标站点。经由互联网传送的信号分组可以例如经由网关、服务器等(其可以根据目标地址和到目标地址的网络路径的可用性来路由信号分组)的路径来路由。
根据一些实施例,本公开还可以在电子社交网站内使用或可用于电子社交网站。社交网络通常是指通过通信网络或通过各种子网络耦合的个体(例如但不限于熟人、朋友、家人、同事或工友)的电子网络。潜在地,附加关系可能由于通过通信网络或子网络的社交互动而后续形成。在一些实施例中,多模通信可以在社交网络的成员之间发生。一个或多个社交网络内的个体可以经由各种设备与社交网络的其他成员进行交互或通信。多模通信技术是指允许跨多个设备或平台(例如,蜂窝电话、智能电话、平板计算设备、平板手机、个人计算机、电视、机顶盒、SMS/MMS、电子邮件、即时消息客户端、论坛、社交网站等)进行可互操作通信的一组技术。
在一些实施例中,所公开的网络110和/或105可以包括(一个或多个)内容分发网络。“内容递送网络”或“内容分发网络”(CDN)通常是指分布式内容递送系统,其包括由一个或多个网络链接的计算机或计算设备的集合。CDN可以采用软件、系统、协议或技术来促进各种服务,例如,存储、缓存、内容传送或流媒体或应用。CDN还可以使得实体能够全部或部分地操作或管理另一CDN的站点基础设施。
如本文所述,授权服务器106和/或第二服务器107可以包括具有用于执行过程600的至少一些操作的配置的设备。此外,授权服务器106和/或第二服务器107可以包括具有用于执行由授权服务器408执行的过程400的至少一些操作的配置的设备。
应用服务器108和/或第二服务器107可以包括具有用于经由网络向另一设备提供内容(例如,交互式内容)的配置的设备。例如,(一个或多个)这类服务器可以托管站点、服务或相关联的应用,例如,电子邮件平台(例如,
Mail)、社交网站、照片共享站点/服务(例如,
)、搜索平台或站点、或个人用户站点(例如博客、视频博客、在线约会站点等)等。(一个或多个)这类服务器还可以托管各种其他站点,包括但不限于商业站点、教育站点、词典站点、百科全书站点、维基、金融站点、政府站点等。可以用作(一个或多个)这类服务器的设备包括个人计算机、台式计算机、多处理器系统、基于微处理器或可编程的消费电子产品、网络PC、服务器等。
应用服务器108和/或第二服务器107还可以提供各种服务,包括但不限于流媒体服务和/或下载媒体服务、搜索服务、电子邮件服务、照片服务、网络服务、社交网络服务、新闻服务、第三方服务、音频服务、视频服务、即时消息传递(IM)服务、SMS服务、MMS服务、FTP服务、IP语音(VOIP)服务等。可以经由应用服务器108来提供这类服务,例如邮件应用和/或电子邮件平台,由此用户能够在用户被认证、验证或由服务标识时利用这种服务。内容的示例可以包括视频、文本、音频、图像等,其可以以物理信号的形式(例如电信号)进行处理,或者可以例如作为物理状态存储在存储器中。
此外,应用服务器108和/或第二服务器107可以包括广告服务器,例如,存储用于呈现给用户的在线广告的服务器。由广告服务器提供的“广告服务”是指用于在网站、应用或用户更可能看到它们的其他地方投放在线广告的方法,例如,在在线会话期间或在计算平台使用期间。可以结合赞助广告使用各种货币化技术或模型,包括与用户相关联的广告。这种赞助广告包括货币化技术,包括赞助搜索广告、非赞助搜索广告、保证和非保证递送广告、广告网络/交换、广告定向、广告服务和广告分析。此类系统可以在网页创建期间合并广告投放机会的近乎实时的拍卖(在一些情况下不到500毫秒),并且更高质量的广告投放机会产生更高的每广告收入。也就是说,当广告商相信他们的广告被投放在被呈现给用户的高度相关内容中或者与被呈现给用户的高度相关内容一起投放时,他们将支付更高的广告费。减少量化高质量广告投放所需的时间可以为广告平台带来竞争优势。因此,更高的速度和更相关的情境检测改善了这些技术领域。
例如,购买或销售在线广告的过程可能涉及许多不同的实体,包括广告商、发布商、代理商、网络或开发者。为了简化该过程,被称为“广告交换”的组织系统可以关联广告商或发布商,例如通过平台来促进从多个广告网络购买或销售在线广告库存。“广告网络”是指来自发布商的广告空间供应的聚合,例如用于全体供应给广告商。对于像
这样的门户网站,广告可以至少部分地基于一个或多个搜索项来在产生自用户定义的搜索的网页上或应用中显示。如果所显示的广告与一个或多个用户的兴趣相关,则广告可能对用户、广告商或门户网站有益。因此,已经开发了各种技术来推断用户兴趣、用户意图或随后将相关广告定向到用户。呈现目标广告的一种方法包括采用人口统计特性(例如,年龄、收入、性别、职业等)来例如按组预测用户行为。可以至少部分地基于所预测的(一个或多个)用户行为来向目标观众中的用户呈现广告。
另一方法包括简档类型(profile-type)广告定向。在该方法中,可以生成特定于用户的用户简档以模拟用户行为,例如,通过跟踪用户通过站点的网站或网络的路径,并至少部分地基于最终传递的页面或广告来编辑简档。例如,可以标识相关性以例如用于用户购买。通过将内容或广告定向到特定用户,所标识的相关性可以用于定向潜在购买者。在呈现广告期间,呈现系统可以收集关于被呈现给用户的广告的类型的描述性内容。可以收集广泛的描述性内容,包括特定于广告呈现系统的内容。所收集的广告分析可以被发送到远离广告呈现系统的位置以进行存储或用于进一步评估。在广告分析发送不能立即可用的情况下,所收集的广告分析可以由广告呈现系统存储,直到那些广告分析的发送变为可用。这种功能可以由服务器107和108中的至少一个来提供。
服务器106、107和108能够例如经由有线或无线网络来发送或接收信号,或能够例如在存储器中作为物理存储器状态来处理或存储信号。能够用作服务器的设备可以包括例如专用机架式服务器、台式计算机、膝上型计算机、机顶盒、组合各种特征(例如前述设备的两个或更多个特征)的集成设备等。服务器的配置或功能可以有很大不同,但通常服务器可以包括一个或多个中央处理单元和存储器。服务器还可以包括一个或多个大容量存储设备、一个或多个电源、一个或多个有线或无线网络接口、一个或多个输入/输出接口、或一个或多个操作系统,例如,Windows Server、Mac OS X、Unix、Linux、FreeBSD等。
在一些实施例中,用户能够访问由服务器106、107和/或108提供的服务。在非限制性示例中这可以包括使用它们的各种设备101-104通过网络105的认证服务器、搜索服务器、电子邮件服务器、社交网络服务服务器、SMS服务器、IM服务器、MMS服务器、交换服务器、照片共享服务服务器和旅行服务服务器。在一些实施例中,诸如邮件或消息传递应用(例如,
Mail、
Messenger)、照片共享/用户生成内容(UGC)应用(例如,
等)、流视频应用(例如,
Amazon
HBO
等)、博客、照片或社交网络应用(例如,
等)、搜索应用(例如,
搜索)等之类的应用可以由应用服务器108(或第二服务器107,例如,包括内容服务器、消息服务器等的一个服务器)托管。
因此,应用服务器108可以存储各种类型的应用和应用相关信息,包括应用数据和用户简档信息(例如,与用户相关联的标识和行为信息)。还应理解,服务器107还可以存储与服务器107在相关联的数据库107中提供的内容和服务有关的各种类型的数据。存在这样的实施例,其中,网络105还与可信搜索服务器(TSS)相耦合/连接,该可信搜索服务器(TSS)可用于根据本文所讨论的实施例来呈现内容。存在这样的实施例,其中,TSS功能可以被体现在服务器106、107和/或108内。
此外,虽然图1将服务器106、107和/或108分别示出为单个计算设备,但是本公开不限于此。例如,服务器106、107和/或108的一个或多个功能可以分布在一个或多个不同的计算设备上。此外,在一个实施例中,服务器106、107和/或108可以被集成到单个计算设备中,而不脱离本公开的范围。
图2是示出客户端设备的示意图,该客户端设备示出了可以在本公开内使用的客户端设备的示例实施例。客户端设备200可以包括比图2中所示的组件更多或更少的组件。然而,所示出的组件足以公开用于实现本公开的一些方面的说明性实施例。客户端设备200可以表示例如上面关于图1所讨论的客户端设备和移动设备。
如图所示,客户端设备200包括经由总线224与大容量存储器230进行通信的处理单元(CPU)222。客户端设备200还包括电源226、一个或多个网络接口250、音频接口252、显示器254、键盘256、照明器258、输入/输出接口260、触觉接口262、可选全球定位系统(GPS)接收器264以及(一个或多个)相机或者其他光学、热或电磁传感器266。如本领域技术人员所理解的,设备200可以包括一个相机/传感器266、或多个相机/传感器266。(一个或多个)相机/(一个或多个)传感器266在设备200上的定位可以根据设备200模型、每设备200能力等或其某种组合而改变。
电源226向客户端设备200提供电力。可以使用可充电或不可充电电池来提供电力。电力还可以由外部电源提供,例如,AC适配器或补充和/或对电池进行充电的电动对接支架。
客户端设备200可选地可以与基站(未示出)进行通信,或者直接与另一计算设备进行通信。网络接口250包括用于将客户端设备200耦合到一个或多个网络的电路,并且被构造为与如上所述的一个或多个通信协议和技术一起使用。网络接口250有时被称为收发器、收发设备或网络接口卡(NIC)。
音频接口252被布置为产生和接收音频信号,例如人声的声音。例如,音频接口252可以耦合到扬声器和麦克风(未示出)以实现与其他项的电信和/或生成用于某一动作的音频确认。显示器254可以是液晶显示器(LCD)、气体等离子体、发光二极管(LED)或与计算设备一起使用的任何其他类型的显示器。显示器254还可以包括触敏屏幕,该触敏屏幕被布置为接收来自诸如手写笔之类的对象或来自人手的手指的输入。
键盘256可以包括被布置为从用户接收输入的任何输入设备。例如,键盘256可以包括按钮数字拨号盘或键盘。键盘256还可以包括与选择和发送图像相关联的命令按钮。照明器258可以提供状态指示和/或提供光。照明器258可以在特定时间段内或响应于事件而保持激活。例如,当照明器258激活时,它可以在客户端设备通电的情况下从背后照亮键盘256上的按钮并保持开启。此外,当执行特定动作(例如,拨打另一客户端设备)时,照明器258可以以各种模式来从背后照亮这些按钮。照明器258还可以使得位于客户端设备的透明或半透明壳体内的光源响应于动作而发光。
客户端设备200还包括输入/输出接口260,用于与外部设备(例如耳机)或图2中未示出的其他输入或输出设备进行通信。输入/输出接口260可以利用一种或多种通信技术,例如USB、红外、蓝牙TM等。触觉接口262被布置为向客户端设备的用户提供触觉反馈。例如,当客户端设备200从另一用户接收到通信时,可以采用触觉接口来以特定方式振动客户端设备200。
可选GPS收发器264可以确定客户端设备200在地球表面上的物理坐标,其通常将位置输出为纬度和经度值。GPS收发器264还可以采用其他地理定位机制,包括但不限于三角测量、辅助GPS(AGPS)、E-OTD、CI、SAI、ETA、BSS等,以进一步确定客户端设备200在地球表面上的物理位置。可以理解,在不同条件下,GPS收发器264可以确定客户端设备200在毫米内的物理位置;并且在其他情况下,所确定的物理位置可能不太精确,例如,在一米内或显著更大的距离内。然而,在一个实施例中,客户端设备可以通过其他组件提供可用于确定设备的物理位置的其他信息,包括例如MAC地址、互联网协议(IP)地址等。
大容量存储器230包括RAM 232、ROM 234和其他存储装置。大容量存储器230示出了用于存储诸如计算机可读指令、数据结构、程序模块或其他数据之类的信息的计算机存储介质的另一示例。大容量存储器230存储用于控制客户端设备200的低级操作的基本输入/输出系统(“BIOS”)240。大容量存储器还在RAM 232中存储用于控制客户端设备200的操作的操作系统241。应理解,该组件可以包括通用操作系统,例如UNIX或LINUX
TM的版本,或专用客户端通信操作系统,例如,Windows Client
TM或
操作系统。操作系统可以包括Java虚拟机模块或者与其相接口,该Java虚拟机模块能够通过Java应用来控制硬件组件和/或操作系统操作。大容量存储器还在RAM 232中存储用于控制系统浏览器243和应用242的操作(例如,控制第一移动应用244和第二移动应用245的操作)的系统浏览器。
存储器230还包括客户端设备200除其他选项外还可以用来存储系统浏览器243、应用242(例如,应用244和245)和/或其他数据的一个或多个数据存储库。例如,可以采用数据存储库来存储描述客户端设备200的各种能力的信息。然后可以基于各种事件中的任何事件将信息提供给另一设备,包括在通信期间作为头部的一部分进行发送、根据要求进行发送等。至少一部分能力信息也可以被存储在客户端设备200内的磁盘驱动器或其他存储介质(未示出)上。
应用242(例如,第一移动应用244和第二移动应用245)可以包括计算机可执行指令,当由客户端设备200执行时,发送、接收和/或以其他方式处理音频、视频、图像,并且实现与服务器和/或另一客户端设备的另一用户的通信。在一些实施例中,应用程序或“app”的其他示例包括浏览器、日历、联系人管理器、任务管理器、代码转换器、照片管理、数据库程序、文字处理程序、安全性应用、电子表格程序、游戏、搜索程序等。应用244或245可以包括搜索客户端,其被配置为使用任何已知或将要知道的通信协议来发送、接收和/或以其他方式处理搜索查询和/或搜索结果。应该清楚,应用244和/或245可以采用多个搜索客户端。例如,一个搜索客户端可以被配置为输入搜索查询消息,其中,另一搜索客户端管理搜索结果,并且又一搜索客户端被配置为管理服务数字内容(例如,广告)或与(但不限于)IM、电子邮件和其他类型的已知消息等相关联的其他形式的数字数据。每个搜索客户端可以由应用244或245中的单独一个来实现。
图3是示出用于执行本文所讨论的系统和方法的组件的框图。图3包括授权服务器300(例如,授权服务器106)、网络315(例如,网络105)、共享安全机制320、以及第一和第二移动应用330和335(例如,移动应用244和245)。授权服务器300可以是专用机器或处理器,并且可以由消息传递服务器、应用服务器、内容服务器、社交网络服务器、网络服务器、搜索服务器、内容提供商、电子邮件服务提供商、广告服务器、用户的计算设备等、或其任何组合托管。
根据一些实施例,授权服务器300可以被体现为在用户设备上执行的独立应用。在一些实施例中,授权服务器300可以用作安装在用户的设备上的应用,并且在一些实施例中,这样的应用可以是用户设备通过网络访问的基于网络的应用。在一些实施例中,授权服务器300可以作为增强脚本、程序或应用而被安装到消息传递和/或媒体内容托管/服务应用,例如,
Mail、
Messenger、
Search、
等。
共享安全机制320可以包括密钥链、密钥库或任意其他类型的共享安全机制,并且可以包括或可以是数据库或存储器的一部分,并且与用户的设备(例如,设备101-104或来自图2的设备200)相关联。在一些较不示例性实施例中,共享安全机制320可以与应用330和335、授权服务器300、或任意其他类型的服务器(例如,参考图1描述的服务器)中的任一个相关联。在一些实施例中,虽然未在图2中示出,共享安全机制320可以是客户端设备200的RAM 232的一部分。共享安全机制320可以包括例如认证和/或身份项(例如,令牌)的数据集、设备数据和相关联的元数据、以及用户数据和相关联的用户元数据以及它们的任何组合。这类信息可以被独立地和/或作为链接或关联的数据集而存储在共享安全机制320中。应当理解,在不脱离本公开的范围的情况下,共享安全机制320中的数据(和元数据)可以与任何类型的内容、用户、设备或网络信息和类型相关联,无论是已知的还是将要知道的。
共享安全机制320包括与认证和/或身份项相关联的数据和元数据的数据集。出于本公开的目的,对于令牌和/或代码,也将参考认证和/或身份项;然而,不应将其解释为限制本文所讨论的系统和方法的应用。虽然本公开通篇参考了认证和/或身份项、令牌和/或代码,但是根据本文所讨论的系统和方法,授权服务器300和其他设备和应用可以传送和/或访问和处理其他形式的认证凭证。
根据所公开的系统和方法处理并存储在共享安全机制320中的认证和/或身份项、令牌和/或代码以及这些事物的数据和元数据可以是任意类型的认证凭证。这类认证凭证的示例可以包括但不限于针对单因素、双因素或多因素认证、强认证、连续认证、事实认证、视频认证、或其一些组合的凭证。凭证可以简单地是用户名和密码,也可以非常复杂。更复杂的凭证可以包括数字工件,例如,数字印章、签名、水印、或指纹。此外,例如,凭证可以包括共享秘密,例如,共享密码或电子签名。此外,凭证可以基于公钥基础结构,也可以用于以加密方式保证消息已经由特定私钥的持有者签名。
凭证可以被提供给服务器300,或可以由可以访问凭证的计算机程序或设备访问。在一些实施例中,认证凭证可以被存储在与一个或多个应用提供商相关联的数据库中。
共享安全机制320还可以包括与和用户(例如,最终用户)、设备、服务、应用、用户生成的内容、第三方提供的内容等相关的本地和/或网络信息相关联的数据和元数据的数据集。这些信息可以被独立地和/或作为链接或关联的数据集而被存储和索引在共享安全机制320中。如上所述,应理解,共享安全机制320中的数据(和元数据)可以是任何类型的信息和类型,无论是已知的还是将已知的,而不脱离本公开的范围。
根据一些实施例,共享安全机制320可以包括能够存储针对用户的数据(即,用户数据)的数据库。根据一些实施例,所存储的用户数据可以包括但不限于与用户的简档、(一个或多个)用户帐户、用户兴趣、用户行为信息、用户属性、用户偏好或设置、用户人口统计信息、用户位置信息、用户传记信息等、或其某种组合相关联的信息。这类信息可以合并到认证和身份凭证中。
根据一些实施例,用户数据还可以包括用于搜索、经由应用接收和/或显示消息、经由应用呈现和/或显示内容、和/或下载、流式传输和/或访问网络上或借助于网络的应用的目的,设备信息包括但不限于设备标识信息、设备能力信息、语音/数据载体信息、互联网协议(IP)地址、所安装的或能够在此类设备上安装或执行的应用、和/或其任何或某种组合。应理解,可以与共享安全机制320相关联的数据库中的数据(和元数据)可以是与用户、内容、设备、应用、服务提供商、内容提供商有关的任何类型的信息,无论是已知的还是将要知道的,而不脱离本公开的范围。
根据一些实施例,数据库可以与授权服务器300(图3中未示出)相关联,并且这类数据库可以包括与内容提供商(例如但不限于使得用户能够发送、接收、搜索、上载、下载、共享、编辑内容、或以其他方式使得内容有益于用户的消息传递平台、应用、站点或提供商(例如,
Search、
Mobile application、
Mail、
等))相关联的信息。在一些实施例中,这类数据库可以包括与来自托管站点的一个或各种媒体的此类信息相关联的数据和元数据。在一些实施例中,这种内容提供商信息可以包括但不限于由用户设备驻留或访问和/或能够被下载、执行、访问或在用户设备上运行以呈现内容的应用的版本、类型和/或能力。
在一些实施例中,存储在与授权服务器300和/或共享安全机制320相关联的数据库中的信息可以被表示为针对每个所存储的数据/元数据项的n维向量(或特征向量),其中,与例如所存储的数据和/或元数据相关联的信息可以对应于向量上的(一个或多个)节点。这类数据库可以将所存储的信息作为链接的数据和元数据的集合来在数据库中存储和索引,其中,数据和元数据关系可以被存储为上面讨论的n维向量。这种存储装置可以通过任何已知的或将已知的向量或阵列存储装置来实现,包括但不限于散列树、队列、堆栈、VList、或任何其他类型的已知或将已知的动态存储器分配技术或工艺。虽然对一些实施例的讨论涉及对所存储的信息的向量分析,但如上所述,可以根据任何已知的或将已知的计算分析技术或算法来分析、存储和索引信息,例如但不限于word2vec分析、聚类分析、数据挖掘、贝叶斯网络分析、隐马尔可夫模型、人工神经网络分析、逻辑模型和/或树分析等。
在一些实施例中,与共享安全机制320和/或授权服务器300相关联的数据库可以是容纳与一个或多个设备、用户、服务和/或内容提供商相关联的信息的单个数据库,并且在一些实施例中,数据库可以被配置作为提供这样的信息的链接的数据存储库的集合,因为该集合中的每个数据存储库与特定用户、设备、服务和/或内容提供商相关联和/或对于它们是唯一的。
如上所述,参考图1,网络315可以是任意类型的网络,例如但不限于无线网络、局域网(LAN)、广域网(WAN)、互联网或其组合。网络315促进授权服务器300、移动应用330和335以及任意相关联的数据库和系统浏览器的连接。如图3所示,服务器300和共享安全机制320以及应用330和335可以通过任意已知的或将要知道的连接和/或实现这些设备和资源之间的通信的方法来直接连接。
包括根据本文描述的一些专用功能所编程的硬件的主处理器、服务器或设备组合为方便起见而被称为授权服务器300,并且服务器可以包括用于执行与图6的过程600以及图4的由授权服务器408执行的一些过程相关联的功能的特定模块。
为方便起见,包括根据本文描述的一些专用功能所编程的硬件的(一个或多个)设备被称为第一移动应用330、第二移动应用335、和共享安全机制320,并且这些设备各自都可以包括用于执行与图5的过程500以及图4的由第一移动应用402、第二移动应用404或系统浏览器406执行的一些过程相关联的功能的特定模块。
已经描述了在所公开的系统和方法内采用的架构的组件,现在将在下面参考图4-6描述关于所公开的系统和方法的组件的操作。
转到图4,过程400详细描述了根据本公开的一些实施例执行的用于允许第一移动应用402(例如,图2和3中示出的第一移动应用中的一个)与第二移动应用404(例如,图2和3中示出的第二移动应用中的一个)共享身份和/或认证的步骤。在第一和第二应用402和404是由相同供应商发布时,过程400特别有用。在一些实施例中,移动应用402和404可以使用RFC 8252和OAuth 2.0下的标准特征。此外,在这样的实施例中,授权服务器408(例如,图1或3的授权服务器中的一个)可以是RFC 6749和OAuth 2.0授权框架中定义的服务器。
过程400的步骤401(其包括认证第一移动应用)由第一移动设备402、系统浏览器406(例如,图2或图3的系统浏览器)、以及授权服务器408的组合来执行。过程400的步骤403(其包括使用本机SSO来认证第二移动应用)由至少第二移动设备404和授权服务器408的组合来执行。如图4所示,步骤401包括子步骤410-425,步骤403包括子步骤427-430。过程400的步骤和子步骤是步骤的有序组合,其中步骤403在步骤401之后并且依赖于步骤401。此外,针对子步骤,步骤430依赖于步骤429,步骤429依赖于步骤428,步骤428依赖于步骤427,步骤427依赖于步骤425,步骤425依赖于步骤424,步骤423依赖于步骤422,步骤422依赖于步骤420,步骤420依赖于步骤418,步骤418依赖于步骤417,步骤417依赖于步骤416,步骤416依赖于步骤414,步骤414依赖于步骤412,步骤412依赖于步骤410。
针对子步骤,步骤410包括第一移动应用402和系统浏览器406之间的交互(例如,协商)。步骤412、414、416和418包括系统浏览器406和授权服务器408之间的交互(例如,协商)。步骤420包括浏览器406和第一移动应用402之间的交互(例如,协商)。步骤422和424包括授权服务器408和第一移动应用402之间的交互(例如,协商)。步骤428和430包括第二移动应用404和授权服务器408之间的交互(例如,协商)。授权服务器408独立地执行步骤417、423和429。在步骤425处第一移动应用直接与共享安全机制(图4中未示出)进行交互,并且在步骤427处第二移动应用直接与共享安全机制进行交互。
图4的步骤可以由授权框架的认证层(诸如OAuth 2.0授权框架顶部的OpenID连接(OIDC))来实现。在使用OIDC的示例实施例中,OIDC用作OAuth协议(例如,OAuth 2.0协议)顶部的身份层。OIDC允许计算客户端(例如,系统浏览器406和第一移动应用402)基于由授权服务器408执行的认证来验证用户(例如,终端用户)的身份。其还以可互操作的方式获得关于用户的基本简档信息。在示例中,OIDC使用RESTFUL HTTP API,该RESTFUL HTTP API使用JavaScript对象表示法(JSON)作为数据交换格式。在其他实施例中,另一框架的另一类型的认证层可以被用来验证身份并且以可互操作的方式获得用户的简档信息。
认证层提供客户端,包括移动应用(例如,应用402和404)和本文描述的系统浏览器(例如,浏览器406),用于请求和接收关于经认证的会话和用户的信息。认证层可以初始被设计为实现本机SSO,也可以是可扩展以实现本机SSO的标准认证层。OIDC可以被用在一些示例性实施例中,并且它是有用的,因为它支持可选特征,例如,身份数据和会话管理的加密。
过程400从步骤401开始,步骤401包括认证第一移动应用402。如图所示,步骤401可以从步骤410开始,如图所示,步骤410包括移动应用402向系统浏览器406发送请求以发起通过认证层(例如,OIDC)来认证第一移动应用402。
在步骤412中,如图所示,系统浏览器406用作从充当认证服务提供商的授权服务器408请求认证的客户端。例如,系统浏览器406将OIDC格式的请求发送到授权服务器408。在步骤412处发送的请求可以包括特定设备SSO范围参数。在一些实施例中,特定设备SSO范围参数向认证提供商标识客户端正在请求当请求的授权代码由认证服务提供商交换为令牌时的连接器代码(例如,设备密钥(secret)参数)。同样,在图4中示出的示例中,授权服务器408是认证服务提供商。
此外,在使用OIDC时,客户端使用来自RFC 6749的HTTP基本认证方法来认证向令牌端点发出请求的客户端,在图4的示例中,令牌端点由移动应用402和404示出。在一些示例中,移动应用402和404使用用于代码交换的证明密钥(PKCE)作为客户端认证机制。在使用PKCE时,移动应用没有秘密,并且将仅在HTTP授权报头中指定客户端ID(client_id)参数。client_id可以包括与第一移动应用402和第二移动应用404的相同供应商相关联的客户端代码。
如本文所提到的,认证层可以初始被设计为实现本机SSO,或可以是可扩展以实现本机SSO的标准认证层。此外,OIDC可以被用在一些示例性实施例中,并且它是有用的,因为它支持可选特征,例如,身份数据和会话管理的加密以及添加到OIDC认证流的扩展(其可以使得第二移动应用404能够共享第一移动应用402的认证,例如,在两个移动应用都由相同的供应商证书签名时)。
本文的公开内容定义了新范围值,其用于向认证服务提供商(例如,授权服务器408)传达在授权代码被交换为令牌时,除了作为授权请求的一部分标识的其他令牌之外,还将返回新连接器代码(例如或包括新设备密钥参数)。
新范围值可以被定义为特定设备SSO范围参数。在授权请求中存在这类范围值时,在授权代码被交换为令牌时,将返回新连接器代码。
连接器代码(例如或包括新设备密钥参数)包括与托管移动应用的设备(例如,本文描述的移动或客户端设备中的任意一个)相关的数据。连接器代码还可以包括用设备进行认证的用户。连接器代码可以完全从客户端隐藏,并且在这类实施例中,其可以被加密。加密可以用于连接器代码与认证服务提供商之间的通信。在示例中,连接器代码可以利用具有加密(例如,RSA加密)的JSON Web令牌(JWT)。
可以通过共享安全机制(例如,密钥链或密钥库)在能够获得连接器代码的移动应用之间共享连接器代码。如果移动应用请求连接器代码(例如,通过使用至少特定设备SSO范围参数)并且存在连接器代码,则客户端可以基于请求将连接器代码提供给令牌端点(例如,授权服务器408)以将代码交换为令牌。客户端可以在刷新令牌请求(例如,在步骤422和428中实现的刷新令牌请求)期间向令牌端点提供连接器代码。
在步骤414中,充当认证服务提供商的授权服务器408根据在步骤412中发送给它的信息来认证用户、第一移动应用402、和/或系统浏览器406,并且还通过步骤416和417获得针对用户、第一移动应用、和/或系统浏览器的授权。在图4的实施例中,认证和授权发生在系统浏览器406和授权服务器408之间,并且包括步骤414、416和417。具体地,在步骤416中,用户凭证被发送到授权服务器以用于验证。并且,步骤417包括授权服务器408验证用户凭证。
在步骤418中,如图所示,授权服务器408向系统浏览器406发送具有代码的回叫(callback),进而在步骤420中系统浏览器406将具有代码的回叫发送到第一移动应用402。通常,交换代码与回叫一起被发送,并且可以包括在步骤401-417的讨论中提到的各方面信息。
在步骤422中,如图4所示,第一移动应用402将交换代码(其可以是或包括授权代码)发送到授权服务器408以接收令牌。交换代码可以包括客户端标识参数、授予类型参数、和/或范围参数,例如或包括连接器代码(例如,设备密钥参数)。在OIDC的上下文中,在步骤422中,客户端(例如,第一移动设备402)还可以向用户信息(UserInfo)端点(例如,授权服务器408)发送包括访问令牌的请求。
在授权服务器408接收连接器代码时,它可以验证所请求的令牌。如果令牌无效,则必须将其丢弃,并且将请求处理为不具有有效连接器代码。在一些示例中,如果授权请求包括SSO范围参数,则必须在响应中返回连接器代码。然后连接器代码将与所请求的令牌一起被返回。但是,这仅在令牌有效时才会出现。此外,在这类示例中,如果未指定连接器代码,则授权服务器可以生成用于与令牌一起递送的新连接器代码。如果指定了连接器代码并且该连接器代码有效,则授权服务器根据所选择的协议的要求来更新连接器代码。
在步骤424中,授权服务器408返回关于用户、系统浏览器406和/或第一移动应用402的认证信息,例如包括连接器代码。在OIDC的上下文中,授权服务器408充当令牌端点并且返回针对最终用户的令牌。令牌可以包括刷新令牌、访问令牌、ID令牌和连接器代码。
步骤423包括授权服务器确定步骤422的请求是否包括连接器代码或特定于本机SSO的任意类型的范围参数。如果请求中存在连接器代码和/或特定范围参数,则可以在步骤424的通信中发送该代码。在一些实施例中,在步骤423中可以刷新连接器代码和/或特定范围参数。否则,如果请求中不存在连接器代码和/或特定范围参数,则授权服务器408或连接到授权服务器的第二服务器可以生成新连接器代码。
在(例如,步骤412-418中的)经由系统浏览器406的用户认证之后或期间并且在第一移动应用402接收到交换代码(并且在一些实施例中,接收到来自授权服务器408的状态响应)之后,本机SSO扩展定义了用于发送到令牌端点的附加参数,并且这类附加参数可以通过OIDC的授权代码和授予类型参数来实现。如上所述,附加参数中的一个附加参数可以包括连接器代码,例如,设备密钥。
在OIDC的上下文中,如果客户端请求了设备SSO范围并且客户端已经具有可用的连接器代码,则令牌可被提供。如果连接器代码未被指定,则(例如,在步骤423中)新连接器代码将被生成。在这类上下文中,在授权服务器408接收到连接器代码时,其还根据OIDC规范处理授权代码和授予类型参数以及与标识(identification)令牌相关联的其他参数。
其他参数可以包括针对标识令牌(即,‘id_token’)的添加的散列值或函数(例如,‘ds_hash’声明)以表示设备标识符的功能。散列对象或函数可以提供标识令牌和连接器代码之间的绑定。散列函数或对象实现的实际绑定不是由从客户端传递到授权服务器的相应简档指定的。因为该绑定仅由授权服务器或连接到授权服务器的可信第二服务器管理。授权服务器可以确定并且选择如何保护标识令牌和连接器代码之间的关系。散列参数可以被加密。
其他参数还可以包括可以被添加到标识令牌的会话标识参数,该会话标识参数能够表示用户的当前认证会话。会话标识参数可以包括唯一地标识用户的认证会话的字符串。该值可以用于注销流程以及本文描述的一个或多个处理流程。针对没有明确浏览器认证的移动应用,会话标识参数可以表示与刷新令牌(例如,OIDC规范下指定的刷新令牌)相关联的基础会话。会话标识参数可以被加密。
在步骤425中,第一移动应用402、系统浏览器或授权服务器408将令牌与连接器代码一起存储在共享安全机制(例如,密钥链或密钥库)中。共享安全机制可以是托管移动应用的移动设备的一部分。此外,在少数一些示例性的实施例中,共享安全机制可以远离移动设备。
过程400在步骤425之后转到步骤403,步骤403包括使用本机SSO的特定功能来认证第二移动应用404。如图所示,步骤403可以从步骤427开始,如图所示,步骤427包括第二移动应用404从共享安全机制获得存储的(一个或多个)令牌和连接器代码。这发起通过认证层对第二移动应用404的认证。在一些示例性实施例中,认证层由OIDC来实现。
在步骤403中,至少第二移动应用404和授权服务器408使用本机SSO的处理规则来将第一移动设备402的先前认证交换为第二移动应用所请求的新刷新和访问令牌。新刷新和访问令牌可以由相同供应商创建,因为两个应用都可以由相同开发人员密钥进行电子签名。
返回参考步骤427,第二移动应用404从共享安全机制(例如,移动设备密钥链、密钥库等)获得标识令牌和连接器代码(例如,设备密钥参数)。并且,然后基于仅来自步骤427的获得的信息或与来自步骤401(认证第一移动应用)的任一个或多个子步骤的附加信息进行组合,第二移动应用生成本机SSO配置文件(profile)。
本机SSO配置文件使用一组令牌交换参数来部分地实现步骤403。在示例性实施例中,OIDC可以是用于导出配置文件的令牌交换参数的基础。令牌交换参数包括授予类型参数和能够定义返回的令牌的逻辑范围的受众参数。在一些示例中,受众参数是发布在配置文件中使用的标识令牌的OIDC提供商的发布商URI。例如,受众参数是授权服务器408的URI。
配置文件的令牌交换参数还包括主题令牌(subject token),该主题令牌可以包括由第一移动应用402获得的标识令牌。在使用OIDC的一些实施例中,标识令牌以与OIDC的id_token_hint相同的方式被使用。如果第一应用被注销,则标识令牌可以标识针对SSO的用户以用于调用第二移动应用404以及第一移动应用402。配置文件的令牌交换参数还可以包括主题类型令牌,例如,OIDC的subject_token_type。
配置文件的令牌交换参数还包括行动者令牌(actor token)。行动者令牌定义做出请求的行动者。例如,做出请求的行动者可以是与连接器代码相关联的特定移动设备。在这类情况下,包括在行动者令牌中的连接器代码包括或是设备密钥参数。行动者也可以是第二移动应用404和/或托管第二应用的系统浏览器,并且行动者令牌的连接器代码被发布以供设备和/或移动应用或系统浏览器(这依赖于请求令牌的行动者)调用本机SSO。在一些示例中,交换参数还包括行动者类型令牌,例如,OIDC Actor_token_type参数。配置文件的令牌交换参数还包括范围参数。范围参数可以定义做出请求的移动应用所需的范围。在步骤403下的步骤的情况下,做出请求的移动应用是第二移动应用404。
在使用OIDC的实施例中,可以从配置文件中明确地省略requested_token_type(所请求的令牌类型)参数。
在步骤428中,如图所示,第二移动应用404充当从(充当认证服务提供商的)授权服务器408请求认证的客户端。例如,OIDC格式化请求可以从第二移动应用404被发送到授权服务器408。在步骤428处发送的请求通信可以包括配置文件的令牌交换参数。
在步骤429中,在授权服务器408接收到在步骤428中从第二移动应用404发送的通信时,其可以验证所请求的相应令牌。如果令牌无效,则必须将其丢弃,并且将请求处理为不具有有效连接器代码。
在步骤430中,授权服务器408返回关于用户和/或第二移动应用404的认证信息,例如包括连接器代码。在OIDC的上下文中,授权服务器408再次充当令牌端点,并且使用本机SSO并基于本机SSO配置文件返回关于用户的索求(claim)。索求可以包括刷新令牌、访问令牌、标识令牌和连接器代码。
步骤429可以包括授权服务器确定配置文件的令牌交换参数是否包括特定于本机SSO的有效范围参数或有效连接器代码。如果令牌交换参数中存在有效连接器代码和/或特定范围参数,则可以在步骤430中在去往第二移动应用404的通信中发送该参数。在一些实施例中,在步骤429中可以刷新连接器代码和/或特定范围参数。否则,如果在配置文件的令牌交换参数中不存在有效连接器代码和/或特定范围参数,则在步骤429中可以由授权服务器408或连接到授权服务器的第二服务器生成新连接器代码和/或特定范围参数。
本质上,步骤428包括由第二移动应用利用本机SSO配置文件来调用令牌端点,以用于通过传递从共享安全机制和/或共享设备存储装置获得的标识令牌以及配置文件的其他参数(例如,连接器代码)来进行令牌交换。步骤429包括验证在步骤428中传送给授权服务器408的信息。实质上,在步骤429,授权服务器408充当令牌端点。并且,最后,在步骤430中,授权服务器408或可能另一令牌端点返回SSO生成的刷新和访问令牌以通过本机SSO调用第二移动应用404。这些刷新和访问令牌至少可以包括连接器代码,或与连接器代码相关联。通常,根据针对本机SSO的令牌交换请求的大多数实施例,在移动应用想要请求本机SSO(例如,获得已经登录的用户的刷新和访问令牌)时,其做出标准认证层和端点请求,然后生成本机SSO配置文件以用于进行本文定义的令牌交换。这类请求中的客户端标识参数可以简单地通过HTTP基本认证方法使用HTTP授权报头来发送。
在一些实施例中,步骤429可以包括验证连接器代码、验证用户和/或应用402和404或系统浏览器406中的一个或多个的会话、以及验证客户端标识令牌。在授权服务器408在令牌端点处接收到符合本机SSO配置文件的请求时,其通常在发布任何令牌之前执行一系列检查。
在一些特定实施例中,在发布任何令牌之前的检查可以包括验证连接器代码以确保令牌仍然有效。连接器代码的格式可以由授权服务器408定义。检查还可以包括验证标识令牌和连接器代码之间的绑定,如在标准令牌响应(例如,标准OIDC令牌响应)的扩展中所定义的。
检查还可以包括验证标识令牌中的会话标识令牌是否有效。如果会话不再有效,则授权服务器408可以返回错误消息。
检查还可以包括验证请求本机SSO的客户端(例如,第二移动应用404)是否被授权进行这类请求。这类授权可以通过步骤427和428发生。授权服务器408可以维护能够共享用户和/或移动应用认证的客户端标识的列表。例如,授权服务器可以使用来自标识令牌的受众参数和来自令牌请求的客户端标识,并且使用这类信息来验证客户端标识(例如,移动应用402和404的客户端标识)是否被允许共享用户认证。
检查还可以包括验证客户端在令牌请求中请求的范围(默认范围或在可选范围参数中明确指定的范围)是否不需要明确的用户同意(例如,通过用户登录界面)。如果任何请求的范围需要明确的用户同意,则授权服务器可能会使本机SSO的请求失败,并且返回指示缺少请求的范围或请求的范围无效的错误消息。
在一些实施例中,基于授权服务器408提供的连接器代码的定义,授权可以执行添加检查以确保请求的安全性。如果满足本机SSO配置文件的上述标准,则授权服务器408可以发布令牌响应对象,该令牌响应对象包括发布给做出请求的移动应用的客户端标识(例如,第二移动应用404的标识)的刷新令牌、访问令牌和标识令牌。与新刷新令牌相关联的会话可以与用于验证本机SSO的有效性的会话相同。如果该会话到期,则在步骤429处,例如由授权服务器408使与会话相关联的所有刷新令牌无效。作为标识令牌的替代,授权服务器408或相关联的第二服务器可以添加所请求的令牌类型参数,并且返回标识令牌的值。
在这类实施例中,在步骤430中,针对配置文件的令牌交换响应可以包括某些特征。响应可以包括访问参数,该访问参数包括发布到由授权报头中发送的客户端标识所标识的移动客户端的访问令牌。响应还可以包括发布的令牌类型参数,该令牌类型参数包括某个预选择的值,包括访问令牌的值。响应还可以包括令牌类型,例如其是承载者。响应还可以包括访问令牌何时到期的指示。响应还可以包括遵循本机SSO标准的范围参数。响应还可以包括刷新令牌,在响应中指示的访问令牌到期时,移动应用可以使用该刷新令牌来获得额外的访问令牌。响应还包括连接器代码,该连接器代码可以是或包括设备密钥参数,并且可以是新的或更新的连接器代码。在例如通过OIDC实现的那些实施例中,如果响应的任何参数无效,则授权服务器可以用相应错误消息通知用户。
转到图5,过程500详细描述了根据本公开的一些实施例执行的用于允许第一移动应用与第二移动应用共享身份和/或认证的步骤。在第一和第二应用由相同供应商发布时,过程500特别有用。此外,过程500可以包括图4中示出的一些步骤。
过程500的步骤502-506由第一移动应用和/或系统浏览器(例如,图2、图3或图4的第一移动应用以及图2或图4的系统浏览器)执行。过程500的步骤508-512和516由第二移动应用和/或系统浏览器(例如,图2、图3或图4的第二移动应用以及图2或图4的系统浏览器)执行。过程500从步骤502开始,步骤502包括第一移动应用和/或系统浏览器请求授权服务器返回连接器代码。在一些示例实施例中,该连接器代码对于特定移动设备(例如,托管第一和第二移动应用的特定移动设备)是唯一的。
在步骤504中,第一移动应用和/或系统浏览器从授权服务器或第二服务器接收连接器代码以及至少一个令牌。在请求有效时,授权服务器返回这类代码和令牌。请求可以是有效的一种方式是,请求包括标识第一移动应用是由特定供应商分发的代码或一些其他形式的凭证。在一些实施例中,至少一个令牌标识登录到第一移动应用的用户。
在步骤506中,第一移动应用和/或系统浏览器在共享安全机制中存储至少一个令牌和连接器代码。共享安全机制可以包括密钥链或密钥库。
在步骤508中,第二移动应用和/或系统浏览器在共享安全机制中搜索至少一个令牌。
在步骤510中,第二移动应用和/或系统浏览器使用配置文件来基于至少一个令牌和连接器代码来获得针对第二移动应用的令牌。为了使配置文件有效,在一些实施例中,第二移动应用必须被标识为由与第一移动应用相同的供应商分发。此外,在示例性实施例中,配置文件是第二应用和授权服务器之间的令牌交换的配置文件。
在第一和第二应用是或必须由相同供应商发布的示例实施例中,过程500还可以包括通过配置文件向授权服务器提供至少一个令牌、连接器代码和与第一移动应用和第二移动应用的相同供应商相关联的客户端代码。然后,授权服务器可以检查这些参数以验证配置文件。
在步骤512中,第二移动应用询问用户以确定用户是否接受将至少一个令牌与第二移动应用一起使用。
在步骤514中,第二移动应用和/或系统浏览器确定用户是否接受将至少一个令牌与第二移动应用一起使用。如果用户不接受将至少一个令牌与第二移动应用一起使用,则第二移动应用和/或系统浏览器提供针对第二移动应用的单独登录界面。如果用户确实接受将至少一个令牌与第二移动应用一起使用,则过程500移动到步骤516。
在步骤516中,第二移动应用和/或系统浏览器使用配置文件来获得针对第二移动应用的令牌。在示例性实施例中,令牌必须由授权服务器验证(例如,在第一和第二应用来自相同供应商时,验证服务器可以验证有效配置文件)。当存在针对第一和第二移动应用的有效令牌时,用户分别保持登录到两个应用,而不必使用针对第二移动应用的单独登录界面来登录到第二移动应用。此时,已经实现本机SSO。
图5中未示出,一旦第一和第二移动应用使用有效令牌登录,则第一或第二应用和/或系统浏览器可以请求授权服务器返回第二连接器代码,从而接收来自授权服务器或第二服务器等的第二连接器代码以及至少一个令牌,使得第三移动应用和/或系统浏览器可以使用配置文件来基于至少一个令牌和第二连接器代码获得针对第三移动应用的令牌。在示例性实施例中,第二连接器代码替换第一连接器代码。然后,针对第三移动应用基本上重复步骤512-516。并且,如果这些应用共享共同身份(例如,相同的供应商身份),则可以对附加移动应用重复这些步骤。
如果其中一个应用的相应令牌不可用,则在步骤520处,用户可以从相应移动应用注销。然后,如果用户注销,则用户可以在步骤530处登录到移动应用(例如,通过使用针对移动应用的相应登录界面)。一旦用户登录到本机SSO下的一个移动应用,则该应用可以被认为是第一移动应用,并且可以针对本机SSO下的另一移动应用(例如,第二移动应用)重复过程500。
转到图6,过程600详细描述了根据本公开的一些实施例执行的用于允许第一移动应用与第二移动应用共享身份和/或认证的步骤。在第一和第二应用由相同供应商发布时,过程600特别有用,但这不是必需的。此外,过程600可以包括图4中示出的一些步骤。过程600还可以与过程500组合,其中来自过程500的(一个或多个)行动者可以与过程600的(一个或多个)行动者进行交互。过程400是包括过程500和过程600的组合的特定实现方式的示例过程。
过程600的步骤602-606和610-612由授权服务器(例如,图1、图3或图4的授权服务器)、第二服务器(例如,具有授权能力的第二服务器)、或其一些组合来执行。步骤608可以由(一个或多个)服务器或由第二移动应用(例如,图2、图3或图4的第二移动应用)和/或系统浏览器(例如,图2或图4的系统浏览器)来执行。过程600从步骤602开始,步骤602包括(一个或多个)服务器接收来自第一移动应用(或移动设备的系统浏览器)的返回连接器代码的请求。在一些示例实施例中,连接器代码对于特定移动设备(例如,托管第一和第二移动应用的特定移动设备)是唯一的。
在步骤604中,(一个或多个)服务器将来自第一移动应用(或浏览器)的请求中的授权代码交换为至少一个令牌。在一些实施例中,至少一个令牌标识登录到第一移动应用的用户。
在步骤606中,(一个或多个)服务器将连接器代码与至少一个令牌一起返回给第一移动应用(或浏览器)。
在步骤608中,(一个或多个)服务器或第二移动应用和/或系统浏览器确定用户是否接受将至少一个令牌与第二移动应用一起使用。在(一个或多个)服务器未执行步骤608处的确定的情况下,(一个或多个)服务器至少从应用和/或系统浏览器接收这种确定。如果用户不接受将至少一个令牌与第二移动应用一起使用,则第二移动应用和/或系统浏览器提供针对第二移动应用的单独登录界面。如果用户确实接受将至少一个令牌与第二移动应用一起使用,则过程600移动到步骤610。
在步骤610中,(一个或多个)服务器使用配置文件来基于至少一个令牌和连接器代码生成针对第二移动应用的令牌。在示例性实施例中,步骤610包括(一个或多个)服务器验证令牌。在示例性实施例中,在第一和第二应用来自相同供应商时,可以由(一个或多个)服务器验证配置文件。
在步骤612中,(一个或多个)服务器将针对第二移动应用的令牌发送到第二移动应用(或浏览器),使得用户例如自动登录到第二移动应用,而无需通过针对第二个移动应用的登录界面进行登录。当存在针对第一和第二移动应用的有效令牌时,用户分别保持登录到两个应用,而不必使用针对第二移动应用的单独登录界面来登录到第二移动应用。此时,已经实现本机SSO。
图6中未示出,一旦第一和第二移动应用使用有效令牌登录,并且在从第一或第二应用和/或系统浏览器接收到请求(类似于步骤602)以及发生与步骤604的交换类似的交换之后,(一个或多个)服务器可以向(一个或多个)请求行动者返回第二连接器代码,使得那些(一个或多个)行动者从(一个或多个)服务器等接收第二连接器代码以及至少一个令牌,使得第三移动应用和/或系统浏览器可以使用配置文件来基于至少一个令牌和第二连接器代码来获得针对第三移动应用的令牌。实质上,针对第三移动应用重复步骤606-612。并且,如果这些应用共享共同身份(例如,相同的供应商身份),则可以对附加移动应用重复这些步骤。
如果其中一个应用的相应令牌不可用,则在步骤620处,用户可以从相应移动应用注销。然后,如果用户注销,则用户可以在步骤630处登录到移动应用(例如,通过使用针对移动应用的相应登录界面)。一旦用户登录到本机SSO下的一个移动应用,则该应用可以被认为是第一移动应用,并且可以针对本机SSO下的另一移动应用(例如,第二移动应用)重复过程600。
出于本公开的目的,模块是(在有或没有人类交互或增强的情况下)执行或促进本文描述的过程、特征和/或功能的软件、硬件或固件(或其组合)系统、过程或功能、或其组件。模块可以包括子模块。模块的软件组件可以被存储在计算机可读介质上以供处理器执行。模块可以被集成到一个或多个服务器,或者由一个或多个服务器加载和执行。可以将一个或多个模块分组为引擎或应用。
出于本公开的目的,术语“用户”、“订户”、“消费者”或“客户”应当被理解为指代如本文所述的一个或多个应用的用户和/或由数据提供商提供的数据的消费者。通过示例而非限制的方式,术语“用户”或“订户”可以指代在浏览器会话中通过互联网接收由数据或服务提供商提供的数据的人,或者可以指代接收数据并存储或处理数据的自动化软件应用。
本领域技术人员将认识到,本公开的方法和系统可以以许多方式实现,并且因此不受前述示例性实施例和示例的限制。换句话说,由单个或多个组件、在硬件和软件或固件的各种组合中、以及各个功能执行的功能元件可以在客户端等级或服务器等级或两者分布在软件应用中。在这方面,任何数目的本文描述的不同实施例的特征可以被组合成单个或多个实施例,并且具有少于或多于本文描述的所有特征的替代实施例是可能的。
功能也可以以现在已知的或变为已知的方式全部地或部分地分布在多个组件中。因此,无数的软件/硬件/固件组合可以实现本文描述的功能、特征、接口和偏好。此外,本公开的范围涵盖用于执行所描述的特征和功能和接口的传统的已知方式,以及可以对本文描述的硬件或软件或固件组件做出的那些变化和修改,如现在和将来的本领域技术人员将理解的。
此外,通过示例的方式提供了在本公开中被呈现和描述为流程图的方法的实施例,以便提供对本技术的更完整的理解。所公开的方法不限于本文呈现的操作和逻辑流程。预期到替代实施例,其中,改变了各种操作的顺序,并且其中,被描述为作为较大操作的一部分的子操作被独立执行。
尽管已经出于本公开的目的描述了各种实施例,但是不应认为这些实施例将本公开的教导限制于那些实施例。可以对上述元件和操作进行各种改变和修改,以获得保持在本公开中描述的系统和过程的范围内的结果。