首页> 中国专利> 一种基于多种安全协议的访问方法、系统、装置及介质

一种基于多种安全协议的访问方法、系统、装置及介质

摘要

本发明的提供了一种基于多种安全协议的访问方法、系统、装置及介质,方法包括获取目标资源的访问请求,根据访问请求获取响应报文;解码响应报文的字符串得到第一字符串;将第一字符串划分得到头文件、载荷以及签名;通过头文件对签名进行验证,当验证结果正确,输出载荷的数据流;方法通过对获取的响应报文进行解密转码,可以避免在数据传输的过程中出现乱码以及解析错误等意外;针对解码得到的字符串进行划分后验证其签名,能够确保响应报文中的信息未被篡改,通过签名进行验证和信任,更加可靠;同时从请求到获得响应的过程足够轻量和便捷,成本低消耗小。本发明可广泛应用于计算机软件技术领域。

著录项

  • 公开/公告号CN112235237A

    专利类型发明专利

  • 公开/公告日2021-01-15

    原文格式PDF

  • 申请/专利权人 广州酷车信息科技有限公司;

    申请/专利号CN202010902886.4

  • 发明设计人 李小红;

    申请日2020-09-01

  • 分类号H04L29/06(20060101);H04L9/32(20060101);

  • 代理机构44205 广州嘉权专利商标事务所有限公司;

  • 代理人常柯阳

  • 地址 510663 广东省广州市天河区高普路115号第三层01房自编12号

  • 入库时间 2023-06-19 09:33:52

说明书

技术领域

本发明属于计算机软件技术领域,尤其是一种基于多种安全协议的访问方法、系统、装置及介质。

背景技术

随着企业的业务覆盖面积越来越宽泛,以及组织架构的不断扩大,对应地企业也需要针对性地开发多个互相独立的业务系统或不断扩充企业业务系统的功能,以维持企业的正常运营,例如运维发布部署平台、定时调度管理、守护进程调度管理。而针对各种子系统的开发,以及扩展功能的实现,其开发过程可以采用多种计算机语言java、python、go以及php,或者以多种协议完成数据的交互。然而由于协议的不兼容,各个平台架构的数据难以实现互通,只能简单机械地汇集,使得将面临数据泄露的风险;由于通信协议的不统一导致数据结构、形式的不一致,不便于网络传输以及存储等操作。

发明内容

鉴于此,为解决上述技术问题之一,本发明实施例目的在于提供一种能够兼容常用的安全协议的访问方法;同时,本发明的实施例还提供可以实现一种基于多种安全协议的访问方法的系统、装置以及介质。

第一方面,本发明实施例提供了一种基于多种安全协议的访问方法,其包括以下步骤:

获取目标资源的访问请求,根据访问请求获取响应报文;

解码响应报文的字符串得到第一字符串;

将第一字符串划分得到头文件、载荷以及签名;通过头文件对签名进行验证,当验证结果正确,输出载荷的数据流。

在本发明的一些实施例中,方法还包括以下步骤:获取目标资源的访问请求,解析访问请求,确认目标资源的本地存储文件,输出本地存储文件。

在本发明的一些实施例中,解码响应报文的字符串得到第一字符串这一步骤,其具体包括以下步骤:

获取响应报文的字符串,根据编码映射表得到第一序列,第一序列中的数据为十进制数;

根据第一序列转换得到第二序列,第二序列中的数据为六位二进制数,

根据第二序列组合得到第三序列,在第三序列中数据为八位二进制数;

根据第三序列转化得到第四序列,第四序列中数据为十进制数;根据第四序列以及ASCII码拼接得到第一字符串。

在本发明的一些实施例中,通过头文件对签名进行验证,当验证结果正确,输出载荷的数据流这一步骤,其具体包括:

从头文件中获取加密算法,根据加密算法以及载荷生成第二签名;

对比签名与第二签名,当签名与第二签名一致,验证结果为正确。

在本发明的一些实施例中,签名是通过密钥加密得到;或通过生成公钥和私钥,根据私钥得到。

在本发明的一些实施例中,载荷包括以下三者至少其一:标准注册声明、公共声明以及私有声明。

标准注册声明的内容包括签发者,面向用户、接收方、过期时间戳、签发时间。

第二方面,本发明的技术方案还提供一种基于多种安全协议的访问的系统,包括访问请求单元、响应获取单元以及解码单元,其中:

访问请求单元,用于获取目标资源的访问请求;

响应获取单元,用于根据访问请求获取响应报文;

解码单元,用于解码响应报文的字符串得到第一字符串;将第一字符串划分得到头文件、载荷以及签名;通过头文件对签名进行验证,当验证结果正确,输出载荷的数据流。

第三方面,本发明的技术方案还提供一种基于多种安全协议的访问的装置,其包括:

至少一个处理器;

至少一个存储器,用于存储至少一个程序;

当至少一个程序被至少一个处理器执行,使得至少一个处理器实现第一方面中的基于多种安全协议的访问方法。

第四方面,本发明的技术方案还提供了一种存储介质,其中存储有处理器可执行的程序,处理器可执行的程序在由处理器执行时用于实现如第一方面中的方法。

本发明的优点和有益效果将在下面的描述中部分给出,其他部分可以通过本发明的具体实施方式了解得到:

本发明实施例所提供的一种基于多种安全协议的访问方法,通过对获取的响应报文进行解密转码,可以避免在数据传输的过程中出现乱码以及解析错误等意外;针对解码得到的字符串进行划分后验证其签名,能够确保响应报文中的信息未被篡改,通过签名进行验证和信任,更加可靠;同时从请求到获得响应的过程足够轻量和便捷,成本低消耗小。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例一种基于多种安全协议的访问方法的核心思路流程图;

图2为本发明实施例一种基于多种安全协议的访问方法的详细步骤流程图;

图3为本发明实施例一种基于多种安全协议的访问装置的示意图。

具体实施方式

下面详细描述本发明的实施例,实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。对于以下实施例中的步骤编号,其仅为了便于阐述说明而设置,对步骤之间的顺序不做任何限定,实施例中的各步骤的执行顺序均可根据本领域技术人员的理解来进行适应性调整。

本发明实施例所提供的技术方案的核心思路,如图1所示,基于优化后的base64的编码解码算法,通过JWT实现单点登录和访问。在JWT的格式数据中,以符号“.”分割得到头信息(header)、有效载荷(Payload)以及签名(Signature)。编码和解码的过程都是可逆的,通过编码的方式进行逆推便可以得到明文,即访问目标的数据。

在第一方面,如图2所示,本发明实施例提供了一种基于多种安全协议的访问方法,其主要包括步骤S01-S03:

S01、获取目标资源的访问请求,根据访问请求获取响应报文。具体地,根据具体的用户需求请求访问对应的业务系统的资源,在本实施例中通过JWT(Json Web Token)框架进行访问请求的身份验证和授权,在JWT的框架中,客户端的浏览器或APP作为调用端调用接口API时,附带上一个由API端发布的临时令牌(token),以此来验证调用者的授权信息。当访问的服务器端确认对应客户端以及用户信息的权限验证之后,根据访问请求中的请求指定的页面信息,并返回实体主体,该实体主机即包含在响应报文中。另外,在实施例中,访问请求所支持的协议包括HTTP、OAuth、OAuth2以及自定义验证机制;例如,使用在HTTP规范中所制定的Basic Auth,需要在响应中设定一个验证身份的Header,客户端必须在每个子响应附加它们的凭证(credenbtial),包括它的密码。如果这些凭证通过了,那么用户的信息就会被传递到服务端应用。

除此之外,在实施例基于多种安全协议的访问方法中,还可包括:获取目标资源的访问请求,解析访问请求的目标资源,确认目标资源的本地存储文件,输出本地存储文件这一步骤。具体地,在实施过程中,并不会每次都让客户端提交用户名和密码,通常的情况是客户端通过一些可靠信息和服务器交换获取token,这个token作为客服端再次请求的权限钥匙,Token通常比密码更加长且复杂;例如,JWTs通常会长达150个字符。一旦获得了token,在每次调用API的时候都要附加上它。再例如,当客户端是通过浏览器发出的访问请求,即可将生成的token存储在本地的小型文本数据文件(cookies)中。

S02、解码响应报文的字符串得到第一字符串。具体地,将获取得到的响应报文进行解密得到对应的字符串。在本实施例的JWT架构中,采用的是Base64加密解密算法。Base64就是一种基于64个可打印字符来表示二进制数据的方法。Base64使用了26个小写字母、26个大写字母、10个数字以及两个符号,例如“+”和“-”,用于在电子邮件这样的基于文本的媒介中传输二进制数据。

在本实施例中,在服务器端进行加密,以“pangku”字符串为例,通过ASCII对照表可以得知p对应字符就是112、a对应字符是97、n对应字符是110、g对应字符是103、k对应字符107、u对应字符是117。经过ASCII编码之后,pangku字符串变成了“112 97 110 103107117”。再将十进制数转换成为八位二进制数,又例如十进制112对应二进制是01110000,最后字符串“pangku”转换成为“0111 0000 0110 0001 0110 1110 0110 0111 01101011 0111 0101”。然后每6位一组进行重新划分,得到“011100 000110 000101 101110011001 110110 101101110101”。再将六位一组的二进制数转化为十进制数,得到字符串“28 6 5 46 25 54 45 53”。最后根据自定义的base64编码表,根据请求域名自动变换,在本实施例中,自定义的base64编码表中28对应的c、6对应的是M、5对应的是3、46对应的是k、25对应的是W、54对应的是2、45对应的是j、53对应的是Z,最终加密的base64字符串是cM3kW2jZ。

而实施例中的解码过程即为加密的逆推过程,具体地,解码过程包括步骤S021-S024:

S021、获取响应报文的字符串,根据编码映射表得到第一序列,第一序列中数据为十进制数。例如,通过响应报文获取的字符串为“cM3kW2jZ”,根据自定义的base64编码表,c对应的是28、M对应是6、3对应的是5、k对应的是46、W对应的是25、2对应的是54、j对应的是45、Z对应的是53。经过优化过的base64表,我们得到了十进制“28 6 5 46 25 54 4553”,即为第一序列。

S022、根据第一序列转换得到第二序列,在第二序列中数据为六位二进制数。例如:十进制28对应二进制011100,那么将第一序列中的十进制数转换成六位二进制数得到的是“011100 000110 000101 101110 011001 110110 101101 110101”,即为第二序列。

S023、根据第二序列组合得到第三序列,在第三序列中数据为八位二进制数。例如:对第二序列进行重新组合,八位一组,得到“0111 0000 0110 0001 0110 1110 01100111 0110 10110111 0101”即为第三序列。

S024、根据第三序列转化得到第四序列,第三字符串中数据为十进制数;根据第四序列以及ASCII码拼接得到第一字符串;具体地,将第三序列中的八位一组的二进制数转化为十进制数,即得到第四序列“112 97 110 103 107 117”,再通过ASCII码,转换到最终的字符串“pangku”。

S03、将第一字符串划分得到头文件、载荷以及签名;通过头文件对签名进行验证,当验证结果正确,输出载荷的数据流;具体地,JWT格式的报文由三部分组成,分别是头文件、载荷、签名,中间以“.”分隔。在对字符串进行划分时,通过分隔符号可直接完成内容的划分。

在本实施例中,头文件由两部分组成,令牌类型即:JWT、散列算法包括HMAC、RSASSA、RSASSA-PSS等。

载荷携带的是具体的访问数据内容,其中还包括声明(Claim),Claim是一些实体,例如用户的状态和额外的元数据。在本实施例中,Claim的类型包括三类:标准注册声明、公共声明以及私有声明;其中,标准注册声明(Reserved claims)是JWT预先定义的,在JWT中并不会强制使用它们,而是推荐使用,常用的Reserved claims包括有签发者(iss),即JWT的颁发者,其值应为大小写敏感的字符串或Uri;过期时间戳(exp),jwt的过期时间,必须是可以解析为时间/时间戳的数字类型,服务器端在验证当前时间大于过期时间时,应当验证不予通过;面向的用户(sub)即JWT的所有者,可以是用户ID、唯一标识;接收方(aud),即JWT的适用对象,其值应为大小写敏感的字符串或Uri,一般可以为特定的App、服务或模块,服务器端的安全策略在签发时和验证时,aud必须是一致的签发时间;(iat)即JWT的签发时间,同exp一样,需为可以解析成时间的数字类型。公共声明(Public claims):根据需要定义自己的字段,需要注意避免冲突;私有声明(Private claims):这些是自定义的字段,可以用来在双方之间交换信息。

签名的生成是在进行编码或者加密的过程中使用编码后的header和payload以及一个秘钥所得到的,并使用header中指定签名算法进行签名。例如,使用HMAC SHA256算法,签名使用下列方式创建:HMACSHA256(base64UrlEncode(header)+"."+base64UrlEncode(payload),secret)。而签名是主要用于验证消息的发送者以及消息是没有经过篡改的,例如,恶意对头部以及载荷的内容解码之后进行修改,再进行编码的话,那么新的头部和载荷的签名和之前的签名就将是不一样的,以此来进行token的验证。

例如在本实施例具体的实施过程中,所获取的响应报文的字符串是:

eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjYzZWY5MWRkMjZkN2M5MDMifQ.eyJpc3MiOiJwYW5na3VfdWNlbnRlciIsImF1ZCI6ImNoYW5uZWxfYWRtaW4iLCJqdGkiOiI2M2VmOTFkZDI2ZDdjOTAzIiwiaWF0IjoxNTk3Mjg5MTE2LCJuYmYiOjE1OTcyODkxMTYsImV4cCI6MTU5NzI5NjMxNiwidXNlcmluZm8iOiJ7XCJ1c2VybmFtZVwiOlwiXFx1NTlkYVxcdTZi MjNcXHU5NTQ3XCIsXCJlbWFpbFwiOlwiMTU5MTMzOTU2MzNAcGFuZ2t1LmNvbVwiLFw iY2VsbHBob25lXCI6XCIxNTkxMzM5NTYzM1wiLFwib3Blbl91aWRcIjpcIjY5YTk3YWJjM2E5ODY5MGY3ZTZmMTM1ODAyYWJkOWEzXCIsXCJzZXhcIjoxLFwicGljXCI6XCJcIixcImRlcF9uYW1lXCI6XCJcXHU2MjgwXFx1NjcyZlxcdTkwZThcIixcImRlcF9ub1wiOlwiZ2diXCIsXCJkZ XBfdHlwZVwiOjN9In0.EOpP4vooA7Dofz0czJT5uSkp9JZhwqmaKCxhOtWfHutXxOrQplULvsK se_CHh5gN0OGyxs3_V273IiQlLn1_j3gfOFu-sD6wri9-c4ToUsWwOz1VE3Qg_ij8kjHE-QkJBtIPg0Y2gTIBNqX8Cfe2g2h1d08h-TERPa1CL44OSUUkQeohGq32EhOqukOxy_GYGeNambWtdnKf SL-f0slfVr7G8kJwQD8n4pKiabEhnwjTjFE-FV38lEakRjPkkhSekxo0kD-o61QahaRh7vlOHVzXze1mMuCKJYYSB7LLZbVaqn8vdVuZnxisn3PeQPOQwSpKg7FuFMu03wf0w8UwTA。

根据符号“.”完成划分得到header字符串为:

eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjYzZWY5MWRkMjZkN2M5MDMifQ

经过解码后得到明文是:{"typ":"JWT","alg":"RS256","jti":"63ef91dd26d7c903"}。同样的,根据符号“.”划分得到的payload字符串,进行解码后得到的是:

{"iss":"pangku_ucenter","aud":"channel_admin","jti":"63ef91dd26d7c903","iat":1597289116,"nbf":1597289116,"exp":1597296316,"userinfo":"{\"username\":\"\\u59da\\u6b23\\u9547\",\"email\":\"15913395633@pangku.com\",\"cellphone\":\"15913395633\",\"open_uid\":\"69a97abc3a98690f7e6f135802abd9a3\",\"sex\":1,\"pic\":\"\",\"dep_name\":\"\\u6280\\u672f\\u90e8\",\"dep_no\":\"ggb\",\"dep_type\":3}"}

最后剩余部分即为签名,验证改签名正确后,确认payload未经过恶意篡改即输出payload的明文内容。

此外,在本实施例中,步骤S03中,通过头文件对签名进行验证这一过程,其具体包括步骤S031-S032:

S031、从头文件中获取加密算法,根据加密算法以及载荷生成第二签名;具体地,解析header获取加密算法,并根据解码后的payload以及header再进行编码并对应生成签名,记该签名为第二签名,而第一签名则为生成整个响应报文时生成的签名。

S032、对比签名与第二签名,当签名与第二签名一致,验证结果为正确;具体地,将分别获得的第一签名和第二签名进行比对,若恶意对头部以及载荷的内容解码之后进行修改,再进行编码的话,那么新的头部和载荷的签名,即第二签名和之前的签名就将是不一样的。并且,在恶意攻击方不知道服务器加密的密钥的情况下,得出来的签名也一定会是不一样的。

除此之外,在一些实施例中,响应报文中的签名可以通过密钥加密得到,或可以通过非对称加密的方法,即生成一对密钥,服务器端通过私钥完成响应报文的header以及payload的加密得到对应的签名;公钥是全网公开,客户端通过公钥完成签名的验证。

第二方面,本发明的技术方案还提供一种基于多种安全协议的访问的系统,其包括访问请求单元、响应获取单元以及解码单元,其中:

访问请求单元,用于获取目标资源的访问请求;

响应获取单元,用于根据访问请求获取响应报文;

解码单元,用于解码响应报文的字符串得到第一字符串;将第一字符串划分得到头文件、载荷以及签名;通过头文件对签名进行验证,当验证结果正确,输出载荷的数据流。

第三方面,如图3所示,本发明实施例还提一种基于多种安全协议的访问的装置,其包括至少一个处理器;至少一个存储器,用于存储至少一个程序;当至少一个程序被至少一个处理器执行,使得至少一个处理器实现如第一方面中的一种基于多种安全协议的访问方法。

本发明实施例还提供了一种存储介质内存储有程序,程序被处理器执行如第一方面中的方法。

从上述具体的实施过程,可以总结出,本发明所提供的技术方案相较于现有技术存在以下优点或优势:

1.本发明所提供的实施例,可以避免字符串传递过程,得知编码方式,jwt明文数据泄露的风险。

2.本发明所提供的实施例,可以实现兼容多种常用安全协议的单点登录。

在一些可选择的实施例中,在方框图中提到的功能/操作可以不按照操作示图提到的顺序发生。例如,取决于所涉及的功能/操作,连续示出的两个方框实际上可以被大体上同时地执行或所述方框有时能以相反顺序被执行。此外,在本发明的流程图中所呈现和描述的实施例以示例的方式被提供,目的在于提供对技术更全面的理解。所公开的方法不限于本文所呈现的操作和逻辑流程。可选择的实施例是可预期的,其中各种操作的顺序被改变以及其中被描述为较大操作的一部分的子操作被独立地执行。

此外,虽然在功能性模块的背景下描述了本发明,但应当理解的是,除非另有相反说明,功能和/或特征中的一个或多个可以被集成在单个物理装置和/或软件模块中,或者一个或多个功能和/或特征可以在单独的物理装置或软件模块中被实现。还可以理解的是,有关每个模块的实际实现的详细讨论对于理解本发明是不必要的。更确切地说,考虑到在本文中公开的装置中各种功能模块的属性、功能和内部关系的情况下,在工程师的常规技术内将会了解该模块的实际实现。因此,本领域技术人员运用普通技术就能够在无需过度试验的情况下实现在权利要求书中所阐明的本发明。还可以理解的是,所公开的特定概念仅仅是说明性的,并不意在限制本发明的范围,本发明的范围由所附权利要求书及其等同方案的全部范围来决定。

其中,功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。

计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得程序,然后将其存储在计算机存储器中。

应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。

尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。

以上是对本发明的较佳实施进行了具体说明,但本发明并不限于上述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做作出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号