CN114268450A - 一种api接口认证方法及系统 - Google Patents
一种api接口认证方法及系统 Download PDFInfo
- Publication number
- CN114268450A CN114268450A CN202111288350.9A CN202111288350A CN114268450A CN 114268450 A CN114268450 A CN 114268450A CN 202111288350 A CN202111288350 A CN 202111288350A CN 114268450 A CN114268450 A CN 114268450A
- Authority
- CN
- China
- Prior art keywords
- request
- api
- public
- signature
- parameter
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 63
- 238000012163 sequencing technique Methods 0.000 claims description 4
- 230000008569 process Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000013475 authorization Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000003245 working effect Effects 0.000 description 1
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种API接口认证方法及系统;接收API接口调用者客户端发起的HTTP请求,确定客户端的身份,生成公共请求参数和签名值;HTTP请求中设有由API接口调用者客户端预先生成的公共请求参数和签名值;对服务器生成的签名值与客户端传输过来的签名值进行比对;如果比对结果为相同,则判断签名唯一随机数SignNonce是否存在;如果不存在,就判断请求的时间戳Timestamp距离当前时刻是否超过设定时间范围;如果否,就响应请求,缓存所有的签名唯一随机数SignNonce,并设定缓存周期;记录API接口调用日志根据公共请求参数和加密协议识别调用者身份、保证调用安全、防止网络攻击。
Description
技术领域
本发明涉及API接口认证技术领域,特别是涉及一种API接口认证方法及系统。
背景技术
本部分的陈述仅仅是提到了与本发明相关的背景技术,并不必然构成现有技术。
WEB程序是使用HTTP协议传输的,而HTTP协议是无状态的协议,对于事务处理没有记忆能力。缺少状态意味着如果后续的请求处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。传统的认证方式是,客户端请求登录接口,服务器方根据登录接口的信息明确是谁在请求登录,而后生成一个表明请求方身份的令牌,缓存在服务器,即Session,同时服务器需通知客户端记住这个令牌的ID。客户端在后续请求时,携带这个令牌,服务器方就可以知道是谁在请求了。
显然这种技术依赖于服务器的Session极值,在分布式系统中,由于服务器可能存在多分,Session相互独立,故而无法使用;此外,如果令牌被其他方获取到,会留下不安全的隐患。
发明内容
为了解决现有技术的不足,本发明提供了一种API接口认证方法及系统;可以根据公共请求参数和加密协议识别调用者身份、保证调用安全、防止网络攻击。
第一方面,本发明提供了一种API接口认证方法;
一种API接口认证方法,应用于服务器,包括:
接收API接口调用者客户端发起的HTTP请求,确定API接口调用者客户端的身份,生成公共请求参数和签名值;所述HTTP请求中均设有由API接口调用者客户端预先生成的公共请求参数和签名值;
对服务器生成的签名值与客户端传输过来的签名值进行比对;如果比对结果为相同,则进入下一步;如果比对结果为不同,则拒绝请求;
判断签名唯一随机数SignNonce是否存在;如果是,就拒绝请求;如果否,就进入下一步;
判断请求的时间戳Timestamp距离当前时刻是否超过设定时间范围;如果是,就拒绝请求;如果否,就响应请求,缓存所有的签名唯一随机数SignNonce,并设定缓存周期;记录API接口调用日志。
第二方面,本发明提供了一种服务器;
一种服务器,其被配置为:
接收API接口调用者客户端发起的HTTP请求,确定API接口调用者客户端的身份,生成公共请求参数和签名值;所述HTTP请求中均设有由API接口调用者客户端预先生成的公共请求参数和签名值;
对服务器生成的签名值与客户端传输过来的签名值进行比对;如果比对结果为相同,则进入下一步;如果比对结果为不同,则拒绝请求;
判断签名唯一随机数SignNonce是否存在;如果是,就拒绝请求;如果否,就进入下一步;
判断请求的时间戳Timestamp距离当前时刻是否超过设定时间范围;如果是,就拒绝请求;如果否,就响应请求,缓存所有的签名唯一随机数SignNonce,并设定缓存周期;记录API接口调用日志。
第三方面,本发明提供了一种API接口认证系统;
一种API接口认证系统,包括:服务器和API接口调用者客户端;
API接口调用者客户端,向服务器发起HTTP请求;所述HTTP请求中均设有由API接口调用者客户端预先生成的公共请求参数和签名值;
服务器,接收API接口调用者客户端发起的HTTP请求,确定API接口调用者客户端的身份,生成公共请求参数和签名值;
服务器,对服务器生成的签名值与客户端传输过来的签名值进行比对;如果比对结果为相同,则判断签名唯一随机数SignNonce是否存在;如果比对结果为不同,则拒绝请求;
服务器,判断签名唯一随机数SignNonce是否存在;如果是,就拒绝请求;如果否,就判断请求的时间戳Timestamp距离当前时刻是否超过设定时间范围;
服务器,判断请求的时间戳Timestamp距离当前时刻是否超过设定时间范围;如果是,就拒绝请求;如果否,就响应请求,缓存所有的签名唯一随机数SignNonce,并设定缓存周期;记录API接口调用日志。
与现有技术相比,本发明的有益效果是:
1.本发明可以解决接口调用的认证和鉴权问题。
2.本发明的认证方法可以避免传统Token认证的登陆操作。
3.本发明的鉴权方法可以保证调用者的身份不被窃取。
4.本发明的鉴权方法可以抵御网络攻击。
5.本发明的监管方法可以快速协助调用者及时定位问题。
6.本发明的监管方法可以及时发现AccessSecret的泄漏问题。
本发明附加方面的优点将在下面的描述中部分给出,或通过本发明的实践了解到。
附图说明
构成本发明的一部分的说明书附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。
图1为第一个实施例的HTTP内部结构示意图;
图2为第三个实施例的系统架构图;
图3为第一个实施例的方法流程图。
具体实施方式
应该指出,以下详细说明都是示例性的,旨在对本发明提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本发明所属技术领域的普通技术人员通常理解的相同含义。
需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本发明的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
本实施例所有数据的获取都在符合法律法规和用户同意的基础上,对数据的合法应用。
术语解释:
API接口:API(Application Programming Interface,应用程序接口)是一些预先定义的接口(如函数、HTTP接口)。用来提供应用程序与开发人员基于某软件或硬件得以访问的一组程序,而又无需访问源码,或理解内部工作机制的细节。
请求行、请求体:
HTTP的请求格式如下,包括:请求行、请求头、请求体,图1中请求数据即为请求体。
UUID:UUID是通用唯一识别码(Universally Unique Identifier)的缩写。其目的,是让分布式系统中的所有元素,都能有唯一的辨识信息。如此一来,每个人都可以创建不与其它人冲突的UUID。
RFC3986:RFC3986是一种URL编码的原则,目的是使用安全的字符(没有特殊用途或者特殊意义的可打印字符)去表示那些不安全的字符;同时请求参数中出现的影响URL理解的字符(如=:等字符)、中文字符都在编码之列。
HTTP((HTTP,HyperText Transfer Protocol))请求:是指从客户端到服务器的请求消息。消息首行中,包括:对资源的请求方法、资源的标识符及使用的协议。
API((API:Application Program Interface))接口:是操作系统留给应用程序的一个调用接口,应用程序通过调用操作系统的API而使操作系统去执行应用程序的命令。
实施例一
本实施例提供了一种API接口认证方法;
如图3所示,一种API接口认证方法,应用于服务器,包括:
S101:接收API接口调用者客户端发起的HTTP请求,确定API接口调用者客户端的身份,生成公共请求参数和签名值;所述HTTP请求中均设有由API接口调用者客户端预先生成的公共请求参数和签名值;
S102:对服务器生成的签名值与客户端传输过来的签名值进行比对;如果比对结果为相同,则进入S103;如果比对结果为不同,则拒绝请求;
S103:判断签名唯一随机数SignNonce是否存在;如果是,就拒绝请求;如果否,就进入S104;
S104:判断请求的时间戳Timestamp距离当前时刻是否超过设定时间范围;如果是,就拒绝请求;如果否,就响应请求,缓存所有的签名唯一随机数SignNonce,并设定缓存周期;记录API接口调用日志。
进一步地,所述方法S101接收API接口调用者客户端发起的HTTP请求;之前还包括:
给各个已经授权的API接口调用者客户端下发配对的访问秘钥编号“AccessID”和访问密钥“AccessSecret”;每个API接口调用者客户端接收到的“AccessID”与其他API接口调用者客户端接收到的“AccessID”均不同;每个API接口调用者客户端接收到的“AccessSecret”与其他API接口调用者客户端接收到的“AccessSecret”均不同。
进一步地,所述HTTP请求中均设有由API接口调用者客户端预先生成的公共请求参数和签名值;具体包括:
API接口调用者客户端,接收服务器下发的“AccessID”和“AccessSecret”,并存储;
API接口调用者客户端,取出服务器下发的“AccessID”和“AccessSecret”;
API接口调用者客户端,按照公共请求参数串生成方法和签名方法,生成公共请求参数和签名值。
进一步地,所述S101:接收API接口调用者客户端发起的HTTP请求,确定API接口调用者客户端的身份,生成公共请求参数和签名值;具体包括:
接收API接口调用者客户端发起的HTTP请求;
根据公共请求参数中的明文参数“AccessID”,确定调用者身份;
根据调用者身份,取得对应的“AccessSecret”;
使用“AccessID”、“AccessSecret”,按照公共请求参数串生成方法和签名方法,生成公共请求参数和签名值。
进一步地,所述HTTP请求中均设有由API接口调用者客户端预先生成的公共请求参数和签名值;公共请求参数在HTTP请求中的位置设置,包括以下情形中的一种:
对于没有请求体的HTTP请求,将公共请求参数拼接在HTTP请求的请求行的请求参数后;
对于有请求体的HTTP请求,将公共请求参数拼接在请求行上;
对于已有请求参数的HTTP请求,将公共请求参数拼接在已有请求参数的后面。
示例性的,对于无请求体的HTTP请求(如GET请求),公共请求参数拼接在请求行的请求参数后;对于有请求体的HTTP请求(如POST请求),公共请求参数拼接到请求行上,不影响请求体的内容。如该请求有请求参数,拼接在请求参数后。
POST请求示例:
POST/openapi/v1/user?公共请求参数串HTTP/1.1
Host:localhost
User-Agent:Mozilla/5.0(windows NT 6.1;Win64;x64;rv:60.o)Gecko/20100101Firefox/60.0
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language:zh-CN,zh;q=0.8,zh-Tw;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding:gzip,defiate
Referer:http://localhost/login.html
Connection:keep alive
Upgrade-Insecure-Requests:1
username=zhangsan&publisher=Wiley
GET请求示例:
GET/openapi/v1/user?id=xxxxxx&公共请求参数串HTTP/1.1
Host:localhost
User-Agent:Mozilla/5.0(windows NT 6.1;Win64;x64;rv:60.o)Gecko/20100101Firefox/60.0
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language:zh-CN,zh;q=0.8,zh-Tw;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding:gzip,defiate
Referer:http://localhost/login.html
Connection:keep alive
Upgrade-Insecure-Requests:1
进一步地,所述按照公共请求参数串生成方法和签名方法,生成公共请求参数和签名值;其中,公共请求参数的生成步骤包括:
S1011:设定公共请求参数,包括:访问密钥ID、签名值、签名方式、签名算法版本、签名唯一随机数和请求时间戳;
S1012:对除了签名值以外的其他公共请求参数进行排序,按照首字母的顺序进行排序;
S1013:对排序后的公共请求参数和公共请求参数的取值进行编码;
S1014:对于编码后的公共请求参数和公共请求参数的取值,进行连接得到请求参数对;对请求参数对进行拼接,得到拼接字符串;
S1015:对拼接字符串进行加密处理,对加密结果再进行编码处理,得到签名值;
S1016:将签名值拼接到拼接字符串的后面,得到最终的公共请求参数。
表1公共请求参数列表
示例性的,所述S1012:对除了签名值以外的其他公共请求参数进行排序,按照首字母的顺序进行排序;具体包括:
对公共请求参数排序。以首字母顺序排序,排序参数为公共请求参数,不包括公共请求参数中的Sign参数,总计5个。签名唯一随机数SignNonce需为UUID,保证请求不重复,排序后效果如:
AccessID=320299f45851
SignMethod=HMAC-SHA1
SignNonce=223778d6-10de-4de9-b5a0-a740b8142797
SignVersion=1.0
Timestamp=2021-04-15T12:00:00Z
进一步地,所述S1013:对排序后的公共请求参数和公共请求参数的取值进行编码;是指:
采用UTF-8字符集,按照RFC3986编码规范,对排序后的公共请求参数和公共请求参数的取值进行编码。
进一步地,所述S1014:对于编码后的公共请求参数和公共请求参数的取值,进行连接得到请求参数对;对请求参数对进行拼接,得到拼接字符串;具体包括:
对于编码后的公共请求参数和公共请求参数的取值,采用等号“=”进行连接得到请求参数对;采用与号“&”对请求参数对进行拼接,得到拼接字符串;拼接的过程中,保证拼接的顺序与S1012中排序的顺序是一致的。
示例性的,使用等号(=)连接编码后的请求参数和参数取值,使用与号(&)连接编码后的请求参数对。
拼接后效果:
AccessID=320299f45851&SignatureMethod=HMAC-SHA1&SignatureNonce=223778d6-10de-4de9-b5a0-a740b8142797&SignatureVersion=1.0&Timestamp=2021-04-15T12%3A00%3A00Z
进一步地,所述S1015:对拼接字符串进行加密处理,对加密结果再进行编码处理,得到签名值;具体包括:
对拼接字符串使用签名方式指定的加密算法进行加密处理,对加密结果使用Base64编码方式进行编码处理。
示例性的,使用SignMethod指定的加密算法对字符串做加密,再做Base64编码。其中加密秘钥为AccessSecret拼接&拼接AccessID。
如果AccessID=320299f45851,且
AccessSecret=b6264e36-6f4d-4bf5-98f4-b4ac2248321d,
则加密秘钥为b6264e36-6f4d-4bf5-98f4-b4ac2248321d&320299f45851,
计算后得到的签名值(Sign)为:
MTk2ODNhMWMwZDQ5MTg5MzJjZGJlZTBhMTZkZTk5MWI2OGZmZWIzNQ==
示例性的,所述S1016:将签名值拼接到拼接字符串的后面,得到最终的公共请求参数;具体包括:
使用等号(=)连接编码前的请求参数和参数取值,使用与号(&)连接编码前的请求参数对,注意请求参数为全部公共请求参数,其中Sign的参数取值为签名值。生成公共请求参数串为:
AccessID=320299f45851&SignMethod=HMAC-SHA1&SignNonce=223778d6-10de-4de9-b5a0-a740b8142797&SignVersion=1.0&Timestamp=2021-04-15T12:00:00Z&Sign=MTk2ODNhMWMwZDQ5MTg5MzJjZGJlZTBhMTZkZTk5MWI2OGZmZWIzNQ==
进一步地,所述S101:接收API接口调用者客户端发起的HTTP请求,确定API接口调用者客户端的身份;具体包括:
服务器接收HTTP请求,服务器根据HTTP请求中的请求行中的访问密钥ID(AccessID),确定API接口调用者客户端的身份,并取得对应的AccessSecret。
示例性的,S104:判断请求的时间戳Timestamp距离当前时刻是否超过设定时间范围;具体包括:
服务器校验Timestamp是否距当前时间超过±1天,如不满足拒绝请求,以此防止网络攻击。
服务器需缓存所有的SignNonce,缓存周期为1天。
由于SignNonce从机制上要求每次请求均不同,其生成Sign也不同。因此,可以以此防止请求被拦截后的冒名顶替。
进一步的,所述SignNonce的缓存时间不应短于Timestamp的校验时间。
进一步地,所述API接口调用日志,包括:访问密钥ID、API接口调用者客户端身份、调用请求时间、调用接口名称、HTTP状态码、HTTP请求行、HTTP请求体、HTTP响应体、requestId、success、签名唯一随机数SignNonce和/或错误码等。记录API接口调用日志,以便及时发现安全隐患、配合调用方排查问题。
对不同调用者的“调用接口名”、“SignNonce”、“HTTP状态码”、“错误码”等多个维度作出统计,以便及时发起“AccessSecret”泄漏的安全隐患。
进一步地,所述服务器中设有身份认证模块,身份认证模块随机生成“AccessID”、“AccessSecret”对,并提供给已授权的API调用者,不同的调用者“AccessID”、“AccessSecret”均不同。身份认证模块需记录“AccessID”、“AccessSecret”及所提供的调用者身份信息。其中AccessID用于标识用户身份,“AccessSecret”需调用者秘密保存,用于加密请求文本;
表2 API接口相应规范表
实施例二
本实施例提供了一种服务器;
一种服务器,其被配置为:
接收API接口调用者客户端发起的HTTP请求,确定API接口调用者客户端的身份,生成公共请求参数和签名值;所述HTTP请求中均设有由API接口调用者客户端预先生成的公共请求参数和签名值;
对服务器生成的签名值与客户端传输过来的签名值进行比对;如果比对结果为相同,则进入下一步;如果比对结果为不同,则拒绝请求;
判断签名唯一随机数SignNonce是否存在;如果是,就拒绝请求;如果否,就进入下一步;
判断请求的时间戳Timestamp距离当前时刻是否超过设定时间范围;如果是,就拒绝请求;如果否,就响应请求,缓存所有的签名唯一随机数SignNonce,并设定缓存周期;记录API接口调用日志。
实施例二中每个步骤的技术实现细节与实施例一是对应一致的,此处不再赘述。
实施例三
本实施例提供了一种API接口认证系统;
如图2所示,一种API接口认证系统,包括:服务器和API接口调用者客户端;
API接口调用者客户端,向服务器发起HTTP请求;所述HTTP请求中均设有由API接口调用者客户端预先生成的公共请求参数和签名值;
服务器,接收API接口调用者客户端发起的HTTP请求,确定API接口调用者客户端的身份,生成公共请求参数和签名值;
服务器,对服务器生成的签名值与客户端传输过来的签名值进行比对;如果比对结果为相同,则判断签名唯一随机数SignNonce是否存在;如果比对结果为不同,则拒绝请求;
服务器,判断签名唯一随机数SignNonce是否存在;如果是,就拒绝请求;如果否,就判断请求的时间戳Timestamp距离当前时刻是否超过设定时间范围;
服务器,判断请求的时间戳Timestamp距离当前时刻是否超过设定时间范围;如果是,就拒绝请求;如果否,就响应请求,缓存所有的签名唯一随机数SignNonce,并设定缓存周期;记录API接口调用日志。
实施例三中每个步骤的技术实现细节与实施例一是对应一致的,此处不再赘述。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种API接口认证方法,其特征是,应用于服务器,包括:
接收API接口调用者客户端发起的HTTP请求,确定API接口调用者客户端的身份,生成公共请求参数和签名值;所述HTTP请求中均设有由API接口调用者客户端预先生成的公共请求参数和签名值;
对服务器生成的签名值与客户端传输过来的签名值进行比对;如果比对结果为相同,则进入下一步;如果比对结果为不同,则拒绝请求;
判断签名唯一随机数SignNonce是否存在;如果是,就拒绝请求;如果否,就进入下一步;
判断请求的时间戳Timestamp距离当前时刻是否超过设定时间范围;如果是,就拒绝请求;如果否,就响应请求,缓存所有的签名唯一随机数SignNonce,并设定缓存周期;记录API接口调用日志。
2.如权利要求1所述的一种API接口认证方法,其特征是,所述接收API接口调用者客户端发起的HTTP请求;之前还包括:
给各个已经授权的API接口调用者客户端下发配对的访问秘钥编号“AccessID”和访问密钥“AccessSecret”;每个API接口调用者客户端接收到的“AccessID”与其他API接口调用者客户端接收到的“AccessID”均不同;每个API接口调用者客户端接收到的“AccessSecret”与其他API接口调用者客户端接收到的“AccessSecret”均不同。
3.如权利要求1所述的一种API接口认证方法,其特征是,所述HTTP请求中均设有由API接口调用者客户端预先生成的公共请求参数和签名值;具体包括:
API接口调用者客户端,接收服务器下发的“AccessID”和“AccessSecret”,并存储;
API接口调用者客户端,取出服务器下发的“AccessID”和“AccessSecret”;
API接口调用者客户端,按照公共请求参数串生成方法和签名方法,生成公共请求参数和签名值。
4.如权利要求1所述的一种API接口认证方法,其特征是,接收API接口调用者客户端发起的HTTP请求,确定API接口调用者客户端的身份,生成公共请求参数和签名值;具体包括:
接收API接口调用者客户端发起的HTTP请求;
根据公共请求参数中的明文参数“AccessID”,确定调用者身份;
根据调用者身份,取得对应的“AccessSecret”;
使用“AccessID”、“AccessSecret”,按照公共请求参数串生成方法和签名方法,生成公共请求参数和签名值。
5.如权利要求1所述的一种API接口认证方法,其特征是,所述HTTP请求中均设有由API接口调用者客户端预先生成的公共请求参数和签名值;公共请求参数在HTTP请求中的位置设置,包括以下情形中的一种:
对于没有请求体的HTTP请求,将公共请求参数拼接在HTTP请求的请求行的请求参数后;
对于有请求体的HTTP请求,将公共请求参数拼接在请求行上;
对于已有请求参数的HTTP请求,将公共请求参数拼接在已有请求参数的后面。
6.如权利要求3或4所述的一种API接口认证方法,其特征是,所述按照公共请求参数串生成方法和签名方法,生成公共请求参数和签名值;其中,公共请求参数的生成步骤包括:
设定公共请求参数,包括:访问密钥ID、签名值、签名方式、签名算法版本、签名唯一随机数和请求时间戳;
对除了签名值以外的其他公共请求参数进行排序,按照首字母的顺序进行排序;
对排序后的公共请求参数和公共请求参数的取值进行编码;
对于编码后的公共请求参数和公共请求参数的取值,进行连接得到请求参数对;对请求参数对进行拼接,得到拼接字符串;
对拼接字符串进行加密处理,对加密结果再进行编码处理,得到签名值;
将签名值拼接到拼接字符串的后面,得到最终的公共请求参数。
7.如权利要求6所述的一种API接口认证方法,其特征是,对排序后的公共请求参数和公共请求参数的取值进行编码;是指:
采用UTF-8字符集,按照RFC3986编码规范,对排序后的公共请求参数和公共请求参数的取值进行编码;
或者,
对于编码后的公共请求参数和公共请求参数的取值,进行连接得到请求参数对;对请求参数对进行拼接,得到拼接字符串;具体包括:
对于编码后的公共请求参数和公共请求参数的取值,采用等号“=”进行连接得到请求参数对;采用与号“&”对请求参数对进行拼接,得到拼接字符串。
8.如权利要求6所述的一种API接口认证方法,其特征是,对拼接字符串进行加密处理,对加密结果再进行编码处理,得到签名值;具体包括:
对拼接字符串使用签名方式指定的加密算法进行加密处理,对加密结果使用Base64编码方式进行编码处理;
或者,
将签名值拼接到拼接字符串的后面,得到最终的公共请求参数;具体包括:
使用等号=连接编码前的请求参数和参数取值,使用与号&连接编码前的请求参数对,注意请求参数为全部公共请求参数,其中Sign的参数取值为签名值。
9.一种服务器,其特征是,其被配置为:
接收API接口调用者客户端发起的HTTP请求,确定API接口调用者客户端的身份,生成公共请求参数和签名值;所述HTTP请求中均设有由API接口调用者客户端预先生成的公共请求参数和签名值;
对服务器生成的签名值与客户端传输过来的签名值进行比对;如果比对结果为相同,则进入下一步;如果比对结果为不同,则拒绝请求;
判断签名唯一随机数SignNonce是否存在;如果是,就拒绝请求;如果否,就进入下一步;
判断请求的时间戳Timestamp距离当前时刻是否超过设定时间范围;如果是,就拒绝请求;如果否,就响应请求,缓存所有的签名唯一随机数SignNonce,并设定缓存周期;记录API接口调用日志。
10.一种API接口认证系统,其特征是,包括:服务器和API接口调用者客户端;
API接口调用者客户端,向服务器发起HTTP请求;所述HTTP请求中均设有由API接口调用者客户端预先生成的公共请求参数和签名值;
服务器,接收API接口调用者客户端发起的HTTP请求,确定API接口调用者客户端的身份,生成公共请求参数和签名值;
服务器,对服务器生成的签名值与客户端传输过来的签名值进行比对;如果比对结果为相同,则判断签名唯一随机数SignNonce是否存在;如果比对结果为不同,则拒绝请求;
服务器,判断签名唯一随机数SignNonce是否存在;如果是,就拒绝请求;如果否,就判断请求的时间戳Timestamp距离当前时刻是否超过设定时间范围;
服务器,判断请求的时间戳Timestamp距离当前时刻是否超过设定时间范围;如果是,就拒绝请求;如果否,就响应请求,缓存所有的签名唯一随机数SignNonce,并设定缓存周期;记录API接口调用日志。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111288350.9A CN114268450A (zh) | 2021-11-02 | 2021-11-02 | 一种api接口认证方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111288350.9A CN114268450A (zh) | 2021-11-02 | 2021-11-02 | 一种api接口认证方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114268450A true CN114268450A (zh) | 2022-04-01 |
Family
ID=80824709
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111288350.9A Pending CN114268450A (zh) | 2021-11-02 | 2021-11-02 | 一种api接口认证方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114268450A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116055043A (zh) * | 2023-02-06 | 2023-05-02 | 国家气象信息中心(中国气象局气象数据中心) | 一种数据服务接口鉴权方法及接口网关系统 |
CN117640109A (zh) * | 2024-01-26 | 2024-03-01 | 远江盛邦(北京)网络安全科技股份有限公司 | Api接口安全访问方法、装置、电子设备及存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107453878A (zh) * | 2017-08-11 | 2017-12-08 | 四川长虹电器股份有限公司 | 一种支持rest api防篡改防重放的方法 |
-
2021
- 2021-11-02 CN CN202111288350.9A patent/CN114268450A/zh active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107453878A (zh) * | 2017-08-11 | 2017-12-08 | 四川长虹电器股份有限公司 | 一种支持rest api防篡改防重放的方法 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116055043A (zh) * | 2023-02-06 | 2023-05-02 | 国家气象信息中心(中国气象局气象数据中心) | 一种数据服务接口鉴权方法及接口网关系统 |
CN117640109A (zh) * | 2024-01-26 | 2024-03-01 | 远江盛邦(北京)网络安全科技股份有限公司 | Api接口安全访问方法、装置、电子设备及存储介质 |
CN117640109B (zh) * | 2024-01-26 | 2024-04-26 | 远江盛邦(北京)网络安全科技股份有限公司 | Api接口安全访问方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10277577B2 (en) | Password-less authentication system and method | |
CN110691087B (zh) | 一种访问控制方法、装置、服务器及存储介质 | |
US8499339B2 (en) | Authenticating and communicating verifiable authorization between disparate network domains | |
US6301661B1 (en) | Enhanced security for applications employing downloadable executable content | |
KR101475981B1 (ko) | 만료된 패스워드 처리 | |
US8689339B2 (en) | Method, system and apparatus for game data transmission | |
JP2014503094A (ja) | サーバとクライアントとの間の通信方法、並びに対応するクライアント、サーバ、及びシステム | |
CN108322416B (zh) | 一种安全认证实现方法、装置及系统 | |
CN1878170A (zh) | 用于管理会话标识符的方法和设备 | |
CN110933078B (zh) | 一种h5未登录用户会话跟踪方法 | |
CN107517194B (zh) | 一种内容分发网络的回源认证方法和装置 | |
CN114268450A (zh) | 一种api接口认证方法及系统 | |
CN111884811B (zh) | 一种基于区块链的数据存证方法和数据存证平台 | |
CN112261022A (zh) | 一种基于api网关的安全认证方法 | |
CN106911684A (zh) | 一种鉴权方法及系统 | |
CN107493250B (zh) | 一种对网页请求进行鉴权的方法、客户端及服务器 | |
US11627135B2 (en) | Method and system for delivering restricted-access resources using a content delivery network | |
CN112566121A (zh) | 一种防止攻击的方法及服务器、电子设备、存储介质 | |
CN116527341A (zh) | 一种客户端调用后端接口鉴权授权安全方法 | |
CN116108416A (zh) | 一种应用程序接口安全防护方法及系统 | |
WO2013182151A1 (zh) | 基于网络服务应用的鉴权方法及系统 | |
WO2004099949A1 (en) | Web site security model | |
JP5118834B2 (ja) | 時刻認証サービスにおける不正チェックシステム | |
KR100406292B1 (ko) | 터미널 통신상의 사용자 보안 및 자동 인증을 위한 비밀번호 전송시스템 및 전송방법 | |
CN116094785A (zh) | 一种分布式网元的统一认证方法及系统 |
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 |