CN110213321A - 互联网应用中提供第三方服务的方法、装置及电子设备 - Google Patents
互联网应用中提供第三方服务的方法、装置及电子设备 Download PDFInfo
- Publication number
- CN110213321A CN110213321A CN201910044756.9A CN201910044756A CN110213321A CN 110213321 A CN110213321 A CN 110213321A CN 201910044756 A CN201910044756 A CN 201910044756A CN 110213321 A CN110213321 A CN 110213321A
- Authority
- CN
- China
- Prior art keywords
- page
- operation requests
- service
- party
- server
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer And Data Communications (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明实施例提供了一种互联网应用中提供第三方服务的方法、装置及电子设备,该方法包括:接收第一操作请求,第一操作请求是第一页面的页面获取请求或是通过第一页面接收到的页面操作请求,第一页面为客户端所对应的主服务器提供的主服务的页面;若第一操作请求是页面获取请求且所请求的页面内容包括需要由第三方服务器提供的页面内容,或者是页面操作请求且是需要由第三方服务器处理的请求,则将第二操作请求发送至第三方服务器,第二操作请求与第一操作请求相对应;接收第三方服务器基于第二操作请求返回的处理结果,并显示到第二页面,第二页面为第三方服务器提供的第三方服务的页面。通过该方案,能够使用户获得更好的使用体验。
Description
技术领域
本发明涉及通信技术领域,具体涉及一种互联网应用中提供第三方服务的方法、装置及电子设备。
背景技术
随着互联网技术的快速发展,Web(互联网)服务厂商(如云服务厂商)为了更好的满足业务、市场等需求,有些情况下,web服务厂商考虑到开发周期、人力成本等多方面原因的考虑,对一些服务功能并不自行开发,而是需要集成第三方企业的现成方案,即在自身提供的服务中集成第三方服务,并包装为厂商的自有服务提供给服务的使用者。
现有技术中,对于集成有第三方服务的服务,一般都是需要使用者在进入到Web服务厂商提供的服务后才能够访问到第三方服务,访问方式比较单一,不够灵活,使用者体验较差。
发明内容
针对现有技术中存在的缺陷,本发明实施例的目的在于提供了一种互联网应用中提供第三方服务的方法、装置及电子设备,以提升Web服务使用者的使用体验。为实现该目的,本发明实施例提供的技术方案如下:
第一方面,本发明提供了一种互联网应用中提供第三方服务的方法,该方法由客户端执行,包括:
接收第一操作请求,其中,第一操作请求是第一页面的页面获取请求,或者是通过第一页面接收到的页面操作请求,第一页面为主服务的页面,主服务为客户端所对应的主服务器提供的服务;
若第一操作请求是页面获取请求且所请求的页面内容包括需要由第三方服务器提供的页面内容,或者,第一操作请求是页面操作请求且是需要由第三方服务器处理的请求,则将第二操作请求发送至第三方服务器,第二操作请求与第一操作请求相对应;
接收第三方服务器基于第二操作请求返回的处理结果,并将处理结果显示到第二页面,第二页面为第三方服务器提供的第三方服务的页面。
在第一方面的可选实施方式中,第二页面为第一页面的嵌入页面。
在第一方面的可选实施方式中,将第二操作请求发送到第三方服务器之前,还包括:
向主服务器发送第一授权请求,以使主服务器根据第一授权请求生成第一授权信息,第一授权信息用于第三方服务器对客户端进行鉴权;
接收主服务器返回的第一授权信息;
其中,第二操作请求中还包括第一授权信息,处理结果为第三方服务器根据第一授权信息对客户端进行鉴权且鉴权通过后,对第二操作请求进行相应处理后的结果;
或者还包括,
生成第二授权信息,第二授权信息用于主服务器对客户端进行鉴权;
第二操作请求中还包括第二授权信息,处理结果为第三方服务器将第二授权信息发送给主服务器,并接收到主服务器基于第二授权信息返回的鉴权通过信息后,对第二操作请求进行相应处理后的结果。
在第一方面的可选实施方式中,若第三方服务是由第一服务器授权给主服务器的服务,将第二操作请求发送到第三方服务器之前,还包括:
向主服务器发送第二授权请求,以使主服务器根据第二授权请求生成第三授权信息,第三授权信息用于第一服务器对客户端进行鉴权;
接收主服务器返回的第三授权信息;
第二操作请求中还包括第三授权信息,处理结果为第三方服务器将第三授权信息发送给第一服务器,并接收到第一服务器基于第三授权信息返回的鉴权通过信息后,对第二操作请求进行相应处理后的结果。
在第一方面的可选实施方式中,若第一操作请求是页面操作请求,且第三方服务器对第二操作请求的处理需要依赖于第一页面中的相关信息,第二操作请求中还包括用于获取相关信息的信息。
在第一方面的可选实施方式中,主服务器为主服务的主服务提供商的第二服务器,第三方服务器为主服务提供商的第三服务器,和/或,第二页面的URL(UniformResource Locator,统一资源定位符)中的域名是由主服务提供商提供的域名,和/或,URL中的域名与第一页面的域名属于不同域,和/或,URL中的域名中的主域名与第一页面的域名中的主域名相同。
第二方面,本发明提供了一种互联网应用中提供第三方服务的方法,该方法由第三方服务器执行,第三方服务器为提供第三方服务的服务器,该方法包括:
接收客户端发送的第二操作请求,第二操作请求为客户端基于接收到的第一操作请求生成的请求,第一操作请求为第一页面的页面获取请求,或者为客户端通过第一页面接收到的页面操作请求,第一页面为主服务的页面,主服务为客户端所对应的主服务器提供的服务;
对第二操作请求进行相应的处理,并将处理结果发送至客户端,以使客户端将处理结果显示在第二页面,第二页面为第三方服务器提供的第三方服务的页面。
在第二方面的可选实施方式中,第二页面为第一页面的嵌入页面。
在第二方面的可选实施方式中,第二操作请求中还包括第一授权信息或第二授权信息,第一授权信息为客户端通过向主服务器发送第一授权请求获取到的信息,第一授权信息用于第三方服务器对客户端进行鉴权,第二授权信息为客户端生成的信息,第二授权信息用于主服务器对客户端进行鉴权;
若第二操作请求中包括第一授权信息,对第二操作请求进行相应的处理,包括:
根据第一授权信息对客户端进行鉴权,若鉴权通过,则对第二操作请求进行相应的处理;
若第二操作请求中包括第二授权信息,对第二操作请求进行相应的处理,包括:
将第二授权信息发送给主服务器,以使主服务器基于第二授权信息对客户端进行鉴权;
接收主服务器返回的对客户端的鉴权结果,若鉴权通过,则对第二操作请求进行相应的处理。
在第二方面的可选实施方式中,若第三方服务是由第一服务器授权给主服务器的服务,第二操作请求中还包括第三授权信息,第三授权信息为客户端通过向主服务器发送第二授权请求获取到的信息,第三授权信息用于第一服务器对客户端进行鉴权;
对第二操作请求进行相应的处理,包括:
将第三授权信息发送给第一服务器,以使第一服务器根据第三授权信息对客户端进行鉴权;
接收第一服务器返回的对客户端的鉴权结果,若鉴权通过,则对第二操作请求进行相应的处理。
在第二方面的可选实施方式中,该方法还包括:
接收客户端发送的第三操作请求,第三操作请求为客户端通过第二页面接收到的请求;
若第三操作请求是需要由第三方服务器和主服务器共同处理的请求,则将第四操作请求发送给主服务器,其中,第四操作请求是基于第三操作请求中需要由主服务器处理的请求生成的请求;
接收主服务器基于第四操作请求返回的第一响应信息
根据第一响应信息和第三操作请求中需要由第三方服务器处理的请求,进行相应的处理;
将处理后的结果发送至客户端,以使客户端将处理后的结果显示在第二页面;
若第三操作请求是需要由主服务器处理的请求,则将第五操作请求发送给主服务器,接收主服务器基于第五操作请求返回的第二响应信息,第五操作请求包括第三操作请求;
将第二响应信息发送给客户端,以使客户端将第二响应信息显示在第二页面。
在第二方面的可选实施方式中,第二操作请求中还包括客户端的客户端标识,客户端标识为主服务器为客户端分配的标识,第四操作请求或第五操作请求中包括客户端标识。
在第二方面的可选实施方式中,该方法还包括:
将第一操作请求的相关操作信息发送给主服务器。
第三方面,本发明提供了一种互联网应用中提供第三方服务的装置,该装置包括:
操作请求接收模块,用于接收第一操作请求,其中,第一操作请求是第一页面的页面获取请求,或者是通过第一页面接收到的页面操作请求,第一页面为主服务的页面,主服务为客户端所对应的主服务器提供的服务;
操作请求处理模块,用于在第一操作请求是页面获取请求且所请求的页面内容包括需要由第三方服务器提供的页面内容,或者,第一操作请求是页面操作请求且第一操作请求是需要由第三方服务器处理的请求时,将第二操作请求发送至第三方服务器,第二操作请求与第一操作请求相对应;
处理结果显示模块,用于接收第三方服务器基于第二操作请求返回的处理结果,并将处理结果显示到第二页面,第二页面为第三方服务器提供的第三方服务的页面。
在第三方面的可选实施方式中,第二页面为第一页面的嵌入页面。
在第三方面的可选实施方式中,操作请求处理模块在将第二操作请求发送到第三方服务器之前,还用于:
向主服务器发送第一授权请求,以使主服务器根据第一授权请求生成第一授权信息,第一授权信息用于第三方服务器对客户端进行鉴权;
接收主服务器返回的第一授权信息;
其中,第二操作请求中还包括第一授权信息,处理结果为第三方服务器根据第一授权信息对客户端进行鉴权且鉴权通过后,对第二操作请求进行相应处理后的结果。
在第三方面的可选实施方式中,操作请求处理模块还用于:
生成第二授权信息,第二授权信息用于主服务器对客户端进行鉴权;
第二操作请求中还包括第二授权信息,处理结果为第三方服务器将第二授权信息发送给主服务器,并接收到主服务器基于第二授权信息返回的鉴权通过信息后,对第二操作请求进行相应处理后的结果。
在第三方面的可选实施方式中,若第三方服务是由第一服务器授权给主服务器的服务,操作请求处理模块在将第二操作请求发送到第三方服务器之前,还用于:
向主服务器发送第二授权请求,以使主服务器根据第二授权请求生成第三授权信息,第三授权信息用于第一服务器对客户端进行鉴权;
接收主服务器返回的第三授权信息;
第二操作请求中还包括第三授权信息,处理结果为第三方服务器将第三授权信息发送给第一服务器,并接收到第一服务器基于第三授权信息返回的鉴权通过信息后,对第二操作请求进行相应处理后的结果。
在第三方面的可选实施方式中,若第一操作请求是页面操作请求,且第三方服务器对第一操作请求的处理需要依赖于第一页面中的相关信息,第二操作请求中还包括用于获取相关信息的信息。
在第三方面的可选实施方式中,主服务器为主服务的主服务提供商的第二服务器,第三方服务器为主服务提供商的第三服务器,和/或,第二页面的URL中的域名是由主服务提供商提供的域名,和/或,URL中的域名与第一页面的域名属于不同域,和/或,URL中的域名中的主域名与第一页面的域名中的主域名相同。
第四方面,本发明提供了一种互联网应用中提供第三方服务的装置,该装置包括:
操作请求接收模块,用于接收客户端发送的第二操作请求,第二操作请求为客户端基于接收到的第一操作请求生成的请求,第一操作请求为第一页面的页面获取请求,或者为客户端通过第一页面接收到的页面操作请求,第一页面为主服务的页面,主服务为客户端所对应的主服务器提供的服务;
操作请求处理模块,用于对第二操作请求进行相应的处理,并将处理结果发送至客户端,以使客户端将处理结果显示在第二页面,第二页面为第三方服务器提供的第三方服务的页面。
在第四方面的可选实施方式中,第二页面为第一页面的嵌入页面。
在第四方面的可选实施方式中,第二操作请求中还包括第一授权信息或第二授权信息,第一授权信息为客户端通过向主服务器发送第一授权请求获取到的信息,第一授权信息用于第三方服务器对客户端进行鉴权,第二授权信息为客户端生成的信息,第二授权信息用于主服务器对客户端进行鉴权;
若第二操作请求中包括第一授权信息,操作请求处理模块在对第二操作请求进行相应的处理时用于:
根据第一授权信息对客户端进行鉴权,若鉴权通过,则对第二操作请求进行相应的处理;
若第二操作请求中包括第二授权信息,操作请求处理模块在对第二操作请求进行相应的处理时用于:
将第二授权信息发送给主服务器,以使主服务器基于第二授权信息对客户端进行鉴权;
接收主服务器返回的对客户端的鉴权结果,若鉴权通过,则对第二操作请求进行相应的处理。
在第四方面的可选实施方式中,若第三方服务是由第一服务器授权给主服务器的服务,第二操作请求中还包括第三授权信息,第三授权信息为客户端通过向主服务器发送第二授权请求获取到的信息,第三授权信息用于第一服务器对客户端进行鉴权;操作请求处理模块在对第二操作请求进行相应的处理时用于:
将第三授权信息发送给第一服务器,以使第一服务器根据第三授权信息对客户端进行鉴权;
接收第一服务器返回的对客户端的鉴权结果,若鉴权通过,则对第二操作请求进行相应的处理。
在第四方面的可选实施方式中,操作请求接收模块还用于:
接收客户端发送的第三操作请求,第三操作请求为客户端通过第二页面接收到的请求;
操作请求处理模块还用于:
在第三操作请求是需要由第三方服务器和主服务器共同处理的请求,则将第四操作请求发送给主服务器,其中,第四操作请求是基于第三操作请求中需要由主服务器处理的请求生成的请求;
接收主服务器基于第四操作请求返回的第一响应信息,
根据第一响应信息和第三操作请求中需要由第三方服务器处理的请求,进行相应的处理;
将处理后的结果发送至客户端,以使客户端将处理后的结果显示在第二页面;
在第三操作请求是需要由主服务器处理的请求时,将第五操作请求发送给主服务器,接收主服务器基于第五操作请求返回的第二响应信息,第五操作请求包括第三操作请求;
将第二响应信息发送给客户端,以使客户端将第二响应信息显示在第二页面。
在第四方面的可选实施方式中,第二操作请求中还包括客户端的客户端标识,客户端标识为主服务器为客户端分配的标识,第四操作请求或第五操作请求中包括客户端标识。
在第四方面的可选实施方式中,操作请求处理模块还用于:
将第一操作请求的相关操作信息发送给主服务器。
第五方面,本发明提供了一种电子设备,该电子设备包括处理器和存储器;存储器中存储有可读指令,可读指令由处理器加载并执行时,实现如本发明的第一方面、第一方面的任一可选实施方式、第二方面、或第二方面的任一可选实施方式中所示的提供第三方服务的方法。
第六方面,本申请提供了一种计算机可读存储介质,该存储介质中存储有可读指令,可读指令由处理器加载并执行时,实现如本发明的第一方面、第一方面的任一可选实施方式、第二方面、或第二方面的任一可选实施方式中所示的提供第三方服务的方法。
本发明实施例提供的技术方案带来的有益效果是:本发明实施例所提供的互联网应用中提供第三方服务的方法,能够使主服务的用户通过直接发起页面获取请求或通过主服务的页面发起操作请求的方式,访问主服务中集成第三方服务,与现有技术相比,本发明的方案,为用户提供了更加灵活的第三方服务的访问方式,能够让用户获得更好的使用体验。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对本发明实施例描述中所需要使用的附图作简单地介绍。
图1示出了两种提供Web服务的形式的示意图;
图2示出了现有的访问第三方服务的方法的示意图;
图3示出了本发明实施例提供的一种互联网应用中提供第三方服务的方法的流程示意图;
图4示出了本发明一示例中一种在主服务页面中嵌入第三方服务页面的示意图;
图5示出了本发明实施例中基于从主服务器获取的第一授权信息访问第三方服务的方式的示意图;
图6示出了本发明一示例中访问第三方服务的方式的示意图;
图7示出了本发明实施例中基于从主服务器获取的第三授权信息访问第三方服务的方式的示意图;
图8示出了本发明一示例中在开发者页面嵌入第三方服务页面的示意图;
图9示出了本发明实施例中提供的一种互联网应用中提供第三方服务的方法的流程示意图;
图10示出了本发明一示例中向主服务器发送操作请求的流程示意图;
图11示出了本发明实施例中提供的一种互联网应用中提供第三方服务的装置的结构示意图;
图12示出了本发明实施例中提供的一种互联网应用中提供第三方服务的装置的结构示意图;
图13示出了适用于本发明实施例的方案的一种电子设备的结构示意图。
具体实施方式
为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而非全部实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
下面以具体地实施例对本发明的技术方案以及本发明的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本发明的实施例进行描述。
首先对本发明实施例中所涉及到的一些技术用语进行说明。
开发者:云服务的直接使用者,即云服务厂商的客户。开发者可以基于云服务开发自己的互联网服务,再提供给普通互联网用户(或特定的用户群体),开发者一般是企业,也可以是个人。
开发者ID(账号):由云服务厂商为开发者分配,用于唯一标识开发者。
用户:互联网产品用户,对于云服务厂商而言,用户可以是上述开发者(企业用户或个人用户),对于开发者而言,用户是指开发者所提供的互联网服务的直接使用者,也是云服务的间接使用者。
控制台:云服务厂商会为开发者提供基于Web技术的服务即Web服务(Webservice),开发者使用其在云服务厂商注册的账号,通过浏览器登录该服务,可以方便、形象地操作各种云服务,所以称为控制台。控制台提供的具体功能因云服务厂商而异,常见的有:账号管理、费用管理、购买云服务、配置或使用所购买的云服务等等。比如,腾讯云的控制台链接是:https://console.qcloud.com。
云API(应用程序编程接口,Application Programming Interface):云服务厂商会为开发者提供接口(API)形式的服务,一般是基于HTTP(S)协议,使开发者可以通过API接口操作各种云服务。如腾讯云的云API的相关说明的链接可参见:https://cloud.tencent.com/product/api。
云APIID:由云服务厂商分配给开发者,用于API请求鉴权。一个云APIID对应一个开发者,一个开发者可以有多个云APIID。开发者发起云API请求时需要携带云APIID,以便云服务厂商能够识别出是来自哪个开发者的请求。如腾讯云的云APIID为API SecretId,其相关说明的链接可参加:https://cloud.tencent.com/document/api/213/15693。
云API密钥:为了保证API请求的安全性,需要对请求内容进行加密。云服务厂商给开发者分配云APIID时,会同时分配云API密钥。云APIID和云API密钥是一一配对的。开发者发起云API请求时需要按照云服务厂商指定的方法,使用密钥对请求内容进行加密。如腾讯云的云API密钥为云API SecretKey,其相关说明的链接可参见:https://cloud.tencent.com/document/api/213/15693。
视频点播服务:云服务厂商提供的一种服务,一般包括视频转码、视频编辑、添加水印、截图、内容审核等等。比如腾讯云的视频点播服务,其相关说明链接可参见:https://cloud.tencent.com/product/vod。
第三方服务:有时候云服务厂商需要为开发者提供某项服务,但因技术、成本、工期等因素不适合自行开发,因此会向其它有能力提供该项服务(或服务的关键组件)的企业购买服务(或组件),然后包装为自有云服务提供给开发者。这项服务的原始提供方是第三方,因此称为第三方服务。
云服务器:云服务厂商使用计算机虚拟化技术,将实体的物理计算机抽象为一台或多台虚拟计算机,并出售给开发者使用。从开发者的角度看,自己使用的机器和实体物理计算机并无显著差异。比如腾讯云的云服务器,其相关说明链接可参见:https://cloud.tencent.com/product/cvm。
本发明实施例中还提供另一种可选的鉴权方案,即下文中所描述的私有鉴权方案,该私有鉴权方案可以作为下文所涉及的任一需要进行鉴权处理时的可选方式。现在首先对该私有鉴权方案的原理进行说明。
用户通过客户端向服务器发起请求时,为了实现对访问安全的控制,服务器通常都需要对客户端进行鉴权,以判断用户是否拥有访问服务器的权利。例如,开发者对云服务发起网络请求时,开发者就需要按照云服务厂商的要求对网络请求进行加密,然后由云服务厂商对加密内容进行校验,以确认该请求的来源是真实有效的,这个过程为鉴权。本发明实施例中所提供的私有鉴权方案的原理如下:
·请求方和服务方约定一个密钥(相当于腾讯云鉴权方案中的SecretKey),称为Key(假设其值为字符串“ThisIsKey”);
·每个请求都需要带若干参数,以表明该请求的具体内容。常见的参数有当前时间Time(假设其值为1533210698,即北京时间2018-08-0219:51:38的Unix时间戳形式)、随机数Random(假设其值为3427507)、若干与具体API业务功能相关的参数(由实际的业务需求决定),比如,有一个标识视频文件的参数FileId(假设其值为12345678);
·将上述三个参数的值按照各自参数名的英文字典序升序排列,依次为FileId、Random和Time,将排序后的三个参数的值以字符串的形式拼接在一起,得到“1234567834275071533210698”;
·将密钥Key拼接在上一步结果的前面,得到明文字符串:“ThisIsKey1234567834275071533210698”;
·将明文字符串进行MD5(Message-Digest Algorithm,消息摘要算法)运算(该示例中计算结果中字母使用小写),得到密文字符串Encrypt:“53c2e4828f1f24dfce7055576a19796c”;
·将FileId、Random、Time、Encrypt四个参数以URL QueryString(查询字符串)的形式进行拼接(顺序无关),得到:
FileId=12345678&Random=3427507&Time=1533210698&Encrypt=53c2e4828f1f24dfce7055576a19796c;
·对上一步的结果进行BASE64编码,得到加密签名Sign:
RmlsZUlkPTEyMzQ1Njc4JlJhbmRvbT0zNDI3NTA3JlRpbWU9MTUzMzIxMDY5OCZFbmNyeXB0PTI0MDhhY2VlM2I5MTFlMTRlOTMxODE4OWExMjZjZDVk。
·上一步得到的Sign即为最终的签名,由请求方生成并发送给服务方,后者校验其合法性。
上述加密过程所使用到的参数如下表1中所示:
表1
当服务方收到请求方发送的请求时,按下述流程检查请求的合法性(仍以上述请求为例),即对请求的发送方进行鉴权:
·如果请求中没有携带Sign参数,则判定签名非法即鉴权失败,流程结束;
·如果请求中携带有Sign,则对Sign进行BASE64解码,如果解码后的信息中没有携带FileId、Random、Time和Encrypt这4个参数,则判定签名非法,流程结束;
·如果解码后的信息中携带了FileId、Random、Time和Encrypt这4个参数,则检查Time参数的值,如果其所代表的时间(Unix时间戳)距今在预设的范围外(比如30秒,可根据需要调整,主要目的是保证请求的时效性),则判定签名非法,流程结束;
·检查Random参数的值,如果其值在最近的一段时间(比如30分钟,可根据需要调整,主要目的是避免重复请求)已经出现过(要求服务方缓存最近一段时间出现过的Random值),则判定签名非法,流程结束;
·如果Time参数和Random参数都符合要求,将上一步得到的FileId、Random、Time参数的值按参数名的英文字典序升序排列,并将排序后的三个参数的参数值进行拼接;再将约定好的Key拼在最前面,得到明文;
·对上一步的拼接结果进行MD5计算(计算结果中字母使用小写),得到密文;
·将计算得到的密文与解码得到的Encrypt参数值进行对比,如果两者不一致,则判定签名非法,流程结束;如果结果一致,则允许访问,开始执行具体业务逻辑。
该私有鉴权方案的安全性的核心在于只有请求方和服务方掌握Key的内容,其它非法请求者在没有Key的情况下不可能生成合法的签名。该私有鉴权方案可以应用到本发明实施例所提供的提供第三方服务的方法中,下文中涉及到信息传递的过程中可以多次使用到该私有鉴权方案,涉及到的场景可有:
·请求方请求一个Web页面时,在页面的URL后以QueryString的形式携带签名,服务端对该签名做鉴权。
·Web页面中通过PostMessage(Windows API中的一个常用函数)的方式发送信息给以HTML<iframe>标签集成的页面时,对信息内容进行加密,被嵌入页面的后台服务对该信息进行鉴权。
本发明实施例中,由于可能会涉及多次使用私有鉴权方案,为了避免重复描述整个鉴权过程,下文描述中采用类似于“使用私有鉴权方案对某内容进行加密,密钥由甲和乙进行约定”的描述方式,该描述主要指代以下过程:
·将待加密内容表示为“参数名=参数值”的形式(可能有多个参数);
·按照上述私有鉴权方案的说明对密钥值和参数值进行排序、拼接;
·对拼接结果进行MD5计算;
·将计算结果和其它所有参数以URL QueryString的形式拼接在一起,进行BASE64编码,编码结果即为最终传递的内容。
可以理解的是,上述所描述的私有鉴权方案的具体实现方式只是一种可选的方式,在实际应用中,可以根据需要配置不同的鉴权方案,或者,可以对上述私有鉴权方案进行适应性的调整,比如,可以在生成Sign时采用不同的参数、不同的明文拼接方法、不同的时间戳和随机数有效性策略、不同的加密算法、不同的编码方式等等。
在实际应用中,某种具体的服务一般都会给使用者(如开发者)提供两种服务形式:控制台与API。控制台是一种Web服务即Web service,使用者使用自己的服务帐号登录Web页面后,可以直接在浏览器上使用该服务;API是一种网络应用程序接口,网络应用通过API可以实现存储服务、消息服务、计算服务等多种能力,利用这些能力可以开发出强大功能的Web应用,API一般是基于HTTP(S)协议的网络请求。
以腾讯云服务的视频点播服务为例,该服务的使用者可以是开发者,视频点播服务的两种服务形式如图1中所示,对于控制台形式的服务,开发者使用自己的腾讯云服务帐号登录控制台页面后,可以直接在浏览器上进行操作,通过控制台页面向点播后台(视频点播服务的后台服务器)发送操作请求,使用视频点播服务,比如上传视频、查询视频信息、对视频进行转码等等。对于API形式的服务,开发者可以在开发者后台通过调用云API接口向点播后台发送API请求,与点播后台通信。
两种服务相比,控制台的使用门槛更低、使用方式更形象化,但是服务厂商的开发工作量更大,也涉及到人机交互等设计领域。因此,在有些情况下,服务厂商出于开发周期、人力成本的考虑,对一些复杂的控制台功能并不自行开发,而是集成第三方企业的现成方案。
对于集成第三方服务的实现方案中,一种可选方案中,开发者可以是通过服务厂商在控制台提供的第三方服务页面的链接入口来访问第三方服务,之后的服务内容都由第三方提供,与云服务厂商无关。如图2中所示,继续以上述腾讯云服务为例,开发者在通过其云服务帐号登录控制台后,在控制台页面进行了触发了第三方服务页面的跳转链接入口的动作时,此时Web页面就会由控制台页面跳转到第三方服务的Web页面,开发者通过第三方页面发起的操作请求,都是由第三方服务后台(第三方服务服务器)来处理的,与腾讯云服务无关。
基于上述可选方案,虽然使用者(如开发者)能够直接使用第三方服务,但会存在以下几个问题:
·使用者需要先进入到主服务的服务页面,通过服务页面上的链接入口访问到第三方服务,访问方式单一、不够灵活,用户使用体验较差。
·采用页面跳转(或新开浏览器标签页/窗口)的方式体验较差,无论是页面变化还是域名变化,均让使用者感觉已经离开了原Web服务厂商的控制台。
·页面跳转后,开发者直接使用第三方的服务,原Web服务厂商对该过程无法进行管控,比如当第三方服务出现异常时,原Web厂商仅能屏蔽控制台的跳转链接,但对正在进行的第三方服务无法作出限制等。
·原Web服务厂商无法统计到其使用者的具体操作情况,包括各种功能的请求量和请求结果等。
·使用者的请求直接和第三方服务对接,请求的安全性依赖于第三方服务的接口设计,原Web服务厂商无法保障其安全性;
·因为登录控制台需要服务账号和密码,现有方案只能够由使用者在登录控制台后使用,在使用者为企业时,无法让使用者的用户使用。
·第三方服务本质上是厂商控制台服务的补充,一些场景下可能需要结合使用厂商控制台和第三方服务,跳转到新页面(或新开浏览器标签页/窗口)的方式意味着两个服务是割裂开的,开发者没办法在一个页面中结合使用两者的功能。
·开发者通过该途径了解第三方服务后,可以不经云厂商直接向第三方购买服务。
针对现有技术中存在的上述问题,本发明实施例提供了一种互联网应用中提供第三方服务的方法,该方法能够使原Web服务厂商在集成第三方服务时,相比现有技术可以实现更好的用户体验、更完善的权限控制、更安全的请求鉴权以及更大的灵活性。本发明实施例的方法所涉及的内容主要可以包括页面集成方式、机器部署、域名配置、页面访问鉴权、API请求鉴权等多个方面。下面以具体地实施例对本发明的技术方案以及本发明的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本发明的实施例进行描述。
为了更方便的区分原Web服务厂商提供的服务以及Web服务厂商所使用的第三方服务,本发明实施例中,将原Web服务厂商称为主服务提供商,将主服务提供商自己提供的服务称为主服务,主服务对应的Web页面称为第一页面,主服务的服务器称为主服务器;将主服务提供商所使用的第三方服务所对应的Web页面称为第二页面,将第三方服务的服务器(即第三方服务的原始提供者的服务器)称为第三方服务器,将第三方服务的原始提供者称为第三方服务提供商。
图3中示出了本发明实施例提供的一种互联网应用中提供第三方服务的方法的流程示意图,该方法可以由客户端执行,如图3中所示,该方法可以包括以下步骤:
步骤S310:接收第一操作请求,第一操作请求是第一页面的页面获取请求,或者是通过第一页面接收到的页面操作请求;
也就是说,第一操作请求可以是用户在其它页面上发起的用于访问第一页面的页面请求,即页面获取请求,也可以是用户在第一页面上发起的页面操作请求。其中,第一页面为主服务的页面,主服务为客户端所对应的主服务器提供的服务。
步骤S320:若第一操作请求是页面获取请求且所请求的页面内容包括需要由第三方服务器提供的页面内容,或者,第一操作请求是页面操作请求且是需要由第三方服务器处理的请求,则将第二操作请求发送至第三方服务器,第二操作请求与第一操作请求相对应;
可以理解的是,第二操作请求与第一操作请求相对应,是指第二操作请求是基于第一操作请求所生成的操作请求,具体的,若第一操作请求为页面获取请求,则第二操作请求中包括用于向第三方服务器获取第二页面的页面内容的操作请求,若第一操作请求为页面操作请求且该请求是需要由第三方服务器处理的请求,则第二操作请求中包括第一操作请求。
此外,在第一操作请求为页面获取请求时,客户端除了向第三方服务器发送第二操作请求,以获取第二页面的页面内容外,还需要向主服务器发送用于获取第一页面的页面内容的页面获取请求,以获取到第一页面的页面内容。
例如,对于页面操作请求,当用户通过用户设备(如移动终端、个人电脑等)打开主服务的第一页面时,主服务器会向客户端返回第一页面的页面内容,由客户端展示给用户,当用户在第一页面上进行了相关操作,即发起第一操作请求,客户端在接收到用户在第一页面发起的操作请求后,会根据该操作请求是需要由主服务器处理的请求,还是需要由第三方服务器处理的请求,向对应的服务器发起相应的操作请求。具体的,如果第一操作请求是需要由主服务器处理的请求,则将该操作请求发送给主服务器,如果第一操作请求是需要由第三方服务器处理的请求,则将该操作请求发送给第三方服务器。
其中,哪些操作请求由第三方服务器来处理,哪些操作请求由主服务器来处理,是在服务的应用程序开发阶段已经配置好的,客户端在通过第一页面接收到操作请求时,即可基于相关的配置信息得知该操作请求是需要发送给第三方服务器的,还是需要发送给主服务器的。
例如,在一示例中,主服务提供商提供的主服务是“视频点播”服务,主服务提供商提供的“视频编辑”功能为第三方服务,也就是说,“视频编辑”功能的实际服务提供者是第三方服务的原始提供商,基于该服务的操作请求由第三方服务器完成,主服务的用户在“视频点播”的Web页面上如果触发(如点击)了“视频编辑”的操作,则客户端在接收到该操作请求后,就会将该操作请求发送给第三方服务器,以从第三方服务器获取到视频编辑页面的内容。
可以理解的是,在实际应用中,用户想要使用主服务提供商提供的主服务时,一般都需要首先基于主服务提供商所分配的账号进行登录,如可以是通过输入账号与登录密码进行登录,并在主服务器对登录账号与密码验证通过后,才能够在页面上进行操作。
步骤S330:接收第三方服务器基于第二操作请求返回的处理结果,并将处理结果显示到第二页面,第二页面为第三方服务器提供的第三方服务的页面。
具体的,在第一操作请求为页面获取请求时,客户端从第三方服务器获取到的处理结果即为第二页面的页面内容,客户端从主服务器获取到第一页面的页面内容,并将第一页面的页面内容显示到第一页面,将第二页面的页面内容显示到第二页面,以呈现给用户。在第一操作请求为页面操作请求时,客户端将从第三方服务器获取到的该请求的处理结果显示到第二页面。
具体的,在用户发起的第一操作请求是页面操作请求,且是需要由第三方服务器完成的请求时,第三方服务器在接收到客户端发送的包括第一操作请求的第二操作请求后,对该第二操作请求进行相应的处理,并向客户端返回相应的处理结果,该处理结果即为第二页面的页面内容,客户端接收到该处理结果后即可通过第二页面显示给用户。如前文示例中,用户在“视频点播”的Web页面上触发(如点击)了“视频编辑”的操作时,由于“视频编辑”的服务是需要由第三方服务器提供的,因此,客户端则将该“视频编辑”的操作请求发送至第三方服务器,第三方服务器接收到该请求后,则将“视频编辑”页面的具体内容返回给客户端,由客户端将接收到的页面的具体内容显示到第二页面。
本发明实施例提供该方案,能够使主服务的用户通过直接发起页面获取请求或通过主服务的页面发起操作请求的方式,访问主服务中集成第三方服务,与现有技术相比,该方案为用户提供了更加灵活的第三方服务的访问方式,能够提升用户的使用体验,更好的满足实际应用需求。
本发明的可选实施例中,第二页面为一页面的嵌入页面。
其中,嵌入页面的具体实现方式本发明实施例中不作限定。例如,在一可选方案中,可以使用但不限于超文本标记语言标签即HTML<iframe>标签来实现,其具体实现语法为:
<iframe src="在iframe中显示的子页面的URL">
在实际应用中,iframe还有一些其它的属性,如子页面的高度和宽度等,通过这些属性的配置,可以实现对子页面在父页面中的嵌入区域样式的设置。
对于本发明实施例,在iframe中显示的子页面的URL即为第二页面所对应的URL。下面本发明实施例中主要以iframe嵌套为例进行说明。
作为一个示例,图4中示出了一种在第一页面中嵌入第二页面的实现方案的示意图。该示例中,第一页面为腾讯云服务的控制台页面(图中虚线框以外、实线框以内所示的部分),即主服务提供商腾讯所提供的Web服务页面的部分,第二页面为图中所示的第三方服务页面(图中虚线框以内所示的部分),即第三方服务厂商所提供的Web服务页面部分,由图中可以看出,本示例中,第三方服务页面的URL为“https://thirdparty.qcloud.com/video”。该示例中的用户是腾讯云服务的使用者,即开发者。由图中可以看出,开发者在使用第三方服务时,第三方服务页面是以嵌入式的方式显示在控制台页面中的,因此,采用该方案,即使是在使用第三方服务,使用者仍感知是在腾讯云服务的控制台页面,而不会感觉脱离了腾讯云服务的范围,给予了使用者更好的使用体验。
可以理解的是,在第二页面为第一页面的嵌入页面时,上述页面获取请求所请求的页面内容中一定是包括了需要由第三方服务器提供的页面内容的本发明实施例提供的该方案,第三方服务的Web页面即第二页面,为主服务的Web页面的子界面,在客户端接收到主服务页面的页面获取请求或者接收到需要由第三方服务器处理的操作请求时,可以将从第三方服务器获取到的处理结果通过主服务页面的嵌入页面展示给使用者,从而让用户感知其仍然在主服务的服务页面中,未离开主服务提供商的服务范围,与现有的以页面跳转或者新开浏览器标签页/窗口的方式来显示第三方服务的页面的方式相比,有效提升了用户的感知,让用户获得了更好的使用体验。
在实际应用中,由于第二页面的页面链接即URL通常都是一个在公网上可见的域名,因此,互联网用户均可以直接对该域名进行访问。但由于第三方服务的实际提供者虽然是第三方服务提供商,但对于主服务的使用用户来说,第三方服务还是主服务提供商所提供服务的一部分,因此,为了保证访问的安全性,需要对第三方服务进行访问权限控制,仅允许被主服务器授权的用户进行访问,不允许直接通过第二页面的URL进行访问。
本发明的可选实施例中,上述将第二操作请求发送到第三方服务器之前,该方法还可以包括:
向主服务器发送第一授权请求,以使主服务器根据第一授权请求生成授权信息,第一授权信息用于第三方服务器对客户端进行鉴权;
接收主服务器返回的第一授权信息;
其中,第二操作请求中还包括第一授权信息,处理结果为第三方服务器根据第一授权信息对客户端进行鉴权且鉴权通过后,对第二操作请求进行相应处理后的结果。
由于第三方服务是主服务提供商向第三方服务提供商购买的服务,因此,第三方服务器通常仅会向购买了该第三方服务的用户提供服务,即第三方服务器会对第三方服务的访问权限进行控制,需要对访问请求进行鉴权,只允许被授权使用该服务的用户使用。主服务提供商在向第三方购买第三方服务时,第三方服务提供商会给主服务提供商提供鉴权所需要的信息。
因此,为了保证主服务器的客户端能够访问第三方服务器,如图5中所示,客户端在接收到第一操作请求后,需要向主服务器获取用于鉴权的第一授权信息,以基于该授权信息向第三方服务器发起第二操作请求。第三方服务器在接收到第二操作请求后,首先会基于第二操作请求中的第一授权信息对客户端进行鉴权,如果鉴权通过,则允许客户端访问第三方服务器,对第二操作请求进行相应处理并返回处理结果,如果鉴权未通过,则禁止客户端对第三方服务器的访问,即客户端的请求处理失败,可以向客户端返回相应的提示信息,如返回HTTP 403(表示没有权限访问网站)。
在实际应用中,第三方服务器对客户端进行鉴权的具体实现方式,可以由第三方服务厂商和主服务厂商双方约定的,第一授权信息的具体形式也可以是双方约定好的,根据双方的约定在第三方服务器和主服务器上进行相应的配置。
例如,在一可选方案中,第三方服务厂商和主服务厂商之间可以约定一个用于鉴权的密钥和特定参数,主服务器可以基于该密钥和特定参数进行加密处理,将加密处理后的结果作为第一授权信息返回客户端,客户端将加密处理后的结果发送给第三方服务器,第三方服务器根据约定的密钥对该加密结果进行相应的解密处理,如果解密后得到的参数与上述特定参数相同,则鉴权通过,如果解密后得到的参数与上述特定参数不相同,则鉴权失败。其中,上述加密处理及解密处理的具体方式也是由基于双方约定的方式进行的。
在另一可选方案中,可以采用本发明实施例前文中所描述的私有鉴权方案来生成第一授权信息,并基于第一授权信息进行鉴权。仍以主服务为腾讯云服务中的视频点播服务为例进行说明,如图6中所示,点播后台与第三方服务后台之间约定一个密钥,并采用私有鉴权方案对相关参数进行加密,具体采用哪些参数双方可以约定,本示例中的私有鉴权方案所采用的参数如表2中所示。
表2
以页面操作请求为例,当开发者基于腾讯云服务账号,通过视频点播服务的客户端登录控制台页面(图6中所示的控制台)后,在需要访问第三方服务时,也就是在客户端接收到用户在控制台页面发起的需要由第三方服务器处理的操作请求时,视频点播控制台(具体为客户端)首先需要向点播后台获取第一授权信息,本示例中,该第一授权信息即为点播后台采用私有鉴权方案的原理和表2中所示的参数所生成加密签名Sign,点播后台生成Sign后,将该Sign返回给客户端,开发者(具体为客户端)将接收到的Sign可以以HTTPQueryString参数的形式添加到第三方服务页面的URL中去访问第三方服务页面,一种可选的拼接形式类似于:
https://thirdparty.qcloud.com/video?Sign=xxx
其中,https://thirdparty.qcloud.com/video为本示例中第三方服务页面的URL,xxx为Sign的具体内容。
第三方服务的服务器接收到客户端发送的包含Sign的请求后,检验Sign的合法性,基于检验结果向客户端返回相应的处理结果,并显示到第三方服务页面,具体的,如果合法则允许访问(即返回正常页面内容),否则禁止访问(如返回HTTP 403返回码)。
本发明的可选实施例中,将第二操作请求发送到第三方服务器之前,还可以包括:
生成第二授权信息,第二授权信息用于主服务器对客户端进行鉴权;
第二操作请求中还包括第二授权信息,处理结果为第三方服务器将第二授权信息发送给主服务器,并接收到主服务器基于第二授权信息返回的鉴权通过信息后,对第二操作请求进行相应处理后的结果。
具体的,为了实现对第三方服务的访问权限的控制,可以采用上述由主服务器生成第一授权信息的方式,也可以是由客户端自己生成用于鉴权的第二授权信息,该信息为客户端按照与主服务器所约定的鉴权方式所生成的授权信息,以腾讯云服务为例,开发者可以使用腾讯云服务厂商为开发者分配的API密钥,采用双方约定的方式生成该第二授权信息,由于该授权信息是采用客户端与主服务器约定的方式生成的信息,因此,第三方服务器在接收到包含该第二鉴权信息的第二操作请求后,首先要将该鉴权信息发送给主服务器,由主服务器根据该授权信息完成对客户端的鉴权,并将鉴权结果返回给第三方服务器,第三方服务器根据从主服务器接收到的鉴权结果对第二操作请求进行相应处理,如果鉴权通过,则对第二操作请求中的具体请求内容进行相应处理,将处理结果返回给客户端,如果鉴权失败,则不对第二操作请求进行处理,可以向客户端返回请求失败或者不具体访问权限等信息。
本发明的可选实施例中,若第三方服务是由第一服务器授权给主服务器的服务,将第二操作请求发送到第三方服务器之前,还包括:
向主服务器发送第二授权请求,以使主服务器根据第二授权请求生成第三授权信息,第三授权信息用于第一服务器对客户端进行鉴权;
接收主服务器返回的第三授权信息;
第二操作请求中还包括第三授权信息,处理结果为第三方服务器将第三授权信息发送给第一服务器,并接收到第一服务器基于第三授权信息返回的鉴权通过信息后,对第二操作请求进行相应处理后的结果。
在实际应用中,第三方服务有可能不是主服务的服务厂商直接购买的服务,而是从其它服务厂商间接购买的第三方服务,也就是说,第三方服务的直接管理权是在其它服务厂商,第三方服务是由第一服务器(其他服务厂商的服务器)授权给主服务器的服务,此时,主服务器的客户端在需要访问第三方服务器时,需要经过第一服务器的鉴权,如图7中所示,客户端在接收到第一操作请求后,需要向主服务器获取到第三授权信息,并将该授权信息作为第二操作请求的一部分一起发送给第三方服务器,第三方服务器收到携带第三授权信息的第二操作请求后,首先基于该第三授权信息向第一服务器发送鉴权请求,第一服务器接收到第三授权信息后,根据第三授权信息对主服务器进行鉴权,并将鉴权结果通知第三方服务器,如果鉴权通过则表明主服务器是被第一服务器的服务厂商授权能够使用第三方服务的服务器,反之,如果鉴权未通过,则主服务器不能够使用第三方服务。第三方服务器在接收到第一服务器的鉴权结果后,则可基于该结果进行相应处理,若结果为鉴权通过,则对第二操作请求的具体请求内容进行处理,并将处理结果返回客户端,若结果为鉴权未通过,则向客户端返回相应提示信息,提示客户端不具备访问权限。
同样的,第一服务器对主服务器进行鉴权的具体实现方式,可以由第一服务器对应的服务厂商和主服务厂商双方约定,第三授权信息的具体形式也可以由双方约定,根据双方的约定在第一服务器和主服务器上进行相应的配置即可。
作为一个具体的示例,假设腾讯云服务的开发者基于云服务搭建了一个网站,云服务中集成有第三方服务,开发者希望普通用户能够在该网站上直接使用第三方服务,但是使用该第三方服务时要求首先需要登录云服务控制台,但是控制台登录权限一般仅限于少数管理人员,并不适合授权给开发者所提供的网络服务的普通用户。在该应用场景中,开发者所提供的服务此时可以为主服务,开发者即为主服务提供商,开发者的服务器即为主服务器,腾讯云服务的服务器即为第一服务器,第三方服务是腾讯云服务的服务器授权给开发者的服务器的。为了解决该应用场景中存在的上述问题,使普通用户能够在开发者的网站上直接使用第三方服务,就需要能够提供一种使得开发者的网站页面也能够快速、安全地集成第三方服务的方案,需要说明的是,此时,通过开发者的网站页面所能够访问的第三方服务为云服务厂商授权给开发者使用的第三方服务,主服务器的客户端即为开发者提供的服务的客户端。
本发明提出的方案是:第三方服务厂商提供一个和前文中所描述的第三方服务页面类似的页面,为了加以区分,以下将控制台集成的第三方服务称为封闭式第三方服务,将开发者的服务中集成的第三方服务称为开放式第三方服务,将开放式第三方服务的页面的URL(假设是https://thirdparty-open.qcloud.com/video)公开给开发者,并由开发者规定页面访问鉴权规则、参数传递鉴权规则。开发者在自己的网页上可以使用HTML<iframe>的方式或其他方式集成开放式第三方服务页面,如图8中所示,该图中所示的第三方服务页面即为开放式第三方服务的页面。
和封闭式第三方服务相比,开放式第三方服务可以有以下的相同点:
服务页面都可以是以HTML<iframe>的形式集成到主页面上的,即第三方服务页面为主服务页面的嵌入页面;
服务页面上的主要内容(即提供的服务能力)可以是一样的;
服务后台(第三方服务器)的部署可以是一样的,当然,如果有需要,也可以在机器或者进程级别上与封闭式第三方服务进行隔离;
服务后台仍然需要将用户的操作请求和操作结果通知给点播后台,具体通知内容根据实际业务情况决定。
和封闭式第三方服务相比,开放式第三方服务可以有以下的不同点:
访问页面的鉴权:鉴权方案可以都可以采用上述私有鉴权方案,当然,也可以根据实际应用需求采用其它鉴权方案,下面以私有鉴权方案为例进行说明。但是对于封闭式第三方服务而言,是由主服务提供商(如腾讯)与第三方服务约定密钥内容,由主服务器(如点播后台)派发加密签名给开发者(具体为主服务器对应的客户端),开发者访问第三方服务页面时带上该签名,由第三方服务后台校验该签名。而对于开放式第三方而言,主服务为开发者提供的服务,主服务器为开发者的服务器,开发者使用的第三方服务为第一服务器的服务提供商(如腾讯)授权使用的服务,此时,第三方服务的访问授权则需要由第一服务器的服务提供商和每个开发者分别约定密钥内容,开发者提供的网络服务的用户访问开发者页面时(可能需要必要的登录过程,取决于开发者页面自身的业务逻辑),开发者后台即开发者服务器给用户(具体为开发者服务器对应的客户端)派发加密签名(对应上述第三授权信息),用户访问第三方服务页面时带上签名,第三方服务后台向第一服务器请求校验该签名(因为第三方服务后台不知道密钥,无法进行校验),第一服务器校验签名后将校验结果返回给第三方服务后台。这里不采用由第三方服务提供商直接和开发者约定密钥的方式,一方面方便第一服务器对应的服务提供商对开发者访问权限进行管理(包括开通、禁用的权限),另一方面不需要每次变更都让第三方厂商介入。
将开发者页面上的信息传递:开发者页面上的信息传递给开放式第三方页面即第三方服务后台时,可以由开发者页面调用postMessage方法,其内容仍然可以采用私有鉴权方案,但密钥需要由第一服务器对应的服务提供商与开发者约定(可以使用与访问页面鉴权相同的密钥,也可以使用不同的密钥,可由双方根据需要约定)。第三方服务后台收到postMessage的加密信息后,采用和访问页面鉴权类似的方法向第一服务器请求验证该信息的合法性,并获取到所需要的信息。
需要说明的是,在实际应用中,上述第二操作请求可以同时包括第一授权信息和第三授权信息,即第三方服务器需要对客户端进行鉴权,第一服务器也需要对客户端进行鉴权,该方案中,只有两次鉴权均通过,第三方服务器才会允许客户端的访问,对第二操作请求的实际请求内容进行处理。同样的,第二操作请求也可以同时包括第二授权信息和第三授权信息,即主服务器对客户端进行鉴权,第一服务器也对客户端进行鉴权。
本发明的可选实施例中,若第一操作请求是页面操作请求,且第三方服务器对第二操作请求的处理需要依赖于第一页面中的相关信息,第二操作请求中还包括用于获取相关信息的信息。
第三方服务页面即第二页面,可以是以HTML<iframe>的形式集成到第一页面上的嵌入页面,成为主服务提供商对其用户提供的Web服务的一部分。某些业务场景需要结合使用第一页面和第二页面的功能。比如,作为一个示例,第一页面为腾讯云服务的视频点播服务的服务页面,视频点播服务中集成了视频编辑服务,该视频编辑服务为第三方服务,当用户在视频点播服务的第一页面上选中一个视频文件之后,又在第一页面上点击了“视频编辑”,由于视频编辑服务是第三方服务,该操作需要发送给第三方服务器进行处理,第三方服务器要完成对用户所选中的视频文件的视频编辑的操作,需要获取到该视频文件的信息,该应用场景则需要控制台页面能够将一些必要信息(该示例中就是将视频文件的信息)传递给第三方服务器,以使第三方服务器基于该必要信息完成后续的视频编辑处理。
因此,为了解决需要结合使用第一页面和第二页面的功能的操作需求,当用户在第一页面上进行操作时,如果该操作的相关信息是第三方服务器完成对操作请求的处理所需要的数据,则客户端需要将第一页面上的相关页面信息发送给第三方服务器,在实际应用中,具体哪些相关信息是需要发送给第三方服务器的,由实际的应用需求及业务配置决定。
在一可选方案中,客户端可以使用Web API中的postMessage方法将用于获取第一页面的相关信息的信息传给第三方服务器,传递的内容根据实际业务需要决定。在实际应用中为保证信息的合法性和安全性,可以采用私有鉴权方案或其他加密方案对需要传递的信息进行加密,密钥由主服务提供商与第三方服务提供商约定,并在主服务器和第三方服务器中进行相应的配置。
具体的,假设第三方服务的页面即第二页面的URL为https://thirdparty.qcloud.com/video,客户端在使用Web API中的postMessage方法将该信息传递给第三方服务器时,传递方法可以类似于:
iframeObj.contentWindow.postMessage("Sign=xxxxx","https://thirdparty.qcloud.com/video");
使用postMessage方法能够实现跨域的数据传递,该语法中,iframeObj.contentWindow表示iframe所在的Window对象,第一个参数“Sign=xxxxx”即为携带有需要发送的数据的签名,第二个参数https://thirdparty.qcloud.com/video即为发送的目的地,也就是目标URL。
第三方服务器接收到客户端发送的信息后,基于双方约定的密钥对"Sign=xxxxx"进行鉴权成功后,即可得到所需要的信息,如上述示例中的视频文件的信息。
在另一可选方案中,可以使用URL锚点(fragment identifier)的方式来传递信息。锚点是指添加在URL后的一段内容,以#号开头,例如,一带锚点的URL为:
https://cloud.tencent.com/document/product/266/10688#.E6.9C.8D.E5.8A.A1.E7.AB.AF-api-.E7.AE.80.E4.BB.8B,该URL中的锚点即为.E6.9C.8D.E5.8A.A1.E7.AB.AF-api-.E7.AE.80.E4.BB.8B,其中携带了需要传递的信息。当用户在主服务的第一页面上进行操作时,如果该操作有必要通知第三方服务,那么就可以将该操作的内容进行加密,如使用私有鉴权方案进行加密,然后将密文作为锚点的内容拼接在URL后,例如,假设第二页面的URL为:https://thirdparty.qcloud.com/video,对需要传递的内容进行加密后得到的密文为:Sign=xxx#yyy,则可以得到带锚点的URL:https://thirdparty.qcloud.com/video?Sign=xxx#yyy。用户通过客户端访问该带锚点的新的URL时,由于仅有锚点内容变更,因此,第二页面的内容不会刷新,而第三方服务器可以获取到锚点内容。
需要说明的是,在第一操作请求为页面操作请求且是需要由第三方服务器处理的请求时,该第一操作请求可以是用户通过第一页面首次发起的操作请求,也可以是用户再次在第一页面发起的操作请求。
继续以上述腾讯云服务的视频点播服务为例,用户在腾讯云服务的视频点播服务的页面上选中了一个视频,并点击了视频编辑时,客户端向第三方服务器获取的视频编辑页面的内容并显示到第二页面,此时用户可以在第二页面上进行视频编辑操作,如果用户此时在视频点播服务的页面上又选中了另外一个视频,并点击了视频编辑时,客户端则可以采用postMessage方式或者URL锚点的方式,将另外一个视频的视频相关信息发送给第三方服务器,以使第三方服务器能够基于接收到的该信息进行具体的处理。
在实际应用中,上述用于获取第一页面中的相关信息的信息的具体形式本发明实施例不做限定,可以根据实际需要配置,例如,可以是主服务提供商和第三方服务提供商约定的,也可以是由主服务提供商规定好的。例如,用于获取第一页面中的相关信息的信息可以直接为第一页面中的相关信息,也可以是第一页面中的相关信息所对应的存储位置信息,例如,相关信息对应的URL,可以基于该URL向主服务器来获取该相关信息。
本发明的可选实施例中,主服务器为主服务的主服务厂商的第二服务器,第三方服务器为主服务厂商的第三服务器,和/或,第二页面对应的URL中的域名是由主服务厂商提供的域名,和/或,URL中的域名与第一页面的域名属于不同域,和/或,URL中的域名中的主域名与第一页面的域名中的主域名相同。
第三方企业即第三方服务提供商对外提供的服务是部署在自己的机器即第三方服务器上的,第三方服务器可以是第三方企业自己的服务器,也可以是第三方企业所购买的云服务器或物理服务器等,第三方企业对这些机器有完整的控制权限。采用页面跳转或者新开浏览器标签页/窗口等方式来访问第三方服务页面时,由于使用者是直接使用第三方的服务,因此,主服务的服务厂商对该过程无法进行管控,在第三方服务出现异常时,主服务厂商仅能屏蔽主服务的页面的第三方服务的链接,但对正在进行的第三方服务无法做出限制。
本发明实施例中,当主服务中集成第三方服务时,主服务厂商为了确保业务的安全性和可控性,第三方服务器可选为主服务厂商的服务器,从而使主服务的服务厂商对第三方服务所使用的机器拥有最高控制权限,在主服务中所集成的第三方服务的业务出现异常时,主服务的服务厂商能够对第三方服务进行相应的管控,如可以随时关停服务,实现了主服务的服务厂商对其所购买的第三方服务的有效管理。其中,在第三方服务器为主服务厂商的服务器时,主服务的服务器和第三方服务的服务器可以是主服务的服务厂商提供的同一服务器,也可以是不同的服务器,也就是说,上述第二服务器和第三服务器可以是同一服务器,也可以不同的服务器。
具体的,例如,主服务为腾讯云服务,云服务厂商即主服务提供商可以使用一个自有的云服务帐号购买腾讯云服务器,然后提供这些云服务器的账号信息(如登录密码)给第三方企业;第三方企业登录云服务器并部署完整的第三方服务,此时,第三方服务器为主服务提供商(本示例中的腾讯云服务的服务厂商)的服务器。通过该方式,一方面第三方得到授权可以登录机器进行开发运维工作,另一方面云服务厂商对机器拥有控制权限,在业务出现异常时随时可以关停服务。
第三方企业对外提供的服务域名一般是第三方企业所有的。当主服务厂商集成第三方服务时,如果使用第三方的域名一方面会影响服务的完整性(使用者可以发现访问了非云服务厂商的域名),另一方面由于域名的管理权限在第三方,会存在安全隐患。为了解决这些问题,在实际应用中,第二页面对应的URL中的域名可以由主服务厂商提供的域名,也就是说,第三方服务的服务域名可以是由主服务厂商提供,第三方服务的服务域名的管理权限归属于主服务厂商,从而主服务厂商能够对该第三方服务能够进行整体管控,在主服务中所集成的第三方服务出现异常时,可以通过对第三方服务的域名的管控实现对第三方服务的限制。
例如,以腾讯云服务中的云视频点播服务为例,在该示例中,云视频点播服务的控制台页面(即第一页面)的链接即URL是:https://console.qcloud.com/video,该链接的二级域名qcloud表示腾讯云服务,三级域名console表示控制台,路径video表示视频点播服务。当云视频点播服务集成第三方服务时,该第三方服务的服务域名可以是由腾讯提供一个域名,比如,可以是https://thirdparty.qcloud.com/video,该域名的解析结果指向腾讯的服务器,腾讯拥有该域名的管理权限。
为了避免主服务的cookie信息(访问者的有关信息)被第三方服务页面所利用,第三方服务的第二页面所对应的URL中的域名与主服务的第一页面的域名属于不同域,从而在第一页面中打开第二页面时,第二页面的cookie信息不会在第二页面生效,从而不会被第三方服务页面利用,更好的保证用户的相关信息,提升用户访问第三方服务时的安全性。
在实际应用中,第二页面所对应的URL中的域名中的主域名可以与第一页面的域名中的主域名相同,两者具有相同的主域名,使使用者能够感知到其仍然是在使用主服务的服务厂商所提供的服务,提升了使用者的使用感知。如第一页面对应的URL为:https://console.qcloud.com/video,第二页面对应的URL为:https://thirdparty.qcloud.com/video,两个URL中仅有第三域名不同,主域名均为qcloud.com,都对应于腾讯云,使用者在通过第一页面进入到第二页面进行相关操作时,通过第二页面对应的URL,可以感知到其仍然在腾讯云的服务范围内。
基于与图3中所示的方法或基于图3中所示的方法的可选实施例相同的原理,以第三方服务器为执行主体,图9示出了本发明实施例提供的一种互联网应用中提供第三方服务的方法的流程示意图,由前文描述可知,第三方服务器即为提供第三方服务的服务厂商的服务器,其提供的第三方服务集成在主服务中,如图9中所示,该方法可以包括:
步骤S910:接收客户端发送的第二操作请求,第二操作请求为客户端基于接收到的第一操作请求生成的请求,第一操作请求为第一页面的页面获取请求,或者为客户端通过第一页面接收到的页面操作请求;
其中,第一页面为主服务的页面,主服务为客户端所对应的主服务器提供的服务。
步骤S920:对第二操作请求进行相应的处理,并将处理结果发送至客户端,以使客户端将处理结果显示在第二页面。
其中,第二页面为第三方服务器提供的第三方服务的页面。
可以理解的是,图3和图9中所示的方法,是从两种不同的角度对本发明所提供的一种提供第三方服务的方法的描述,对于图9中所示的方法以及下文中对图9所示方法的可选实施例中的具体描述,可以参见前文中对图3中所示的方法以及对图3所示方法的可选实施例中的相应具体描述,在此不再一一赘述。
本发明的可选实施例中,第二页面为第一页面的嵌入页面。
本发明的可选实施例中,第二操作请求中还包括第一授权信息,第一授权信息为客户端通过向主服务器发送第一授权请求获取到的信息,第一授权信息用于第三方服务器对客户端进行鉴权;
此时,对第二操作请求进行相应的处理,可以包括:
根据第一授权信息对客户端进行鉴权,若鉴权通过,则对第二操作请求进行相应的处理。
本发明的可选实施例中,第二操作请求中还包括第二授权信息,第二授权信息为客户端生成的信息,第二授权信息用于主服务器对客户端进行鉴权;
此时,对第二操作请求进行相应的处理,可以包括:
将第二授权信息发送给主服务器,以使主服务器基于第二授权信息对客户端进行鉴权;
接收主服务器返回的对客户端的鉴权结果,若鉴权通过,则对第二操作请求进行相应的处理。
本发明的可选实施例中,若第三方服务是由第一服务器授权给主服务器的服务,第二操作请求中还包括第三授权信息,第三授权信息为客户端通过向主服务器发送第二授权请求获取到的信息,第三授权信息用于第一服务器对客户端进行鉴权;此时,对第二操作请求进行相应的处理,包括:
将第三授权信息发送给第一服务器,以使第一服务器根据第三授权信息对客户端进行鉴权;
接收第一服务器返回的对客户端的鉴权结果,若鉴权通过,则对第二操作请求进行相应的处理。
本发明的可选实施例中,该方法还可以包括:
接收客户端发送的第三操作请求,第三操作请求为客户端通过第二页面接收到的请求;
若第三操作请求是需要由第三方服务器和主服务器共同处理的请求,则将第四操作请求发送给主服务器,其中,第四操作请求是基于第三操作请求中需要由主服务器处理的请求生成的请求;
接收主服务器基于第四操作请求返回的第一响应信息;
根据第一响应信息和第三操作请求中需要由第三方服务器处理的请求,进行相应的处理;
将处理后的结果发送至客户端,以使客户端将处理后的结果显示在第二页面;
若第三操作请求是需要由主服务器处理的请求,则将第五操作请求发送给主服务器,以使主服务器对第五操作请求进行相应的处理,其中,第五操作请求包括第三操作请求;
接收主服务器基于第五操作请求返回的第二响应信息;
将第二响应信息发送至客户端,以使客户端将第二响应信息显示在第二页面。
具体的,用户成功访问第三方服务页面即第二页面后,可以在第二页面上进行一些业务操作。第三方服务是主服务的扩展,用户在第三方服务页面上进行的操作的本质是用户授权第三方服务对用户在主服务上的数据进行操作。这些操作可以分为两类,一类(下文中称为第一类操作)是需要主服务后台(即主服务器)参与的,也就是说该类操作的处理需要由主服务器和第三方服务器共同完成,而该类操作中,还可以有两种可能,一种是操作请求的实际执行完场由主服务器完成,该种操作请求经由第三方服务后台(即第三方服务器)到达主服务后台,由主服务后台具体执行,并将执行结果即上述响应信息返回给第三方服务后台,再由第三方服务后台将处理结果返回客户端,另一种则是主服务器和第三方服务器都需要参与到请求的具体执行,也就是说,实际的处理结果部分来自主服务器,部分来自第三方服务器,对于该种操作,在实际应用中,可以是在第三方服务器接收到客户端发送的操作请求后,可以是分别由第三方服务器和主服务器各自执行自己需要处理的请求部分,此时,第三方服务器将需要由主服务器执行的请求发送给主服务器,接收主服务器返回的处理结果,第三方服务器执行需要由自己完成的部分,并将接收到的处理结果和自己得到的处理结果返回给客户端;也可以是第三方服务器在接收到主服务器的处理结果后,基于接收到的处理结果再进行处理,将此时的处理结果返回给你客户端;另一类(下文中称为第二类操作)是不需要主服务后台参与,直接在第三方服务后台完成整个操作过程。
其中,哪些操作请求属于第一类操作,哪些操作请求属于第二类操作,是在服务程序的开发阶段已经由主服务提供商和第三方服务提供商根据业务需要规定好的,并在主服务器和第三方服务器中进行了相应配置的。对于第一类操作,不同用户通过第二页面发起的操作请求最终都是由第三方服务后台向主服务后台发起API请求来执行的。具体的,例如,在实际应用中,第三方服务器接收到客户端发送的第三操作请求后,基于业务配置即可确定该操作请求是第一类操作,还是第二类操作,如果是第一类操作,则向主服务器发送第四操作请求或第五操作请求,如果是第二类操作,则第三方服务器直接对该接收到的第三操作请求进行处理即可。
本发明的可选实施例中,该方法还可以包括:
将第一操作请求的相关操作信息发送给主服务器。
对于前文中提到的第二类操作(即不需要主服务后台参与的操作),主服务后台(如点播后台)并无感知,为了能对主服务用户的所有操作进行监控、统计、计费等,需要第三方服务后台将该类操作的操作请求、操作结果等相关操作信息通知给主服务后台,具体的,第三方服务器可以以API请求的形式通知主服务后台。具体请求内容可以根据实际业务情况决定,也就是说,第三方服务后台需要向主服务后台发送的相关操作信息具体可以包括哪些业务信息,可以根据实际需要配置。
当然,对于上述第一类操作,虽然该类操作主服务后台也会参与,但第三方服务后台也可以将该类操作请求所对应的相关操作信息发送给主服务后台,以使主服务后台能够获取到全面的操作信息,更好的掌握主服务用户的服务使用信息。
本发明的可选实施例中,第二操作请求中包括客户端的客户端标识,客户端标识为主服务器为客户端分配的标识,第四操作请求或第五操作请求中包括客户端标识。
具体的,第三方服务后台向主服务后台发起的第四操作请求或第五操作请求,其真正的请求来源还是主服务的用户所发起的第一操作请求,为了使主服务后台能够识别请求的真正来源,第四操作请求或第五操作请求可以携带有由主服务器为客户端分配的客户端标识,主服务器在接收到第四操作请求或第五操作请求后即可基于其中所携带的客户端标识识别请求的真正来源。
仍以主服务是腾讯云服务的视频点播服务为例,对于第一类操作,不同开发者的请求最终都是由第三方服务后台向点播后台发起API请求来执行的。API请求需要有SecretId/SecretKey才能生成合法的签名,但第三方服务后台不可能得知开发者的SecretKey,因此,在实际应用中,需要使用其它的SecretId/SecretKey(可由主服务提供商配置)。另外,从点播后台的角度看,所有的操作(可能来自不同开发者)最终都是以第三方服务的名义发起的,需要有办法让点播后台能够识别请求的真正来源。
本发明对于该示例所提出的方案如图10中所示:第三方服务后台可以注册一个腾讯云账号,并在代表开发者操作数据时,以图中所示的该账号的SecretId/SecretKey来加密需要向点播后台发起的API请求。另外,在前文中的访问鉴权流程中,点播后台在返回给开发者(具体为客户端)的Sign(第一授权信息)里面可以带有UserId参数用于标识具体是哪个开发者(即登录控制台的腾讯云账号),第三方服务后台在校验Sign之后缓存该UserId参数,后续开发者在第三方服务页面发起操作时,第三方服务后台把UserId作为API参数透传给点播后台,点播后台即能基于该UserId识别请求的真正来源(开发者)。如图10中所示的流程中,假设开发者1的UserId为UserId1,开发者2的UserId为UserId2,第三方服务后台向点播后台发起API请求时,API请求中携带开发者的UserId,点播后台接收到一个API请求时,即可基于其中携带的是UserId1还是UserId2,来识别出请求的真正来源是开发者1还是开发者2。
由上述对本发明实施例方案的描述可以看出,本发明实施例提供的提供第三方服务的方法至少具有以下有益效果:
·为使用者提供了更加灵活的第三方服务的访问方式,提升了使用者的使用感知,更好的满足了实际应用需求。
·以页面嵌入(如HTML<iframe>)的方式替代页面跳转的方式,让使用者(如开发者、开发者提供的服务的使用者)获得更好的体验。
·可以由主服务提供商(如云厂商)提供第三方服务器(如云服务器)和第三方页面的服务域名,提高了主服务提供商对第三方服务的管控能力。
·通过鉴权(如校验加密签名)方式,保证了第三方服务页面访问请求的合法性。
·可以通过第三方服务发起API请求的方式,将使用者操作转为标准API请求,保证了请求的安全性并能区分请求来源。
·可以使用Web API中postMessage方法,使得使用者在控制台页面上的操作能够通知第三方服务页面,实现了在一个业务场景下结合使用控制台服务和第三方服务。
·通过第三方服务发起API请求的方式,使主服务提供商(如云服务厂商)能够感知其使用者的操作请求和操作结果;
·通过对页面访问鉴权方式的改动,使得第三方服务能够直接被主服务的使用者(如开发者)的自有页面集成,并最终提供给使用者所提供的服务的普通用户使用,即主服务提供商能够将第三方Web服务开放给其使用者所开发的服务的自有页面,供使用者的用户使用。
基于与图3中所示的方法相同的原理,本发明实施例提供了一种互联网应用中提供第三方服务的装置,如图11所示,该提供第三方服务的装置100可以包括操作请求接收模块110、操作请求处理模块120和处理结果显示模块130。
操作请求接收模块110,用于接收第一操作请求,其中,第一操作请求是第一页面的页面获取请求,或者是通过第一页面接收到的页面操作请求,第一页面为主服务的页面,主服务为客户端所对应的主服务器提供的服务;
操作请求处理模块120,用于在第一操作请求是页面获取请求且所请求的页面内容包括需要由第三方服务器提供的页面内容,或者,第一操作请求是页面操作请求且第一操作请求是需要由第三方服务器处理的请求时,将第二操作请求发送至第三方服务器,第二操作请求与第一操作请求相对应;
处理结果显示模块130,用于接收第三方服务器基于第二操作请求返回的处理结果,并将处理结果显示到第二页面,第二页面为第三方服务器提供的第三方服务的页面。
可选的,第二页面为第一页面的嵌入页面。
可选的,操作请求处理模块120在将第二操作请求发送到第三方服务器之前,还用于:
向主服务器发送第一授权请求,以使主服务器根据第一授权请求生成第一授权信息,第一授权信息用于第三方服务器对客户端进行鉴权;
接收主服务器返回的第一授权信息;
其中,第二操作请求中还包括第一授权信息,处理结果为第三方服务器根据第一授权信息对客户端进行鉴权且鉴权通过后,对第二操作请求进行相应处理后的结果。
可选的,操作请求处理模块120还用于:
生成第二授权信息,第二授权信息用于主服务器对客户端进行鉴权;
第二操作请求中还包括第二授权信息,处理结果为第三方服务器将第二授权信息发送给主服务器,并接收到主服务器基于第二授权信息返回的鉴权通过信息后,对第二操作请求进行相应处理后的结果。
可选的,若第三方服务是由第一服务器授权给主服务器的服务,操作请求处理模块在将第二操作请求发送到第三方服务器之前,还用于:
向主服务器发送第二授权请求,以使主服务器根据第二授权请求生成第三授权信息,第三授权信息用于第一服务器对客户端进行鉴权;
接收主服务器返回的第三授权信息;
第二操作请求中还包括第三授权信息,处理结果为第三方服务器将第三授权信息发送给第一服务器,并接收到第一服务器基于第三授权信息返回的鉴权通过信息后,对第二操作请求进行相应处理后的结果。
可选的,若第一操作请求是页面操作请求,且第三方服务器对第一操作请求的处理需要依赖于第一页面中的相关信息,第二操作请求中还包括用于获取相关信息的信息。
可选的,主服务器为主服务的主服务提供商的第二服务器,第三方服务器为主服务提供商的第三服务器,和/或,第二页面的URL中的域名是由主服务提供商提供的域名,和/或,URL中的域名与第一页面的域名属于不同域,和/或,URL中的域名中的主域名与第一页面的域名中的主域名相同。
基于与图9中所示的方法相同的原理,本发明实施例还提供了一种互联网应用中提供第三方服务的装置,如图12中所示,该提供第三方服务的装置200可以包括操作请求接收模块210和操作请求处理模块220。
操作请求接收模块210,用于接收客户端发送的第二操作请求,第二操作请求为客户端基于接收到的第一操作请求生成的请求,第一操作请求为第一页面的页面获取请求,或者为客户端通过第一页面接收到的页面操作请求,第一页面为主服务的页面,主服务为客户端所对应的主服务器提供的服务;
操作请求处理模块220,用于对第二操作请求进行相应的处理,并将处理结果发送至客户端,以使客户端将处理结果显示在第二页面,第二页面为第三方服务器提供的第三方服务的页面。
可选的,第二页面为第一页面的嵌入页面
可选的,第二操作请求中还包括第一授权信息或第二授权信息,第一授权信息为客户端通过向主服务器发送第一授权请求获取到的信息,第一授权信息用于第三方服务器对客户端进行鉴权,第二授权信息为客户端生成的信息,第二授权信息用于主服务器对客户端进行鉴权;
若第二操作请求中包括第一授权信息,操作请求处理模块220在对第二操作请求进行相应的处理时,用于:
根据第一授权信息对客户端进行鉴权,若鉴权通过,则对第二操作请求进行相应的处理;
若第二操作请求中包括第二授权信息,操作请求处理模块220在对第二操作请求进行相应的处理时,用于:
将第二授权信息发送给主服务器,以使主服务器基于第二授权信息对客户端进行鉴权;
接收主服务器返回的对客户端的鉴权结果,若鉴权通过,则对第二操作请求进行相应的处理。
可选的,若第三方服务是由第一服务器授权给主服务器的服务,第二操作请求中还包括第三授权信息,第三授权信息为客户端通过向主服务器发送第二授权请求获取到的信息,第三授权信息用于第一服务器对客户端进行鉴权;操作请求处理模块220在对第二操作请求进行相应的处理时,用于:
将第三授权信息发送给第一服务器,以使第一服务器根据第三授权信息对客户端进行鉴权;
接收第一服务器返回的对主服务器的鉴权结果,若鉴权通过,则对第二操作请求进行相应的处理。
可选的,操作请求接收模块210还用于:
接收客户端发送的第三操作请求,第三操作请求为客户端通过第二页面接收到的请求;
操作请求处理模块220还用于:
在第三操作请求是需要由第三方服务器和主服务器共同处理的请求,则将第四操作请求发送给主服务器,接收主服务器基于第四操作请求返回的第一响应信息,其中,第四操作请求是基于第三操作请求中需要由主服务器处理的请求生成的请求;
根据第一响应信息和第三操作请求中需要由第三方服务器处理的请求,进行相应的处理;
将处理后的结果发送至客户端,以使客户端将处理后的结果显示在第二页面;
在第三操作请求是需要由主服务器处理的请求时,将第五操作请求发送给主服务器,接收主服务器基于第五操作请求返回的第二响应信息,第五操作请求包括第三操作请求;
将第二响应信息发送给客户端,以使客户端将第二响应信息显示在第二页面。
可选的,第二操作请求中还包括客户端的客户端标识,客户端标识为主服务器为客户端分配的标识,第四操作请求或第五操作请求中包括客户端标识。
可以理解的是,本发明实施例的装置的各模块,可以具有实现方法中的相应步骤的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。上述各模块可以是软件和/或硬件,各模块可以单独实现,也可以多个模块集成实现。对于装置的各模块的功能描述具体可以参见上述方法中的相应描述,在此不再赘述。
基于与本发明实施例所提供的方法相同的原理,本发明还提供了一种电子设备,该电子设备包括处理器和存储器;存储器中存储有可读指令,可读指令由处理器加载并执行时,能够实现本发明提供的图3、图9、或者基于图3或图9的任一可选实施例中所提供的提供第三方服务的方法。
基于与本发明实施例所提供的方法相同的原理,本发明还提供了一种计算机可读存储介质,该存储介质中存储有可读指令,可读指令由处理器加载并执行时,能够实现本发明提供的图3、图9、或者基于图3或图9的任一可选实施例中所提供的方法。
图13中示出了适用于本发明实施例的一种电子设备的结构示意图,如图13所示,图13所示的电子设备2000包括处理器2001、存储器2003和收发器2004。其中,处理器2001、存储器2003和收发器2004相连,如可以通过总线2002相连。可选的,实际应用中处理器2001、存储器2003、以及收发器2004均不限于一个,该电子设备2000的结构并不构成对本发明实施例的限定。
其中,处理器2001应用于本发明实施例中,用于实现本发明实施例所提供的第三方服务的装置的功能模块的功能。收发器2004可以包括接收机和发射机,收发器2004应用于本发明实施例中,用于实现电子设备2000与其它设备之间的通信,实现数据的接收和发送。
处理器2001可以是CPU,通用处理器,DSP,ASIC,FPGA或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本发明公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器2001也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。
总线2002可包括一通路,在上述组件之间传送信息。总线2002可以是PCI总线或EISA总线等。总线2002可以分为地址总线、数据总线、控制总线等。为便于表示,图13中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器2003可以是ROM或可存储静态信息和指令的其他类型的静态存储设备,RAM或者可存储信息和指令的其他类型的动态存储设备,也可以是EEPROM、CD-ROM或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。
可选的,存储器2003用于存储执行本发明方案的应用程序代码,并由处理器2001来控制执行。处理器2001用于执行存储器2003中存储的应用程序代码,以实现本发明实施例所提供的方法的步骤或者实现本发明实施例所提供的装置的动作。
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
以上所述仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (15)
1.一种互联网应用中提供第三方服务的方法,其特征在于,所述方法由客户端执行,包括:
接收第一操作请求,其中,所述第一操作请求是第一页面的页面获取请求,或者是通过所述第一页面接收到的页面操作请求,所述第一页面为主服务的页面,所述主服务为所述客户端所对应的主服务器提供的服务;
若所述第一操作请求是所述页面获取请求且所请求的页面内容包括需要由第三方服务器提供的页面内容,或者,所述第一操作请求是所述页面操作请求且是需要由所述第三方服务器处理的请求,则将第二操作请求发送至所述第三方服务器,所述第二操作请求与所述第一操作请求相对应;
接收所述第三方服务器基于所述第二操作请求返回的处理结果,并将处理结果显示到第二页面,所述第二页面为所述第三方服务器提供的第三方服务的页面。
2.根据权利要求1所述的方法,其特征在于,所述第二页面为所述第一页面的嵌入页面。
3.根据权利要求1或2所述的方法,其特征在于,所述将所述第二操作请求发送到第三方服务器之前,还包括:
向所述主服务器发送第一授权请求,以使所述主服务器根据所述第一授权请求生成第一授权信息,所述第一授权信息用于所述第三方服务器对所述客户端进行鉴权;
接收所述主服务器返回的所述第一授权信息;
其中,所述第二操作请求中还包括所述第一授权信息,所述处理结果为所述第三方服务器根据所述第一授权信息对所述客户端进行鉴权且鉴权通过后,对所述第二操作请求进行相应处理后的结果;
或者还包括,
生成第二授权信息,所述第二授权信息用于所述主服务器对所述客户端进行鉴权;
所述第二操作请求中还包括所述第二授权信息,所述处理结果为所述第三方服务器将所述第二授权信息发送给所述主服务器,并接收到所述主服务器基于所述第二授权信息返回的鉴权通过信息后,对所述第二操作请求进行相应处理后的结果。
4.根据权利要求1或2所述的方法,其特征在于,若所述第三方服务是由第一服务器授权给所述主服务器的服务,所述将所述第二操作请求发送到第三方服务器之前,还包括:
向所述主服务器发送第二授权请求,以使所述主服务器根据所述第二授权请求生成第三授权信息,所述第三授权信息用于所述第一服务器对所述客户端进行鉴权;
接收所述主服务器返回的所述第三授权信息;
所述第二操作请求中还包括所述第三授权信息,所述处理结果为所述第三方服务器将所述第三授权信息发送给所述第一服务器,并接收到所述第一服务器基于所述第三授权信息返回的鉴权通过信息后,对所述第二操作请求进行相应处理后的结果。
5.根据权利要求1至4中任一项所述的方法,其特征在于,若所述第一操作请求是所述页面操作请求,且所述第三方服务器对所述第二操作请求的处理需要依赖于所述第一页面中的相关信息,所述第二操作请求中还包括用于获取所述相关信息的信息。
6.根据权利要求1至4中任一项所述的方法,其特征在于,所述主服务器为所述主服务的主服务提供商的第二服务器,所述第三方服务器为所述主服务提供商的第三服务器,和/或,所述第二页面的统一资源定位符URL中的域名是由所述主服务提供商提供的域名,和/或,所述URL中的域名与所述第一页面的域名属于不同域,和/或,所述URL中的域名中的主域名与所述第一页面的域名中的主域名相同。
7.一种互联网应用中提供第三方服务的方法,其特征在于,所述方法由第三方服务器执行,所述第三方服务器为提供第三方服务的服务器,所述方法包括:
接收客户端发送的第二操作请求,所述第二操作请求为所述客户端基于接收到的第一操作请求生成的请求,所述第一操作请求为第一页面的页面获取请求,或者为所述客户端通过所述第一页面接收到的页面操作请求,所述第一页面为主服务的页面,所述主服务为所述客户端所对应的主服务器提供的服务;
对所述第二操作请求进行相应的处理,并将处理结果发送至所述客户端,以使所述客户端将所述处理结果显示在第二页面,所述第二页面为所述第三方服务器提供的第三方服务的页面。
8.根据权利要求7所述的方法,其特征在于,所述第二操作请求中还包括第一授权信息或第二授权信息,所述第一授权信息为所述客户端通过向所述主服务器发送第一授权请求获取到的信息,所述第一授权信息用于所述第三方服务器对所述客户端进行鉴权,所述第二授权信息为所述客户端生成的信息,所述第二授权信息用于所述主服务器对所述客户端进行鉴权;
若所述第二操作请求中包括所述第一授权信息,所述对所述第二操作请求进行相应的处理,包括:
根据所述第一授权信息对所述客户端进行鉴权,若鉴权通过,则对所述第二操作请求进行相应的处理;
若所述第二操作请求中包括所述第二授权信息,所述对所述第二操作请求进行相应的处理,包括:
将所述第二授权信息发送给所述主服务器,以使所述主服务器基于所述第二授权信息对所述客户端进行鉴权;
接收所述主服务器返回的对所述客户端的鉴权结果,若鉴权通过,则对所述第二操作请求进行相应的处理。
9.根据权利要求7所述的方法,其特征在于,若所述第三方服务是由第一服务器授权给所述主服务器的服务,所述第二操作请求中还包括第三授权信息,所述第三授权信息为所述客户端通过向所述主服务器发送第二授权请求获取到的信息,所述第三授权信息用于所述第一服务器对所述客户端进行鉴权;
所述对所述第二操作请求进行相应的处理,包括:
将所述第三授权信息发送给所述第一服务器,以使所述第一服务器根据所述第三授权信息对所述客户端进行鉴权;
接收所述第一服务器返回的对所述客户端的鉴权结果,若鉴权通过,则对所述第二操作请求进行相应的处理。
10.根据权利要求7至9中任一项所述的方法,其特征在于,还包括:
接收所述客户端发送的第三操作请求,所述第三操作请求为所述客户端通过所述第二页面接收到的请求;
若所述第三操作请求是需要由所述第三方服务器和所述主服务器共同处理的请求,则将第四操作请求发送给所述主服务器,其中,所述第四操作请求是基于所述第三操作请求中需要由所述主服务器处理的请求生成的请求;
接收所述主服务器基于所述第四操作请求返回的第一响应信息;
根据所述第一响应信息和所述第三操作请求中需要由所述第三方服务器处理的请求,进行相应的处理;
将处理后的结果发送至所述客户端,以使所述客户端将所述处理后的结果显示在所述第二页面;
若所述第三操作请求是需要由所述主服务器处理的请求,则将第五操作请求发送给所述主服务器,接收所述主服务器基于所述第五操作请求返回的第二响应信息,所述第五操作请求包括所述第三操作请求;
将所述第二响应信息发送给所述客户端,以使所述客户端将所述第二响应信息显示在所述第二页面。
11.根据权利要求10所述的方法,其特征在于,所述第二操作请求中还包括所述客户端的客户端标识,所述客户端标识为所述主服务器为所述客户端分配的标识,所述第四操作请求或所述第五操作请求中包括所述客户端标识。
12.一种互联网应用中提供第三方服务的装置,其特征在于,包括:
操作请求接收模块,用于接收第一操作请求,其中,所述第一操作请求是第一页面的页面获取请求,或者是通过所述第一页面接收到的页面操作请求,所述第一页面为主服务的页面,所述主服务为客户端所对应的主服务器提供的服务;
操作请求处理模块,用于在所述第一操作请求是所述页面获取请求且所请求的页面内容包括需要由第三方服务器提供的页面内容,或者,所述第一操作请求是所述页面操作请求且所述第一操作请求是需要由所述第三方服务器处理的请求时,将第二操作请求发送至所述第三方服务器,所述第二操作请求与所述第一操作请求相对应;
处理结果显示模块,用于接收所述第三方服务器基于所述第二操作请求返回的处理结果,并将处理结果显示到第二页面,所述第二页面为所述第三方服务器提供的第三方服务的页面。
13.一种互联网应用中提供第三方服务的装置,其特征在于,包括:
操作请求接收模块,用于接收客户端发送的第二操作请求,所述第二操作请求为所述客户端基于接收到的第一操作请求生成的请求,所述第一操作请求为第一页面的页面获取请求,或者为所述客户端通过所述第一页面接收到的页面操作请求,所述第一页面为主服务的页面,所述主服务为所述客户端所对应的主服务器提供的服务;
操作请求处理模块,用于对所述第二操作请求进行相应的处理,并将处理结果发送至所述客户端,以使所述客户端将所述处理结果显示在第二页面,所述第二页面为所述第三方服务器提供的第三方服务的页面。
14.一种电子设备,其特征在于,所述电子设备包括处理器和存储器;
所述存储器中存储有可读指令,所述可读指令由所述处理器加载并执行时,实现如权利要求1至11中任一项所述的提供第三方服务的方法。
15.一种计算机可读存储介质,其特征在于,所述存储介质中存储有可读指令,所述可读指令由处理器加载并执行时,实现如权利要求1至11中任一项所述的提供第三方服务的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910044756.9A CN110213321B (zh) | 2019-01-17 | 2019-01-17 | 互联网应用中提供第三方服务的方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910044756.9A CN110213321B (zh) | 2019-01-17 | 2019-01-17 | 互联网应用中提供第三方服务的方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110213321A true CN110213321A (zh) | 2019-09-06 |
CN110213321B CN110213321B (zh) | 2023-05-05 |
Family
ID=67784962
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910044756.9A Active CN110213321B (zh) | 2019-01-17 | 2019-01-17 | 互联网应用中提供第三方服务的方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110213321B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111191200A (zh) * | 2019-12-20 | 2020-05-22 | 北京淇瑀信息科技有限公司 | 一种页面展示方法、装置和电子设备 |
CN112839247A (zh) * | 2021-01-04 | 2021-05-25 | 聚好看科技股份有限公司 | 一种内容显示方法、显示设备及云端服务器 |
CN113285936A (zh) * | 2021-05-14 | 2021-08-20 | 深圳市金蝶天燕云计算股份有限公司 | 一种跨域数据获取方法以及相关装置 |
CN113298598A (zh) * | 2020-09-15 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 提供店铺对象信息的方法、装置及电子设备 |
CN113542229A (zh) * | 2021-06-21 | 2021-10-22 | 浙大城市学院 | 一种安全非同源页面跨域通信的方法 |
CN113934482A (zh) * | 2020-07-14 | 2022-01-14 | 北京奇虎科技有限公司 | 页面的展示方法、设备、存储介质及装置 |
CN114153729A (zh) * | 2021-11-30 | 2022-03-08 | 北京达佳互联信息技术有限公司 | 网页测试方法、装置、电子设备和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104348612A (zh) * | 2013-07-23 | 2015-02-11 | 腾讯科技(深圳)有限公司 | 一种基于移动终端的第三方网站登录方法和移动终端 |
CN107145552A (zh) * | 2017-04-28 | 2017-09-08 | 努比亚技术有限公司 | 页面访问方法、设备和计算机存储介质 |
CN107943547A (zh) * | 2016-10-13 | 2018-04-20 | 阿里巴巴集团控股有限公司 | 多服务集成方法、装置、智能终端、服务器和操作系统 |
-
2019
- 2019-01-17 CN CN201910044756.9A patent/CN110213321B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104348612A (zh) * | 2013-07-23 | 2015-02-11 | 腾讯科技(深圳)有限公司 | 一种基于移动终端的第三方网站登录方法和移动终端 |
CN107943547A (zh) * | 2016-10-13 | 2018-04-20 | 阿里巴巴集团控股有限公司 | 多服务集成方法、装置、智能终端、服务器和操作系统 |
CN107145552A (zh) * | 2017-04-28 | 2017-09-08 | 努比亚技术有限公司 | 页面访问方法、设备和计算机存储介质 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111191200A (zh) * | 2019-12-20 | 2020-05-22 | 北京淇瑀信息科技有限公司 | 一种页面展示方法、装置和电子设备 |
CN111191200B (zh) * | 2019-12-20 | 2023-08-04 | 北京淇瑀信息科技有限公司 | 一种三方联动鉴权页面展示方法、装置和电子设备 |
CN113934482A (zh) * | 2020-07-14 | 2022-01-14 | 北京奇虎科技有限公司 | 页面的展示方法、设备、存储介质及装置 |
CN113298598A (zh) * | 2020-09-15 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 提供店铺对象信息的方法、装置及电子设备 |
CN112839247A (zh) * | 2021-01-04 | 2021-05-25 | 聚好看科技股份有限公司 | 一种内容显示方法、显示设备及云端服务器 |
CN113285936A (zh) * | 2021-05-14 | 2021-08-20 | 深圳市金蝶天燕云计算股份有限公司 | 一种跨域数据获取方法以及相关装置 |
CN113285936B (zh) * | 2021-05-14 | 2023-10-31 | 深圳市金蝶天燕云计算股份有限公司 | 一种跨域数据获取方法以及相关装置 |
CN113542229A (zh) * | 2021-06-21 | 2021-10-22 | 浙大城市学院 | 一种安全非同源页面跨域通信的方法 |
CN113542229B (zh) * | 2021-06-21 | 2023-03-24 | 浙大城市学院 | 一种安全非同源页面跨域通信的方法 |
CN114153729A (zh) * | 2021-11-30 | 2022-03-08 | 北京达佳互联信息技术有限公司 | 网页测试方法、装置、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110213321B (zh) | 2023-05-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110213321A (zh) | 互联网应用中提供第三方服务的方法、装置及电子设备 | |
CN106850699B (zh) | 一种移动终端登录认证方法及系统 | |
TWI671644B (zh) | 網站登錄方法和裝置 | |
Armando et al. | Formal analysis of SAML 2.0 web browser single sign-on: breaking the SAML-based single sign-on for google apps | |
US8312523B2 (en) | Enhanced security for electronic communications | |
CN103563294B (zh) | 用于云计算平台安全性的认证和授权方法 | |
CN101990183B (zh) | 保护用户信息的方法、装置及系统 | |
CN101171782B (zh) | 对等认证和授权 | |
CN101860540B (zh) | 一种识别网站服务合法性的方法及装置 | |
CN106790183A (zh) | 登录凭证校验方法、装置 | |
CN106302606B (zh) | 一种跨应用访问方法及装置 | |
US10581806B2 (en) | Service providing method, service requesting method, information processing device, and client device | |
CN110011950B (zh) | 一种视频流地址的鉴权方法及装置 | |
CN108011717A (zh) | 一种请求用户数据的方法、装置及系统 | |
CN109889510B (zh) | 用于服务提供方传输业务报文的多重加密方法 | |
CN103685204A (zh) | 基于物联网资源共享平台的资源鉴权方法 | |
CN101296230B (zh) | 基于PKI和PMI的Web服务安全控制方法 | |
CN109040079A (zh) | 直播链接地址的组建和验证方法及相应装置 | |
JP2013115522A (ja) | リンク・アクセスの制御方法、プログラム及びシステム | |
US9553863B2 (en) | Computer implemented method and system for an anonymous communication and computer program thereof | |
CN116992458A (zh) | 基于可信执行环境的可编程数据处理方法以及系统 | |
CN106453069B (zh) | 一种即时通信消息发送、查看、查看控制方法及其设备 | |
CN109460993A (zh) | 一种信息处理方法、装置及存储介质 | |
CN109831432B (zh) | 服务提供方h5应用形式的第三方安全接入方法 | |
Kumar | Using automated model analysis for reasoning about security of web protocols |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |