CN104199654B - 开放平台的调用方法及装置 - Google Patents

开放平台的调用方法及装置 Download PDF

Info

Publication number
CN104199654B
CN104199654B CN201410427923.5A CN201410427923A CN104199654B CN 104199654 B CN104199654 B CN 104199654B CN 201410427923 A CN201410427923 A CN 201410427923A CN 104199654 B CN104199654 B CN 104199654B
Authority
CN
China
Prior art keywords
application
identification information
open platform
signing messages
signature
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.)
Active
Application number
CN201410427923.5A
Other languages
English (en)
Other versions
CN104199654A (zh
Inventor
朱建庭
郑伟德
张弛
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN201410427923.5A priority Critical patent/CN104199654B/zh
Publication of CN104199654A publication Critical patent/CN104199654A/zh
Priority to PCT/CN2014/093750 priority patent/WO2016029595A1/zh
Application granted granted Critical
Publication of CN104199654B publication Critical patent/CN104199654B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems

Abstract

本发明提供一种开放平台的调用方法及装置。本发明实施例通过获取应用的身份标识信息,进而对所述身份标识信息进行签名处理,以获得所述应用的第一签名信息,并向开放平台发送所述第一签名信息和所述应用的应用标识信息,使得能够接收所述开放平台发送的访问令牌,用以调用所述开放平台所提供的开放API,由于没有传输明文的验证参数,从而提高了安全平台的调用的安全性。

Description

开放平台的调用方法及装置
【技术领域】
本发明涉及授权技术,尤其涉及一种开放平台的调用方法及装置。
【背景技术】
在互联网时代,把网站的服务封装成一系列机器易识别的数据接口开放出去,供第三方开发者使用,这种行为就叫做开放(Open)应用程序编程接口(ApplicationProgramming Interface,API),提供开放API的平台本身就被称为开放平台(OpenPlatform)。目前,大部分开放平台所提供的开放API,在被第三方应用调用时,都需要第三方应用通过开放平台所提供的授权机制获取一个访问令牌,又可以称为访问授权码。在第三方应用每次调用开放API时,都需要携带这个访问令牌,以供开放平台能够根据该访问令牌,向第三方应用提供相应的访问权限。
现有技术中,应用可以利用应用开放平台为应用分配的应用标识信息和密钥信息,向开放平台请求获取访问令牌,安全性不高。
【发明内容】
本发明的多个方面提供一种开放平台的调用方法及装置,用以提高安全平台的调用的安全性。
本发明的一方面,提供一种开放平台的调用方法,包括:
获取应用的身份标识信息;
对所述身份标识信息进行签名处理,以获得所述应用的第一签名信息;
向开放平台发送所述第一签名信息和所述应用的应用标识信息;
接收所述开放平台发送的访问令牌,用以调用所述开放平台所提供的开放API,所述访问令牌为所述开放平台利用第二签名信息,对所述第一签名信息进行验证成功之后获得的,所述第二签名信息为所述开放平台对所述应用注册的身份标识信息进行签名处理获得的,所述应用注册的身份标识信息为所述开放平台根据所述应用标识信息获得的。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述获取应用的身份标识信息,包括:
调用所述应用所提供的接口,以获得所述身份标识信息。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述调用所述应用所提供的接口,以获得所述身份标识信息,包括:
调用所述应用的Java语言库接口;采用JNI技术,调用所述应用的C语言库接口或C++语言库接口,以调用所述操作系统所提供的接口,以获得所述身份标识信息。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述身份标识信息包括包名和包签名中的至少一项。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述对所述身份标识信息进行签名处理,以获得所述应用的第一签名信息之前,还包括:
获取当前的网络时间戳;
所述对所述身份标识信息进行签名处理,以获得所述应用的第一签名信息,包括:
对所述身份标识信息和所述网络时间戳进行签名处理,以获得所述第一签名信息;
所述向开放平台发送所述第一签名信息和所述应用的应用标识信息,包括:
向所述开放平台发送所述应用的应用标识信息、所述网络时间戳和所述第一签名信息;
所述第二签名信息具体为所述开放平台对所述应用注册的身份标识信息和所述网络时间戳进行签名处理获得的,所述应用注册的身份标识信息为所述开放平台根据所述网络时间戳和所述应用标识信息获得的。
本发明的另一方面,提供一种开放平台的调用装置,包括:
获取单元,用于获取应用的身份标识信息;
签名单元,用于对所述身份标识信息进行签名处理,以获得所述应用的第一签名信息;
发送单元,用于向开放平台发送所述第一签名信息和所述应用的应用标识信息;
接收单元,用于接收所述开放平台发送的访问令牌,用以调用所述开放平台所提供的开放API,所述访问令牌为所述开放平台利用第二签名信息,对所述第一签名信息进行验证成功之后获得的,所述第二签名信息为所述开放平台对所述应用注册的身份标识信息进行签名处理获得的,所述应用注册的身份标识信息为所述开放平台根据所述应用标识信息获得的。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述获取单元,具体用于
调用所述应用所提供的接口,以获得所述身份标识信息。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述获取单元,具体用于
调用所述应用的Java语言库接口;采用JNI技术,调用所述应用的C语言库接口或C++语言库接口,以调用所述操作系统所提供的接口,以获得所述身份标识信息。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述身份标识信息包括包名和包签名中的至少一项。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,
所述获取单元,还用于
获取当前的网络时间戳;
所述签名单元,具体用于
对所述身份标识信息和所述网络时间戳进行签名处理,以获得所述第一签名信息;
所述发送单元,具体用于
向所述开放平台发送所述应用的应用标识信息、所述网络时间戳和所述第一签名信息;
所述第二签名信息具体为所述开放平台对所述应用注册的身份标识信息和所述网络时间戳进行签名处理获得的,所述应用注册的身份标识信息为所述开放平台根据所述网络时间戳和所述应用标识信息获得的。
由上述技术方案可知,本发明实施例通过获取应用的身份标识信息,进而对所述身份标识信息进行签名处理,以获得所述应用的第一签名信息,并向开放平台发送所述第一签名信息和所述应用的应用标识信息,使得能够接收所述开放平台发送的访问令牌,用以调用所述开放平台所提供的开放API,由于没有传输明文的验证参数,从而提高了安全平台的调用的安全性。
另外,采用本发明提供的技术方案,由于没有传输明文的密钥信息,能够避免由于验证参数泄露而导致的安全问题,能够进一步提高安全平台的调用的安全性。
另外,采用本发明提供的技术方案,应用和应用所对应的服务器无需存储密钥信息,能够避免由于验证参数泄露而导致的安全问题,能够进一步提高安全平台的调用的安全性。
另外,采用本发明提供的技术方案,通过利用C语言库接口或C++语言库接口,直接调用操作系统所提供的接口,来获得应用的身份标识信息,使得恶意的应用无法伪造身份标识信息,能够避免由于恶意的应用伪造身份标识信息而导致的安全问题,能够进一步提高安全平台的调用的安全性。
另外,采用本发明提供的技术方案,由于利用C语言库接口或C++语言库接口,实现签名处理所需要的对象即应用的身份标识信息,的获取,攻击者想要完全破解的难度相当大,能够进一步提高安全平台的调用的安全性。
另外,采用本发明提供的技术方案,由于除了第一签名信息和应用的应用标识信息之外,还进一步将当前的网络时间戳作为验证参数,发送给开放平台,以共同参与开放平台对第一签名信息的验证操作,使得攻击者无法通过重放验证参数来通过验证,能够避免由于攻击者利用重放验证参数而导致的安全问题,能够进一步提高安全平台的调用的安全性。
【附图说明】
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一实施例提供的开放平台的调用方法的流程示意图;
图2为本发明另一实施例提供的开放平台的调用方法的流程示意图;
图3为本发明另一实施例提供的开放平台的调用装置的结构示意图。
【具体实施方式】
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的全部其他实施例,都属于本发明保护的范围。
需要说明的是,本发明实施例中所涉及的终端可以包括但不限于手机、个人数字助理(Personal Digital Assistant,PDA)、无线手持装置、无线上网本、个人电脑、便携电脑、平板电脑、MP3播放器、MP4播放器、可穿戴设备(例如,智能眼镜、智能手表、智能手环等)等。
另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
图1为本发明一实施例提供的开放平台的调用方法的流程示意图,如图1所示。
101、获取应用的身份标识信息。
其中,应用,即第三方应用,是指运行在装载操作系统的终端上的应用程序,可以为安卓(Android)应用,或者还可以为IOS应用,本实施例对此不进行特别限定。安卓(Android)应用,是运行在装载安卓操作系统的终端上的应用程序。IOS应用,是运行在装载IOS操作系统的终端上的应用程序。
102、对所述身份标识信息进行签名处理,以获得所述应用的第一签名信息。
103、向开放平台发送所述第一签名信息和所述应用的应用标识信息。
104、接收所述开放平台发送的访问令牌,用以调用所述开放平台所提供的开放API,所述访问令牌为所述开放平台利用第二签名信息,对所述第一签名信息进行验证成功之后获得的,所述第二签名信息为所述开放平台对所述应用注册的身份标识信息进行签名处理获得的,所述应用注册的身份标识信息为所述开放平台根据所述应用标识信息获得的。
访问令牌(token)可以为一个唯一的字符串,用于标识应用。一旦身份验证通过之后,应用在后续与开放平台的通信过程中,需要携带这个访问令牌,用于表明其身份。
需要说明的是,101~104的执行主体可以为位于本地终端的应用,或者还可以为位于本地终端的应用中的插件或软件开发工具包(Software Development Kit,SDK)等功能单元,这些功能单元具体可以由一系列编程语言代码和编程语言代码所实现的库(例如,LIB库等)组成,本实施例对此不进行特别限定。
可以理解的是,所述应用可以是安装在终端上的应用程序(nativeApp),或者还可以是终端上的浏览器的一个网页程序(webApp),本实施例对此不进行限定。
这样,通过获取应用的身份标识信息,进而对所述身份标识信息进行签名处理,以获得所述应用的第一签名信息,并向开放平台发送所述第一签名信息和所述应用的应用标识信息,使得能够接收所述开放平台发送的访问令牌,用以调用所述开放平台所提供的开放API,由于没有传输明文的验证参数,从而提高了安全平台的调用的安全性。
可选地,在本实施例的一个可能的实现方式中,在101之前,应用具体可以与开放平台进行交互,以执行注册操作。在执行注册操作的过程中,应用具体可以向开放平台发送应用的身份标识信息。完成注册操作之后,应用获得一个由开放平台为应用分配的应用标识信息例如,应用ID等,用以在开放平台上唯一标识该应用。
其中,所述身份标识信息可以包括但不限于包名和包签名中的至少一项。
例如,安卓应用的包(package)名,是指安卓应用的安装包(Android PackageKit,APK)文件的名称。安卓应用的包签名,是指安卓应用的安装包(Android Package Kit,APK)文件的签名信息。
一般来说,APK文件,是一种安卓操作系统上的应用安装文件格式,其英文全称为“Application Package File”。一个安卓应用的代码想要在装载安卓操作系统的设备上运行,必须先进行编译,然后被打包成为一个被安卓操作系统所能识别的文件才可以被运行,而这种能被安卓操作系统识别并运行的文件格式便是“.APK”。一个APK文件内包含清单文件(AndroidManifest.xml)、META-INFO文件夹、被编译的代码文件(classes.dex)、res文件夹和资源文件(resources.arsc)。其中,APK文件的详细描述可以参见现有技术中的相关内容,此处不再赘述。APK文件实际上是一个ZIP压缩包。其中,APK文件的名称,可以存储在AndroidManifest.xml中。APK文件的签名信息,可以存储在META-INF目录即META-INF文件夹下。
可选地,在本实施例的一个可能的实现方式中,在101中,具体可以调用所述应用所提供的接口,以获得所述身份标识信息。
具体地,具体可以调用所述应用的Java语言库接口;采用Java本地调用(JavaNative Interface,JNI)技术,调用所述应用的C语言库接口或C++语言库接口,以调用所述操作系统所提供的接口,以获得所述身份标识信息。
这样,通过利用C语言库接口或C++语言库接口,直接调用操作系统所提供的接口,来获得应用的身份标识信息,使得恶意的应用无法伪造身份标识信息,能够避免由于恶意的应用伪造身份标识信息而导致的安全问题,能够进一步提高安全平台的调用的安全性。
此外,由于利用C语言库接口或C++语言库接口,实现签名处理所需要的对象即应用的身份标识信息,的获取,攻击者想要完全破解的难度相当大,能够进一步提高安全平台的调用的安全性。
可选地,在本实施例的一个可能的实现方式中,在102中,具体可以采用现有技术中的任何签名算法,对所述身份标识信息进行签名处理。例如,可以采用信息摘要算法5(Message-Digest Algorithm 5,MD5)或安全散列算法(Secure Hash Algorithm,SHA)等算法,对所述身份标识信息进行签名处理,本实施例对此不进行特别限定。
本实施例中,开放平台接收到所述应用标识信息之后,则可以根据所述应用标识信息,获得所述应用注册的身份标识信息,进而对所述应用注册的身份标识信息进行签名处理,以获得第二签名信息。然后,所述开放平台则可以利用所述第二签名信息,对所述第一签名信息进行验证。若所述第一签名信息与所述第二签名信息一致,则说明验证成功;若所述第一签名信息与所述第二签名信息不一致,则说明验证失败。
可以理解的是,开放平台对所述应用注册的身份标识信息进行的签名处理,应该与102中所执行的签名处理是一致的,其所使用的密钥信息也应该是一致。
可选地,在本实施例的一个可能的实现方式中,在102之前,还可以进一步获取当前的网络时间戳。
之所以获取当前的网络时间戳,原因在于,很多用户都会修改终端上的系统时间戳,系统时间戳与真正的网络时间戳一般都是不一致的,甚至相差会很大,因此,终端上的系统时间戳并不能准确地反映当前的时间信息,只有网络时间戳才能准确地反映当前的时间信息。
需要说明的是,执行获取应用的身份标识信息的步骤与执行获取当前的网络时间戳的步骤,没有固定的执行顺序,可以先执行获取应用的身份标识信息的步骤,再执行获取当前的网络时间戳的步骤,或者还可以执行获取应用的身份标识信息的步骤的同时,执行获取当前的网络时间戳的步骤,或者还可以先执行获取当前的网络时间戳的步骤,再执行获取应用的身份标识信息的步骤,本实施例对此不进行特别限定。
相应地,在102中,具体可以对所述身份标识信息和所述网络时间戳进行签名处理,以获得所述第一签名信息。在103中,则可以向所述开放平台发送所述应用的应用标识信息、所述网络时间戳和所述第一签名信息,以供所述开放平台根据所述网络时间戳和所述应用标识信息,获得所述应用注册的身份标识信息,对所述应用注册的身份标识信息和所述网络时间戳进行签名处理,以获得所述第二签名信息。
具体地,开放平台接收到所述应用的应用标识信息、所述网络时间戳和所述第一签名信息之后,首先根据所述网络时间戳和当前的系统时间戳进行判断,以确定当前所接收到的这些验证参数(即所述应用的应用标识信息、所述网络时间戳和所述第一签名信息)是否为攻击者的重放攻击。若所述网络时间戳与当前的系统时间戳之间的差值小于或等于预先设置的时间阈值例如,5分钟,则可以确定当前所接收到的这些验证参数不是攻击者的重放攻击,是一个正常的消息,可以继续执行后续操作即执行根据所述应用标识信息,获得所述应用注册的身份标识信息;若所述网络时间戳与当前的系统时间戳之间的差值大于该时间阈值,则可以确定当前所接收到的这些验证参数是攻击者的重放攻击,是一个异常的消息,不再执行后续操作即不再执行根据所述应用标识信息,获得所述应用注册的身份标识信息,进一步还可以直接返回错误代码。
之所以利用当前的系统时间戳,原因在于,大部分开放平台都能够保证其上的系统时间戳与真正的网络时间戳是一致的,因此,开放平台的系统时间戳已经能够准确地反映当前的时间信息,无需再去获取网络时间戳。
重放攻击(Replay Attacks)又称重播攻击、回放攻击或新鲜性攻击(FreshnessAttacks),是指攻击者发送一个目的主机已接收过的包,来达到欺骗系统的目的,主要用于身份认证过程,破坏认证的正确性。它是一种攻击类型,这种攻击会不断恶意或欺诈性地重复一个有效的数据传输,重放攻击可以由发起者,也可以由拦截并重发该数据的敌方进行。攻击者利用网络监听或者其他方式盗取认证凭据例如,本发明中的验证参数等,之后再把它重新发给认证服务器例如,本发明中的开放平台等。
从这个解释上理解,签名处理可以有效防止会话劫持,但是却防止不了重放攻击。重放攻击任何网络通信过程中都可能发生。
这样,由于除了第一签名信息和应用的应用标识信息之外,还进一步将当前的网络时间戳作为验证参数,发送给开放平台,以共同参与开放平台对第一签名信息的验证操作,使得攻击者无法通过重放验证参数来通过验证,能够避免由于攻击者利用重放验证参数而导致的安全问题,能够进一步提高安全平台的调用的安全性。
下面将以本地终端的安卓应用A,以及位于安卓应用A中的SDK为例,详细说明本发明所提供的技术方案。本实施例所提供的SDK,具体可以由一系列Java语言代码和C语言/C++语言代码所实现的LIB库组成,该C语言/C++语言代码所实现的LIB库中存储C语言/C++语言库接口。如图2所示。
201、安卓应用A向开放平台发送安卓应用A的包名和包签名,以执行注册操作。
202、开放平台为安卓应用A分配应用ID。
203、开放平台向安卓应用A发送所分配的应用ID。
204、安卓应用A获取当前的网络时间戳。
205、安卓应用A调用SDK提供的用于获取签名信息的Java语言库接口,将所述网络时间戳传入C语言/C++语言库接口,以调用操作系统所提供的接口,以获得该安卓应用A的包名和包签名。
SDK提供的用于获取签名信息的Java语言库接口被调用之后,可以利用预先设置的签名密钥,对安卓应用A的包名和包签名、以及所述网络时间戳进行签名处理,以获得安卓应用A的第一签名信息。
206、安卓应用A向开放平台发送安卓应用A的应用ID、所述第一签名信息和所述网络时间戳。
207、开放平台根据所述网络时间戳和当前的系统时间戳进行判断,以确定当前所接收到的验证参数(即安卓应用A的应用ID、所述第一签名信息和所述网络时间戳)是否为攻击者的重放攻击,若不是攻击者的重放攻击,则执行208,否则,结束流程。
208、开放平台根据安卓应用A的应用ID,获得安卓应用A注册的安卓应用A的包名和包签名,利用预先设置的签名密钥(与获得第一签名信息时所使用的签名密钥一致),对安卓应用A的包名和包签名、以及所述网络时间戳进行签名处理,以获得安卓应用A的第二签名信息。
209、开放平台利用所述第二签名信息,对所述第一签名信息进行验证,若验证成功,则执行210,否则,结束流程。
具体地,若所述第一签名信息与所述第二签名信息一致,则说明验证成功;若所述第一签名信息与所述第二签名信息不一致,则说明验证失败
210、开放平台根据安卓应用A的应用ID,以及安卓应用A的其他相关信息,生成访问令牌。
生成访问令牌的详细描述具体可以参见现有技术中的相关内容,此处不再赘述。
211、开放平台向安卓应用A发送所述访问令牌。
至此,安卓应用A获得开放平台所提供的访问令牌,在安卓应用A每次调用开放平台所提供的开放API时,都需要携带这个访问令牌,以供开放平台能够根据该访问令牌,向安卓应用A提供相应的访问权限。
本实施例中,通过获取应用的身份标识信息,进而对所述身份标识信息进行签名处理,以获得所述应用的第一签名信息,并向开放平台发送所述第一签名信息和所述应用的应用标识信息,使得能够接收所述开放平台发送的访问令牌,用以调用所述开放平台所提供的开放API,由于没有传输明文的验证参数,从而提高了安全平台的调用的安全性。
另外,采用本发明提供的技术方案,由于没有传输明文的密钥信息,能够避免由于验证参数泄露而导致的安全问题,能够进一步提高安全平台的调用的安全性。
另外,采用本发明提供的技术方案,应用和应用所对应的服务器无需存储密钥信息,能够避免由于验证参数泄露而导致的安全问题,能够进一步提高安全平台的调用的安全性。
另外,采用本发明提供的技术方案,通过利用C语言库接口或C++语言库接口,直接调用操作系统所提供的接口,来获得应用的身份标识信息,使得恶意的应用无法伪造身份标识信息,能够避免由于恶意的应用伪造身份标识信息而导致的安全问题,能够进一步提高安全平台的调用的安全性。
另外,采用本发明提供的技术方案,由于利用C语言库接口或C++语言库接口,实现签名处理所需要的对象即应用的身份标识信息,的获取,攻击者想要完全破解的难度相当大,能够进一步提高安全平台的调用的安全性。
另外,采用本发明提供的技术方案,由于除了第一签名信息和应用的应用标识信息之外,还进一步将当前的网络时间戳作为验证参数,发送给开放平台,以共同参与开放平台对第一签名信息的验证操作,使得攻击者无法通过重放验证参数来通过验证,能够避免由于攻击者利用重放验证参数而导致的安全问题,能够进一步提高安全平台的调用的安全性。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
图3为本发明另一实施例提供的开放平台的调用装置的结构示意图,如图3所示。本实施例的开放平台的调用装置可以包括获取单元31、签名单元32、发送单元33和接收单元34。其中,获取单元31,用于获取应用的身份标识信息;签名单元32,用于对所述身份标识信息进行签名处理,以获得所述应用的第一签名信息;发送单元33,用于向开放平台发送所述第一签名信息和所述应用的应用标识信息;接收单元34,用于接收所述开放平台发送的访问令牌,用以调用所述开放平台所提供的开放API,所述访问令牌为所述开放平台利用第二签名信息,对所述第一签名信息进行验证成功之后获得的,所述第二签名信息为所述开放平台对所述应用注册的身份标识信息进行签名处理获得的,所述应用注册的身份标识信息为所述开放平台根据所述应用标识信息获得的。
需要说明的是,本实施例所提供的开放平台的调用装置可以为位于本地终端的应用,或者还可以为位于本地终端的应用中的插件或软件开发工具包(SoftwareDevelopment Kit,SDK)等功能单元,这些功能单元具体可以由一系列编程语言代码和编程语言代码所实现的库(例如,LIB库等)组成,本实施例对此不进行特别限定。
可以理解的是,所述应用可以是安装在终端上的应用程序(nativeApp),或者还可以是终端上的浏览器的一个网页程序(webApp),本实施例对此不进行限定。
其中,所述身份标识信息可以包括但不限于包名和包签名中的至少一项,本实施例对此不进行特别限定。
可选地,在本实施例的一个可能的实现方式中,所述获取单元31,具体可以用于调用所述应用所提供的接口,以获得所述身份标识信息。
具体地,所述获取单元31,具体可以用于调用所述应用的Java语言库接口;采用JNI技术,调用所述应用的C语言库接口或C++语言库接口,以调用所述操作系统所提供的接口,以获得所述身份标识信息。
可选地,在本实施例的一个可能的实现方式中,所述获取单元31,还可以进一步用于获取当前的网络时间戳。
相应地,所述签名单元32,具体可以用于对所述身份标识信息和所述网络时间戳进行签名处理,以获得所述第一签名信息;所述发送单元33,具体可以用于向所述开放平台发送所述应用的应用标识信息、所述网络时间戳和所述第一签名信息;所述第二签名信息具体为所述开放平台对所述应用注册的身份标识信息和所述网络时间戳进行签名处理获得的,所述应用注册的身份标识信息为所述开放平台根据所述网络时间戳和所述应用标识信息获得的。
需要说明的是,图1对应的实施例中方法,可以由本实施例提供的开放平台的调用装置实现。详细描述可以参见图1对应的实施例中的相关内容,此处不再赘述。
本实施例中,通过获取单元获取应用的身份标识信息,进而由签名单元对所述身份标识信息进行签名处理,以获得所述应用的第一签名信息,并由发送单元向开放平台发送所述第一签名信息和所述应用的应用标识信息,使得接收单元能够接收所述开放平台发送的访问令牌,用以调用所述开放平台所提供的开放API,由于没有传输明文的验证参数,从而提高了安全平台的调用的安全性。
另外,采用本发明提供的技术方案,由于没有传输明文的密钥信息,能够避免由于验证参数泄露而导致的安全问题,能够进一步提高安全平台的调用的安全性。
另外,采用本发明提供的技术方案,应用和应用所对应的服务器无需存储密钥信息,能够避免由于验证参数泄露而导致的安全问题,能够进一步提高安全平台的调用的安全性。
另外,采用本发明提供的技术方案,通过利用C语言库接口或C++语言库接口,直接调用操作系统所提供的接口,来获得应用的身份标识信息,使得恶意的应用无法伪造身份标识信息,能够避免由于恶意的应用伪造身份标识信息而导致的安全问题,能够进一步提高安全平台的调用的安全性。
另外,采用本发明提供的技术方案,由于利用C语言库接口或C++语言库接口,实现签名处理所需要的对象即应用的身份标识信息,的获取,攻击者想要完全破解的难度相当大,能够进一步提高安全平台的调用的安全性。
另外,采用本发明提供的技术方案,由于除了第一签名信息和应用的应用标识信息之外,还进一步将当前的网络时间戳作为验证参数,发送给开放平台,以共同参与开放平台对第一签名信息的验证操作,使得攻击者无法通过重放验证参数来通过验证,能够避免由于攻击者利用重放验证参数而导致的安全问题,能够进一步提高安全平台的调用的安全性。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机装置(可以是个人计算机,服务器,或者网络装置等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (10)

1.一种开放平台的调用方法,其特征在于,包括:
获取应用的身份标识信息;
对所述身份标识信息进行签名处理,以获得所述应用的第一签名信息;
向开放平台发送所述第一签名信息和所述应用的应用标识信息;
接收所述开放平台发送的访问令牌,用以调用所述开放平台所提供的开放API,所述访问令牌为所述开放平台利用第二签名信息,对所述第一签名信息进行验证成功之后获得的,所述第二签名信息为所述开放平台对所述应用注册的身份标识信息进行签名处理获得的,所述应用注册的身份标识信息为所述开放平台根据所述应用标识信息获得的。
2.根据权利要求1所述的方法,其特征在于,所述获取应用的身份标识信息,包括:
调用所述应用所提供的接口,以获得所述身份标识信息。
3.根据权利要求2所述的方法,其特征在于,所述调用所述应用所提供的接口,以获得所述身份标识信息,包括:
调用所述应用的Java语言库接口;采用JNI技术,调用所述应用的C语言库接口或C++语言库接口,以调用操作系统所提供的接口,以获得所述身份标识信息。
4.根据权利要求1所述的方法,其特征在于,所述身份标识信息包括包名和包签名中的至少一项。
5.根据权利要求1~4任一权利要求所述的方法,其特征在于,所述对所述身份标识信息进行签名处理,以获得所述应用的第一签名信息之前,还包括:
获取当前的网络时间戳;
所述对所述身份标识信息进行签名处理,以获得所述应用的第一签名信息,包括:
对所述身份标识信息和所述网络时间戳进行签名处理,以获得所述第一签名信息;
所述向开放平台发送所述第一签名信息和所述应用的应用标识信息,包括:
向所述开放平台发送所述应用的应用标识信息、所述网络时间戳和所述第一签名信息;
所述第二签名信息具体为所述开放平台对所述应用注册的身份标识信息和所述网络时间戳进行签名处理获得的,所述应用注册的身份标识信息为所述开放平台根据所述网络时间戳和所述应用标识信息获得的。
6.一种开放平台的调用装置,其特征在于,包括:
获取单元,用于获取应用的身份标识信息;
签名单元,用于对所述身份标识信息进行签名处理,以获得所述应用的第一签名信息;
发送单元,用于向开放平台发送所述第一签名信息和所述应用的应用标识信息;
接收单元,用于接收所述开放平台发送的访问令牌,用以调用所述开放平台所提供的开放API,所述访问令牌为所述开放平台利用第二签名信息,对所述第一签名信息进行验证成功之后获得的,所述第二签名信息为所述开放平台对所述应用注册的身份标识信息进行签名处理获得的,所述应用注册的身份标识信息为所述开放平台根据所述应用标识信息获得的。
7.根据权利要求6所述的装置,其特征在于,所述获取单元,具体用于调用所述应用所提供的接口,以获得所述身份标识信息。
8.根据权利要求7所述的装置,其特征在于,所述获取单元,具体用于调用所述应用的Java语言库接口;采用JNI技术,调用所述应用的C语言库接口或C++语言库接口,以调用操作系统所提供的接口,以获得所述身份标识信息。
9.根据权利要求6所述的装置,其特征在于,所述身份标识信息包括包名和包签名中的至少一项。
10.根据权利要求6~9任一权利要求所述的装置,其特征在于,
所述获取单元,还用于
获取当前的网络时间戳;
所述签名单元,具体用于
对所述身份标识信息和所述网络时间戳进行签名处理,以获得所述第一签名信息;
所述发送单元,具体用于
向所述开放平台发送所述应用的应用标识信息、所述网络时间戳和所述第一签名信息;
所述第二签名信息具体为所述开放平台对所述应用注册的身份标识信息和所述网络时间戳进行签名处理获得的,所述应用注册的身份标识信息为所述开放平台根据所述网络时间戳和所述应用标识信息获得的。
CN201410427923.5A 2014-08-27 2014-08-27 开放平台的调用方法及装置 Active CN104199654B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201410427923.5A CN104199654B (zh) 2014-08-27 2014-08-27 开放平台的调用方法及装置
PCT/CN2014/093750 WO2016029595A1 (zh) 2014-08-27 2014-12-12 开放平台的调用方法、装置、设备及非易失性计算机存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410427923.5A CN104199654B (zh) 2014-08-27 2014-08-27 开放平台的调用方法及装置

Publications (2)

Publication Number Publication Date
CN104199654A CN104199654A (zh) 2014-12-10
CN104199654B true CN104199654B (zh) 2019-01-11

Family

ID=52084951

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410427923.5A Active CN104199654B (zh) 2014-08-27 2014-08-27 开放平台的调用方法及装置

Country Status (2)

Country Link
CN (1) CN104199654B (zh)
WO (1) WO2016029595A1 (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104199654B (zh) * 2014-08-27 2019-01-11 百度在线网络技术(北京)有限公司 开放平台的调用方法及装置
CN105988789B (zh) * 2015-02-09 2020-08-28 腾讯科技(深圳)有限公司 第三方应用呼起方法、呼起平台和终端
CN107301097B (zh) * 2016-04-14 2020-05-08 阿里巴巴集团控股有限公司 一种调用java对象、java对象的引用地址信息的存储方法及装置
CN107315948B (zh) * 2016-04-26 2020-09-01 阿里巴巴集团控股有限公司 数据调用方法及装置
CN105871884A (zh) * 2016-05-11 2016-08-17 乐视控股(北京)有限公司 一种身份验证方法及装置
CN107766701B (zh) * 2016-08-19 2021-01-26 北京京东尚科信息技术有限公司 电子设备、动态库文件保护方法及装置
CN106529218B (zh) * 2016-10-28 2020-03-06 新华三技术有限公司 一种应用校验方法和装置
CN108319823A (zh) * 2018-02-02 2018-07-24 广东蜂助手网络技术股份有限公司 一种安卓app签名绑定方法及装置
CN110740136B (zh) * 2019-10-22 2022-04-22 中国建设银行股份有限公司 面向开放银行的网络安全控制方法及开放银行平台
CN110851456B (zh) * 2019-11-08 2022-03-29 北京字节跳动网络技术有限公司 一种信息处理方法、电子设备及存储介质
CN111404695B (zh) * 2020-03-16 2023-11-24 思必驰科技股份有限公司 令牌请求验证方法和装置
CN112492031B (zh) * 2020-11-30 2022-11-04 上海寻梦信息技术有限公司 开放平台对接方法、装置、设备以及存储介质
CN112583606B (zh) * 2020-12-16 2023-05-09 深圳市欢太科技有限公司 安全校验方法及服务器、终端、存储介质
CN113691377B (zh) * 2021-08-20 2023-04-11 珠海格力电器股份有限公司 设备列表的处理方法与装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102378170B (zh) * 2010-08-27 2014-12-10 中国移动通信有限公司 一种鉴权及业务调用方法、装置和系统
CN102394887B (zh) * 2011-11-10 2014-07-09 杭州东信北邮信息技术有限公司 基于OAuth协议的开放平台安全认证方法和系统
CN103220259B (zh) * 2012-01-20 2016-06-08 华为技术有限公司 Oauth API的使用、调用方法、设备及系统
CN103701761B (zh) * 2012-09-28 2017-07-18 中国电信股份有限公司 开放接口调用的认证方法与系统
US9866382B2 (en) * 2012-12-21 2018-01-09 Mobile Iron, Inc. Secure app-to-app communication
CN103281187B (zh) * 2013-05-17 2016-12-28 北京网秦天下科技有限公司 安全认证方法、设备和系统
CN104199654B (zh) * 2014-08-27 2019-01-11 百度在线网络技术(北京)有限公司 开放平台的调用方法及装置

Also Published As

Publication number Publication date
WO2016029595A1 (zh) 2016-03-03
CN104199654A (zh) 2014-12-10

Similar Documents

Publication Publication Date Title
CN104199654B (zh) 开放平台的调用方法及装置
CN104199657B (zh) 开放平台的调用方法及装置
CN111565199B (zh) 网络攻击信息处理方法、装置、电子设备及存储介质
CN107483509B (zh) 一种身份验证方法、服务器及可读存储介质
CN105306534B (zh) 一种基于开放平台的信息校验方法和开放平台
CN105025041B (zh) 文件上传的方法、装置和系统
CN104092811B (zh) 移动终端信息下载的方法、系统、终端设备及服务器
CN104735065B (zh) 一种数据处理方法、电子设备及服务器
CN101873331B (zh) 一种安全认证方法和系统
CN104079581B (zh) 身份认证方法及设备
CN109522726A (zh) 小程序的鉴权方法、服务器及计算机可读存储介质
CN104869102B (zh) 基于xAuth协议的授权方法、装置和系统
CN106330838B (zh) 一种动态签名方法及应用该方法的客户端和服务器
CN108616360A (zh) 用户身份校验、注册方法及装置
CN105306490A (zh) 支付验证系统、方法及装置
CN110381075B (zh) 基于区块链的设备身份认证方法和装置
CN103905194B (zh) 身份溯源认证方法及系统
CN111200589A (zh) 一种联盟链的数据保护方法及系统
CN103347020B (zh) 一种跨应用认证访问的系统及方法
CN111343179B (zh) 一种链上数据真实性的实时共识方法及装置
CN110378105A (zh) 安全升级方法、系统、服务器及车载终端
US20180374093A1 (en) Method for sending digital information
CN110166255A (zh) 基于联盟区块链的身份验证方法、设备及存储介质
CN109634615A (zh) 应用安装包的发布方法、验证方法和装置
CN113225324B (zh) 区块链匿名账户创建方法、系统、设备及存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant