1.本公开涉及互联网和云服务技术领域,尤其涉及一种资源访问和数据处理的方法、装置、电子设备及介质。
背景技术:
2.随着互联网技术的发展,各种复杂的应用系统需要被开发和更新,为了提升软件开发效率和减小软件开发人员的工作量,一些开放平台的架构应运而生。服务端将计算、存储或者某个功能对应的服务封装成一系列计算机能识别的应用程序接口(api,application programming interface),这些开放的应用程序接口通常被称为开放api,将这些开放api在开放平台进行展示,开发者可以通过这些开放api来进行相关服务资源的访问和使用,而无需访问服务器中的源码或了解内部工作机制的细节。
3.服务端为了保证访问安全,目前大多采用一个具有有效期限的令牌进行访问验证的方法,这种方式存在以下问题:(1)令牌具有一定的时效性,有效期越短,安全性就越强,但是频繁更新令牌对于服务端的压力也越大,而且前端的开放平台需要开发置换令牌的逻辑处理,增加了开发量;(2)目前构建api访问的系统框架中通常支持的是超文本传输协议(http)中的get请求形式,传递的参数外露,容易被非法获取,在令牌被非法获取后,非法用户可模拟请求,会对服务端的资源和运行产生风险。
技术实现要素:
4.为了解决上述技术问题或者至少部分地解决上述技术问题,本公开的实施例提供了一种资源访问和数据处理的方法、装置、电子设备及介质。
5.第一方面,本公开的实施例提供了一种资源访问的方法。上述资源访问的方法包括:接收用户在开发或使用应用过程中的操作指令;确定执行上述操作指令所需要调用的目标服务资源的地址信息和调用信息,上述调用信息包括:调用时机、上述目标服务资源需要执行的目标指令;在上述调用时机,根据从服务端预先获取的资源访问信息和加密算法,生成与上述调用时机相关的令牌信息;其中上述资源访问信息与上述用户的用户账号对服务资源的访问权限相关联;将携带有上述用户账号、上述令牌信息、上述地址信息和上述目标指令的访问请求发送给服务端;以及接收来自服务端的访问响应结果;其中上述访问响应结果由上述服务端对上述令牌信息进行解密和权限验证后得到。
6.根据本公开的实施例,上述资源访问信息包括:与上述用户账号关联的用户登录密码和用于访问服务资源的访问秘钥。其中,上述在上述调用时机,根据从服务端预先获取的资源访问信息和加密算法,生成与上述调用时机相关的令牌信息,包括:将上述调用时机对应的时间戳信息与上述用户登录密码进行合并,得到字符串;以及根据上述加密算法,将上述访问秘钥作为加密秘钥,对上述字符串进行加密计算,得到令牌信息。
7.根据本公开的实施例,上述资源访问的方法还包括:获取资源访问信息和加密算法。其中,上述获取资源访问信息和加密算法,包括:在满足访问特定服务资源的授权条件
的情况下,向服务端发起获取上述特定服务资源对应的资源访问信息和加密算法的获取请求;以及接收服务端发送的数据包,上述数据包中携带有上述资源访问信息和上述加密算法。
8.根据本公开的实施例,上述数据包为通过约定秘钥进行加密后的密文形式,上述约定秘钥是在信息收发双方之间约定的对外保密内容。其中,上述获取资源访问信息和加密算法,还包括:基于上述约定秘钥,对接收到的密文形式的数据包进行解密后,得到明文形式的资源访问信息和加密算法。
9.根据本公开的实施例,上述访问请求包括超文本传输协议(http)中的post(http协议中的一种数据传输的方式)请求方式,上述用户账号和上述令牌信息均位于cookie(浏览器上跟踪并存储的有关用户身份相关的数据集)中。
10.第二方面,本公开的实施例提供了一种数据处理的方法。上述数据处理的方法包括:接收需求端发送的访问请求,上述访问请求携带的信息包括:用户账号、与调用时机相关的令牌信息、请求调用的目标服务资源的地址信息和上述目标服务资源需要执行的目标指令;对上述令牌信息进行解密和权限验证,得到访问响应结果;以及将上述访问响应结果发送给需求端。其中,上述令牌信息是上述需求端在调用上述目标服务资源时,根据从服务端预先获取的资源访问信息和加密算法生成的;其中上述资源访问信息与上述用户账号对服务资源的访问权限相关联。
11.根据本公开的实施例,上述对上述令牌信息进行解密和权限验证,得到访问响应结果,包括:对上述令牌信息进行解密,得到解密后的资源访问信息;根据上述解密后的资源访问信息,对上述用户账号对应的用户进行身份校验;在上述用户账号的身份校验通过的情况下,根据预先配置的用户账号与服务资源的访问权限之间的关联关系,确定上述用户账号对上述目标服务资源是否具有调用权限;在确定上述用户账号对上述目标服务资源具有调用权限的情况下,根据上述地址信息,将上述目标指令发送给目标服务资源进行数据处理,得到数据处理结果,上述数据处理结果作为访问响应结果。
12.根据本公开的实施例,上述对上述令牌信息进行解密和权限验证,得到访问响应结果,还包括:在上述用户账号的身份校验不通过的情况下,或者在确定上述用户账号对上述目标服务资源不具有调用权限的情况下,得到访问失败的访问响应结果。
13.根据本公开的实施例,上述对上述令牌信息进行解密,得到解密后的资源访问信息,包括:根据上述用户账号,从数据库查询预先配置的目标资源访问信息,上述目标资源访问信息包括:上述用户账号用于访问授权服务资源的目标访问秘钥;根据与上述加密算法相匹配的解密算法,将查询到的上述目标访问秘钥作为解密秘钥,对上述令牌信息进行解密计算,得到字符串信息;以及对上述字符串信息进行拆分,得到解密后的时间戳信息和用户登录密码。
14.根据本公开的实施例,上述目标资源访问信息还包括:与上述用户账号关联的目标用户登录密码。其中,上述根据上述解密后的资源访问信息,对上述用户账号对应的用户进行身份校验,包括:校验解密后的时间戳信息与上述访问请求对应的时间戳信息是否一致;校验解密后的用户登录密码与上述目标用户登录密码是否一致;在校验得到解密后的时间戳信息与上述访问请求对应的时间戳信息一致,且解密后的用户登录密码与上述目标用户登录密码一致的情况下,确定上述用户账号对应的用户账号的身份校验通过;在校验
得到解密后的时间戳信息与上述访问请求对应的时间戳信息不一致,和/或,解密后的用户登录密码与上述目标用户登录密码不一致的情况下,确定上述用户账号对应的用户账号的身份校验不通过。
15.第三方面,本公开的实施例提供了一种资源访问的装置。上述资源访问的装置包括:指令接收模块、资源调用确定模块、令牌生成模块、数据发送模块和数据接收模块。上述指令接收模块用于接收用户在开发或使用应用过程中的操作指令。上述资源调用确定模块用于确定执行上述操作指令所需要调用的目标服务资源的地址信息和调用信息,上述调用信息包括:调用时机、上述目标服务资源需要执行的目标指令。上述令牌生成模块用于在上述调用时机,根据从服务端预先获取的资源访问信息和加密算法,生成与上述调用时机相关的令牌信息。其中上述资源访问信息与上述用户的用户账号对服务资源的访问权限相关联。上述数据发送模块用于将携带有上述用户账号、上述令牌信息、上述地址信息和上述目标指令的访问请求发送给服务端。上述数据接收模块用于接收来自服务端的访问响应结果;其中上述访问响应结果由上述服务端对上述令牌信息进行解密和权限验证后得到。
16.第四方面,本公开的实施例提供了一种数据处理的装置。上述数据处理的装置包括:请求接收模块、数据处理模块和结果发送模块。上述请求接收模块用于接收需求端发送的访问请求,上述访问请求携带的信息包括:用户账号、与调用时机相关的令牌信息、请求调用的目标服务资源的地址信息和上述目标服务资源需要执行的目标指令。其中,上述令牌信息是上述需求端在调用上述目标服务资源时,根据从服务端预先获取的资源访问信息和加密算法生成的;其中上述资源访问信息与上述用户账号对服务资源的访问权限相关联。上述数据处理模块用于对上述令牌信息进行解密和权限验证,得到访问响应结果。上述结果发送模块用于将上述访问响应结果发送给需求端。
17.第五方面,本公开的实施例提供了一种电子设备。上述电子设备包括处理器、通信接口、存储器和通信总线,其中,处理器、通信接口和存储器通过通信总线完成相互间的通信;存储器,用于存放计算机程序;处理器,用于执行存储器上所存放的程序时,实现如上所述的资源访问的方法或数据处理的方法。
18.第六方面,本公开的实施例提供了一种计算机可读存储介质。上述计算机可读存储介质上存储有计算机程序,上述计算机程序被处理器执行时实现如上所述的资源访问的方法或数据处理的方法。
19.本公开实施例提供的上述技术方案至少具有如下优点的部分或全部:
20.进行资源访问的整体逻辑是在调用时机,根据从服务端预先获取的资源访问信息和加密算法实时加密计算生成令牌信息,且令牌信息与调用时机和用户账号对服务资源的访问权限相关,使得不同时刻下的请求、不同用户的请求所对应生成的令牌信息都不一样,有效实现权限验证;一方面,由于每次访问请求对应的令牌信息都是重新计算的,无需考虑其时效性,因此需求端不需要费力进行令牌定期更新或置换的开发,服务端也不需要面临频繁更新令牌产生的压力;另一方面,由于生成的令牌信息为加密形式且与调用时机相关,其使用时间仅在一个访问请求和访问响应所对应的极短时间周期内,因此访问请求即使被不法分子截获,携带的令牌信息在短时间内很难被破解,即使令牌信息能够被破解,也需要花费很长时间,此时该次访问请求对应的访问-响应周期已经结束,令牌信息已经失效,有效保证了服务端的安全性;此外,还能够有效提升权限管控的细粒度,实现对同一个系统的
服务资源的细化权限管控。
附图说明
21.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
22.为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
23.图1示意性地示出了适用于本公开实施例的资源访问的方法和装置、数据处理的方法和装置的系统架构;
24.图2示意性地示出了根据本公开一实施例的资源访问的方法的流程图;
25.图3示意性地示出了根据本公开实施例的操作s203的详细实施流程图;
26.图4示意性地示出了根据本公开另一实施例的资源访问的方法的流程图;
27.图5a示意性地示出了根据本公开实施例的操作s401的一种详细实施流程图;
28.图5b示意性地示出了根据本公开实施例的操作s401的另一种详细实施流程图;
29.图6示意性地示出了根据本公开一实施例的数据处理的方法的流程图;
30.图7示意性地示出了根据本公开实施例的操作s602的详细实施流程图;
31.图8示意性地示出了根据本公开实施例的资源访问的装置的结构框图;
32.图9示意性地示出了根据本公开实施例的数据处理的装置的结构框图;以及
33.图10示意性示出了本公开实施例提供的电子设备的结构框图。
具体实施方式
34.经分析发现:目前api权限验证的方法中,会采用一个具有有效期限的令牌进行访问验证的方法。具体而言,第三方应用请求访问受保护资源(api对应的服务资源)时,服务端在核准第三方应用的用户授权后,会向第三方应用颁发一个访问令牌(accesstoken),该访问令牌包含第三方应用的授权访问范围、授权有效期等关键属性。第三方应用在后续资源访问过程中需要一直持有该令牌,直到用户主动结束该次授权或者令牌自动过期。过期的令牌是可以用于置换新的、且处于有效期内的新令牌,以便继续使用。如此一来,频繁更新令牌导致对于服务端的压力很大,而且前端的开放平台需要开发置换令牌的逻辑处理,增加了开发量。
35.另外,当前普遍使用的架构,只做到了对用户本身的访问限制,并没有做到更下一层资源的细粒度的访问限制。例如,对于有些需求,是需要限制到具体的某个资源的,例如:某个用户p可以访问资源a,但是不能访问资源b,资源a、b属于同一个系统内的资源;对于这样的需求,目前的系统框架只能限制p,要么同时访问a和b,要么不能访问a和b,无法做到同一个系统内资源的更细程度的访问控制。
36.此外,目前构建api访问的系统框架中通常只支持超文本传输协议(http)中的get请求形式,传递的参数外露,容易被非法获取,在令牌被非法获取后,非法用户可模拟请求,会对服务端的资源和运行产生风险。
37.有鉴于此,本公开的实施例提供了一种资源访问和数据处理的方法、装置、电子设
备及介质,能够基于预先获取的资源访问信息和加密算法,实时加密计算生成令牌信息,且令牌信息与调用时机和用户账号对服务资源的访问权限相关,使得不同时刻下的请求、不同用户的请求所对应生成的令牌信息都不一样,有效实现权限验证,具有安全性高且鉴权高效率的优点,而且能够实时控制令牌的时效性,权限控制粒度可以达到特定服务资源(某个api对应的服务资源)的具体访问权限,而且是服务端的权限修改生效后,需求端的令牌信息对应即刻生效,无延迟、无等待,具有更高效的权限管控,提升了开放平台的运营效率。
38.上述资源访问的方法包括:接收用户在开发或使用应用过程中的操作指令;确定执行上述操作指令所需要调用的目标服务资源的地址信息和调用信息,上述调用信息包括:调用时机、上述目标服务资源需要执行的目标指令;在上述调用时机,根据从服务端预先获取的资源访问信息和加密算法,生成与上述调用时机相关的令牌信息;其中上述资源访问信息与上述用户的用户账号对服务资源的访问权限相关联;将携带有上述用户账号、上述令牌信息、上述地址信息和上述目标指令的访问请求发送给服务端;以及接收来自服务端的访问响应结果;其中上述访问响应结果由上述服务端对上述令牌信息进行解密和权限验证后得到。
39.上述数据处理的方法包括:接收需求端发送的访问请求,上述访问请求携带的信息包括:用户账号、与调用时机相关的令牌信息、请求调用的目标服务资源的地址信息和上述目标服务资源需要执行的目标指令;对上述令牌信息进行解密和权限验证,得到访问响应结果;以及将上述访问响应结果发送给需求端。其中,上述令牌信息是上述需求端在调用上述目标服务资源时,根据从服务端预先获取的资源访问信息和加密算法生成的;其中上述资源访问信息与上述用户账号对服务资源的访问权限相关联。
40.为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
41.图1示意性地示出了适用于本公开实施例的资源访问的方法和装置、数据处理的方法和装置的系统架构。
42.参照图1所示,适用于本公开实施例的资源访问的方法和装置、数据处理的方法和装置的系统架构100包括:需求端和服务端130,需求端和服务端130之间通过网络进行数据交互。在图1中以两种类型的需求端作为示例,例如需求端可以是以终端设备为代表的第一需求端110,或者,也可以是以应用服务器为代表的第二需求端120。
43.网络是在需求端和服务端130之间提供通信链路的介质,可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
44.第一需求端110可以是安装有应用或浏览器且具有从服务端130调用服务资源的需求的终端设备111、112、113。上述终端设备111、112、113诸如是笔记本电脑、智能手机、平板电脑、智能手表、智能手环、智能机器人等。上述应用包括但不限于是:软件开发类应用、金融类应用、购物类应用、图像识别应用、网页浏览器应用、搜索类应用、短视频类应用、即时通信工具、邮箱客户端、社交平台软件等等。
45.第二需求端120可以是给上述终端设备111、112、113提供应用服务支持且具有从服务端130调用服务资源的需求的应用服务器。上述应用服务器可以是由多个服务器构成
的服务集群,或者为单独的一个服务器,在图1中以应用服务器121和122进行示例。在一些场景下,上述应用服务器121、122在为终端设备111、112、113提供服务支持时,需要从服务端130调用服务资源。
46.服务端130可以是作为api服务资源接入和权限验证的统一管理层,在一些实施例中,服务端130本身具有api服务资源;在另一些实施例中,服务端130与服务资源所在的服务集群在空间上是独立的,服务端130可以通过网络与服务资源所在的服务集群进行数据交互,从而实现对api服务资源的调用。
47.服务端130本身可以带有数据库;或者服务端130可以与外部数据库进行通信,并对外部数据库中的数据具有操作权限。
48.示例性的,服务端130可以是云服务器或者常规的服务器,或者,服务端还可以是联网的具有运算能力和api服务资源管理权限的电子设备(功能类似于服务器)。
49.第一用户101可以使用终端设备(对应为第一需求端110)来进行应用的开发,或者第二用户102可以使用终端设备对已发布的应用进行下载和使用。
50.在一种示例性场景中,第一用户101使用终端设备进行应用开发的过程中,由该终端设备对应的第一需求端110来执行本公开实施例提供的资源访问的方法,相应的,由服务端130来执行本公开实施例提供的数据处理的方法。
51.例如,在第一需求端110和服务端130构成的系统架构中,参照图1中单点划线所示,终端设备111、112、113上的应用(例如为软件开发app,第一用户101通过软件开发app进行网购类应用的开发)或浏览器(例如为网页版软件开发系统,第一用户101通过网页版软件开发系统进行网购类应用的开发)在运行时,通过执行本公开实施例提供的资源访问的方法,向服务端130发起对目标服务资源进行调用的访问请求,并接收来自服务端130的访问响应结果。服务端130通过执行本公开实施例提供的数据处理的方法,对接收到的访问请求进行分析和数据处理,并将访问响应结果(例如根据访问请求获取的数据、查询结果,调用服务资源进行计算后的结果等)反馈给终端设备111、112、113。
52.在另一种示例性场景中,第二用户102使用终端设备对已发布的应用进行使用的过程中,由应用服务器对上述应用进行服务支持,期间应用服务器作为第二需求端120,需要从服务端130调用服务资源,这种场景下,由应用服务器对应的第二需求端120来执行本公开实施例提供的资源访问的方法,相应的,由服务端130来执行本公开实施例提供的数据处理的方法。
53.例如,在第二需求端120和服务端130构成的系统架构中,参照图1中双点划线所示,终端设备上的应用(例如为网购类app)或浏览器(例如为网页版网购平台)在运行时,应用服务器121为应用或浏览器的运行提供服务支持时,该应用服务器121通过执行本公开实施例提供的资源访问的方法,向服务端130发起对目标服务资源(api接口对应的服务资源)进行调用的访问请求,并接收来自服务端130的访问响应结果。服务端130通过执行本公开实施例提供的数据处理的方法,对接收到的访问请求进行分析和数据处理,并将访问响应结果(例如根据访问请求获取的数据、查询结果,调用服务资源进行计算后的结果等)反馈给应用服务器121。
54.应该理解,图1中的终端设备和应用服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备和应用服务器。
55.下面结合附图来对本公开的实施例进行详细介绍。
56.本公开的第一个示例性实施例提供了一种资源访问的方法。本实施例的资源访问的方法可以由图1中示例的第一需求端110或第二需求端120执行。
57.图2示意性地示出了根据本公开一实施例的资源访问的方法的流程图。
58.参照图2所示,本公开实施例提供的资源访问的方法,包括以下操作:s201、s202、s203、s204和s205。操作s201~s205可以由需求端执行,参照图1所示,需求端可以是图1中示例的以终端设备为代表的第一需求端110,也可以是以应用服务器为代表的第二需求端120。
59.在操作s201,接收用户在开发或使用应用过程中的操作指令。
60.这里的应用可以包括但不限于是:终端设备上安装的应用程序(app)、各种小程序、或者网页版应用(基于浏览器进行相关数据的操作)等。
61.上述应用包括但不限于是:软件开发类应用、金融类应用、购物类应用、图像识别应用、网页浏览器应用、搜索类应用、短视频类应用、即时通信工具、邮箱客户端、社交平台软件等等。
62.在一实施场景中,参照图1中单点划线所示,第一用户101例如为软件开发者,该软件开发者基于终端设备111、112、113中安装的软件开发应用或网页版软件开发系统进行应用的开发过程,在该过程中,软件开发者会在软件开发应用或网页版软件开发系统所对应的交互界面上实施一个或多个操作,从而在终端设备上接收到第一用户101在开发应用过程中的操作指令。
63.例如,在一实施例中,上述网页版软件开发系统包括:开放平台,该开放平台具有api接口,用户可以通过在该开放平台购买并使用特定的api接口(有些开放平台中,用户还可以同时使用这些api接口所对应的软件开发工具包(sdk包)),以实现对相应的api服务资源的调用,进而实现应用的开发和构建。在另一实施例中,上述软件开发应用通过预先购买的方式,对特定api接口对应的服务资源具有使用权,可以对已授权的api对应的服务资源进行调用。上述购买只是作为访问特定服务资源的授权条件的一种示例,在其他的实施例中,有的api服务资源无需通过购买便可以进行使用,即授权条件可以是包括购买、非购买(例如用户积分满足预设条件、用户信誉值满足预设条件等)等各种形式。
64.在另一实施场景中,参照图1中双点划线所示,第二用户102例如为应用或浏览器的使用者,该使用者可以是机构用户或个人用户。用户在应用的操作界面或浏览器的展示界面上,可以实施各种操作;从而在终端设备上接收到用户在使用应用过程中的操作指令,终端设备会将携带该操作指令的数据处理请求发送给应用服务器121,由此在应用服务器121中接收到上述操作指令(对应于操作s201)。
65.示例性的,用户在开发应用过程中的操作指令可以包括但不限于是:获取软件开发需求调研结果、进行系统框架的设置指令、进行数据库框架的设置指令、编写和校验程序代码的指令、设计测试用例的指令、或者调用测试用例进行软件测试的指令等等。
66.以应用为网购类app、浏览器为网页版网购平台为例,用户在使用应用过程中的操作指令包括但不限于是:注册账号的指令、登录账号的指令、查询特定商品的指令、进行售前咨询的指令、将特定商品加入购物车的指令、对特定商品进行支付的指令、对已支付商品的物流信息进行查看的指令、发起售后退货的指令等等。
67.在操作s202,确定执行上述操作指令所需要调用的目标服务资源的地址信息和调用信息,上述调用信息包括:调用时机、上述目标服务资源需要执行的目标指令。
68.在需求端110(终端设备)或需求端120(应用服务器)接收到用户在开发或使用应用过程中的操作指令后,会对上述操作指令进行分析,确定执行上述操作指令的过程中,在什么时候(对应于调用时机)需要调用第三方服务端130(非应用服务器)的哪些服务资源(目标服务资源)来执行哪些指令(目标指令)。上述调用时机是指需要调用目标服务资源对应的时间点。
69.示例性的,上述目标指令可以包括但不限于是:数据查看指令、数据查询指令、数据筛选指令、计算指令、数据修改指令、数据增加指令、数据删除指令等。上述列举的指令也可以进行功能合并或功能拆分,例如可以将数据查看指令、数据查询指令和数据筛选指令进行功能合并;可以将计算指令进行功能拆分,得到多个子计算指令等。
70.以目标指令为数据查看指令为例来描述操作s201和s202的具体实施过程。当用户在使用购物类应用时的操作指令为购买1件特定颜色和特定尺寸的商品时,在需求端120(应用服务器)接收到上述操作指令后,通过对上述操作指令进行分析,可以确定在当前时刻(调用时机),需要调用库存系统(服务端的一种示例)的库存服务资源(目标服务资源,该目标服务资源的地址信息为库存api接口所对应的访问地址)来对库存量进行查看,即目标指令为:针对特定颜色和特定尺寸的商品进行的库存查看指令(对某个参数、某个参数值进行查看)。
71.上述数据查看指令还可以是:对广告投放统计量进行查看、对流量审计数据进行查看等等。在数据查询指令对应的实施场景中,可以通过一些关键字来进行数据查询,例如调用商家系统,对包含“三岁”、“男孩”和“衣服”这三个关键字的非网购平台自营商品进行查询。在数据筛选指令对应的实施场景中,例如调用包含测试用例的数据库服务,对符合当前系统框架的已有测试用例进行筛选,得到待返回的目标测试用例。在计算指令对应的实施场景中,可以是调用结算系统,对结转账单进行账单冲销和账单明细的冲销计算。数据修改指令、数据增加指令、数据删除指令的场景可以参照理解,这里不再一一示例。
72.在操作s203,在上述调用时机,根据从服务端预先获取的资源访问信息和加密算法,生成与上述调用时机相关的令牌信息;其中上述资源访问信息与上述用户的用户账号对服务资源的访问权限相关联。
73.需求端从服务端预先获取的资源访问信息是与用户账号对服务资源的访问权限相关联的。例如,针对同一个系统中的api服务资源1和2,用户a的用户账号ca对api服务资源1具有访问权限,对api服务资源2不具有访问权限;用户b的用户账号cb对api服务资源1和api服务资源2均具有访问权限。对此,在服务端会给该用户账号ca分配一组资源访问信息i1,并且在服务端对应的数据库中,会将上述资源访问信息i1与用户账号ca对api服务资源的访问权限进行关联,得到的关联关系的记录方式例如为:资源访问信息i1→
ca对api服务资源1具有访问权限(不写的服务资源表示不具备访问权限);或者也可以为:资源访问信息i1→
ca对api服务资源1具有访问权限,ca对api服务资源2不具备访问权限(对不具备的api服务资源的访问权限也有对应描述);通常为了简化,可以采用第一种示例的关联关系记录方式。类似的,服务端会给用户账号cb分配一组资源访问信息i2,并且将上述资源访问信息i2与用户账号cb对api服务资源的访问权限进行关联,关联关系记录方式例如为:资源
访问信息i2→
cb对api服务资源1具有访问权限,cb对api服务资源2具有访问权限。
74.在分配好资源访问信息,将资源访问信息与访问权限之间进行关联之后,服务端还会将加密算法和上述分配好的资源访问信息发送给用户,例如通过邮箱或者其他通信媒介,将资源访问信息i1和加密算法传输给用户a,将资源访问信息i2和加密算法传输给用户b。
75.上述加密算法可以是一个用于进行加密计算的功能包,传输给所有用户的加密算法可以是统一的,也可以是针对用户历史访问的安全级别的差异,对安全级别相对较差的用户传输的加密算法为复杂程度为高级的功能包,对安全级别相对较好的用户传输的加密算法为复杂程度为中级或低级的功能包,上述复杂程度不同的功能包预先由服务端开发出来,其中模拟复杂程度为低级的功能包被非法截获,并经过运算性能较好的解密工具进行解密测验,也需要花费很长时间(有的需要半个小时,有的甚至需要好几天甚至更长时间)才可以实现解密,被解密后的访问令牌在当前请求-响应对应的周期内已经失效,能够确保安全性。
76.对于用户而言,无需知道加密算法的具体逻辑,只需要按照约定方式,将资源访问信息作为输入信息,输入至终端设备中,由终端设备对应的需求端或应用服务器对应的需求端执行预设的加密计算逻辑(对应于操作s203),便可以输出得到加密后的与调用时机相关的令牌信息。这一加密计算逻辑可以是任何一种服务端能够进行解密的加密逻辑。
77.例如,在一实施场景中,对于用户a在开发或使用应用过程中的操作指令,确定执行上述操作指令所需要调用的目标服务资源为api服务资源2;在调用时机根据从服务端预先获取的资源访问信息i1和加密算法,生成与上述调用时机相关的令牌信息为token1,该token1与用户a的用户账号ca对于已授权的服务资源:api服务资源1相关联,并且与调用时机相关联。
78.在操作s204,将携带有上述用户账号、上述令牌信息、上述地址信息和上述目标指令的访问请求发送给服务端。
79.例如,在一实施场景中,在生成令牌信息token1后,将携带有用户账号ca、令牌信息token1和需要调用的目标服务资源:api服务资源2的地址信息以及调用api服务资源2执行的目标指令发送给服务端。
80.在操作s205,接收来自服务端的访问响应结果;其中上述访问响应结果由上述服务端对上述令牌信息进行解密和权限验证后得到。
81.上述操作s204~s205中,需求端根据用户账号和令牌信息,可以从服务端获取对应的权限验证结果。
82.从服务端一侧来看,由于在服务端预先配置和存储有用户账号与服务资源的访问权限之间的关联关系,那么在接收到访问请求后,服务端通过对令牌信息进行解密和权限验证,确定当前用户的用户账号对目标服务资源是否具有调用/访问权限。
83.例如,操作s205的实施场景中,在服务端对令牌信息token1进行解密和权限验证后,得到解密后的资源访问信息为:i1,并且根据预先配置和存储的用户账号与服务资源的访问权限之间的关联关系,可以确定资源访问信息i1对应的资源访问权限为:ca对api服务资源1具有访问权限,ca对api服务资源2不具备访问权限。由此进行权限验证时可以得到用户a对目标服务资源:api服务资源2不具备访问权限的验证结果,从而会向需求端反馈访问
失败的访问响应结果。相应的,在需求端一侧,接收到来自服务端的访问响应结果为:访问失败。
84.其中,在权限验证通过的情况下,服务端会根据目标服务资源的地址信息,将调用目标服务资源执行的目标指令发送给对应的目标服务资源来执行,从而得到对应的数据处理结果,并将该数据处理结果作为访问响应结果反馈给需求端。在权限验证不通过的情况下,服务端直接向需求端反馈访问失败的访问响应结果,而不会将调用信息转发至用户无访问权限的目标服务资源,有效保证了访问的安全性。
85.基于上述操作s201~s205,本公开实施例提供的资源访问的方法中,进行资源访问的整体逻辑是在调用时机,根据从服务端预先获取的资源访问信息和加密算法实时加密计算生成令牌信息,且令牌信息与调用时机和用户账号对服务资源的访问权限相关,使得不同时刻下的请求、不同用户的请求所对应生成的令牌信息都不一样,有效实现权限验证。上述逻辑的设置既能够同时提升访问管控的安全性和细粒度,还能够避免定期更换令牌对应的各种问题。
86.具体而言,一方面,由于每次访问请求对应的令牌信息都是各个需求端在调用时机进行实时计算的(每次请求都需要重新计算),无需考虑其时效性,因此需求端不需要费力进行令牌定期更新或置换的开发,服务端也不需要面临频繁更新令牌产生的压力;另一方面,由于生成的令牌信息为加密形式且与调用时机相关,其使用时间仅在一个访问请求和访问响应所对应的极短时间周期内,因此访问请求即使被不法分子截获,携带的令牌信息在短时间内很难被破解,即使令牌信息能够被破解,也需要花费很长时间(超过令牌有效期时间),此时该次访问请求对应的访问-响应周期已经结束,令牌信息已经失效,有效保证了服务端的安全性;此外,还能够有效提升权限管控的细粒度,实现对同一个系统的服务资源的细化权限管控。
87.目前市面上提供api实现的框架技术有很多,例如,基于python开发语言的框架,或者应用比较广泛的是django rest framework框架(用于构建web api的一个强大且灵活的工具包),基于上述主要技术框架产品,在用户登录认证并获取到令牌的时候,所发出的请求是get方式的,get方式的请求特点是,将传递的参数明确的写在了网址(url)的内容里面,可以明显的看到get请求发出的信息,包括用户名、密码等及其重要、敏感的信息,未能起到包含信息安全的作用。而本公开实施例中的资源调用的逻辑中,支持采用post的请求方式。
88.根据本公开的实施例,上述访问请求包括超文本传输协议中的post请求方式,上述用户账号和上述令牌信息均位于cookie(网站中跟踪并存储的有关用户身份的数据集)中。通过采用post请求方式来传递令牌信息,比get请求方式更加安全,不会在网址里发现敏感的信息,不会使得令牌信息对外暴露。
89.在一实施场景中,当需求端为终端设备时,上述终端设备以post请求方式发起访问请求(问询是否准备好),在服务端接收到访问请求后(准备好的话),可以从终端设备的cookie中获取对应的用户账号和令牌信息。
90.在另一实施场景中,当需求端为应用服务器时,应用服务器通过从终端设备的cookie中获取对应的用户账号和令牌信息,并将携带有上述用户账号和令牌信息的访问请求发送给服务端。
91.常规技术中,服务器对认证成功的用户发放一个具有有效期限的令牌,此令牌在一段时间内是有效的,如果当前服务器想要限制此用户访问部分api时,令牌是无法做到实时生效的,想要等待当前的令牌过了有效期之后,才能生效,这样不利于服务端对用户的控制,无法启到立竿见影的效果。与常规技术相比,本公开实施例提供的权限控制粒度可以达到某个api的具体访问权限,而且是管理员对访问权限进行设置或更新后,对应的权限控制功能立即生效,无延迟、无等待,具有更高效的运营效率,更有优势。
92.图3示意性地示出了根据本公开实施例的操作s203的详细实施流程图。
93.根据本公开的实施例,从服务端预先获取的资源访问信息包括:与上述用户账号关联的用户登录密码和用于访问服务资源的访问秘钥。
94.示例性的,与用户a的用户账号ca关联的用户登录密码为:“d!$x0u824_^644i@f”(16位长度),与用户账号ca关联的用于访问服务资源(授权的api服务资源,例如为api服务资源1)的访问秘钥为:“rvkr76m9”(8位长度)。可以理解的是,这里的用户登录密码和访问秘钥的长度作为示例,本公开的实施例中不限制密码和秘钥的长度。
95.参照图3所示,在操作s203中,在上述调用时机,根据从服务端预先获取的资源访问信息和加密算法,生成与上述调用时机相关的令牌信息,包括以下操作:s301和s302。
96.在操作s301,将上述调用时机对应的时间戳信息与上述用户登录密码进行合并,得到字符串。
97.例如,上述调用时机对应的时间戳信息为:“1632721553”;将该时间戳信息“1632721553”与用户登录密码“d!$x0u824_^644i@f”进行合并,得到字符串例如为:“1632721553d!$x0u824_^644i@f”。可以理解的是,这里以合并时时间戳信息在前,用户登录密码在后作为示例,在其他实施例中,在将时间戳信息与用户登录密码进行合并时也可以将用户登录密码放置在前,时间戳信息放置在后。这两种情况下,在服务端进行解密时,进行字符串拆分时,解密的时间戳信息和用户登录密码进行先后识别的顺序与这里的合并的先后顺序对应即可。
98.在操作s302,根据上述加密算法,将上述访问秘钥作为加密秘钥,对上述字符串进行加密计算,得到令牌信息。
99.从服务端预先获取的加密算法可以是各种用于进行加密计算的功能包,例如包括但不限于是:des加密算法、aes加密算法、rsa加密算法等。
100.这里以des加密算法为例,根据des加密算法对应的功能包,将访问秘钥作为加密秘钥输入至des加密算法中,将字符串“1632721553d!$x0u824_^644i@f”作为待加密信息输入至des加密算法对应的功能包(该功能包支持各种长度的字符串和秘钥的输入,并能输出对应加密后的唯一的令牌信息)中,基于该功能包中的des加密算法进行加密计算,可以输出得到唯一的令牌信息,该令牌信息例如为以下形式:
[0101]“n53btw6tr2x/k/ovgx0pzt1hj”。
[0102]
图4示意性地示出了根据本公开另一实施例的资源访问的方法的流程图。
[0103]
根据本公开的实施例,上述资源访问的方法除了包括上述操作s201~s205之外,还包括以下操作:s401,获取资源访问信息和加密算法;为了简化示意,在图4中仅示意了操作s401和操作s203。上述操作s401在操作s203之前执行。
[0104]
根据本公开的实施例,获取资源访问信息和加密算法,包括:在满足访问特定服务
资源的授权条件的情况下,向服务端发起获取上述特定服务资源对应的资源访问信息和加密算法的获取请求;以及接收服务端发送的数据包,上述数据包中携带有上述资源访问信息和上述加密算法。
[0105]
下面以用户购买特定服务资源作为用户满足访问特定服务资源的授权条件的一种示例,在其他实施例中,有的api服务资源无需通过购买便可以进行使用,即授权条件可以是包括购买、非购买(例如用户积分满足预设条件、用户信誉值满足预设条件等)等各种形式。
[0106]
图5a示意性地示出了根据本公开实施例的操作s401的一种详细实施流程图。
[0107]
参照图5a所示,上述操作s401中,获取资源访问信息和加密算法,包括以下操作:s501、s502和s503。
[0108]
在操作s501,接收关于特定服务资源支付成功的确认信息,上述特定服务资源为上述用户在开发或使用应用时待享有的服务资源。
[0109]
例如,应用的运营方(用户的一种示例)可以通过终端设备上的开放平台为某个开发中的应用或已发布应用购买api接口所对应的特定服务资源,那么在该应用的开发过程中或使用过程中,具有对上述特定服务资源的访问权限(这里为满足访问授权条件的一种示例)。当用户针对特定api接口所对应的服务资源进行支付,并由支付系统向该终端设备或对应的应用服务器反馈支付成功的确认信息时,对应在终端设备或应用服务器(需求端)接收到上述支付成功的确认信息,该确认信息会触发获取资源访问信息和加密算法的操作。这里的支付可以包含采用实际或虚拟金钱进行支付、积分的抵扣支付(满足积分最低阈值即可享受)、信誉值的抵扣支付(满足信誉值最低阈值即可享受)等广义的含义。
[0110]
根据本公开的实施例,上述确认信息包括:用户账号(用于表明用户身份,也可以描述为用户标识,例如为开放平台的登录名、用户名称、手机号等),支付信息,购买的特定服务资源(例如购买的是进行图像识别的服务资源),以及特定服务资源的购买有效期限(例如购买期限为一年,从购买之日起,能够使用一年的图像识别的服务资源)。
[0111]
在操作s502,根据上述确认信息,向上述服务端发起获取上述特定服务资源对应的资源访问信息和加密算法的获取请求。
[0112]
在一种实施场景中,服务端为开放平台中的api接口所对应的api服务资源的服务器一侧(可以是云服务器或者常规服务器,或者其他能够提供服务资源服务的电子设备)。
[0113]
在操作s503,接收服务端发送的数据包,上述数据包中携带有上述资源访问信息和上述加密算法。
[0114]
在服务端会根据上述确认信息(用户账号、支付信息、购买的特定服务资源以及特定服务资源的购买有效期限),为需求端对应的用户标识分配相应的服务资源的访问权限,并配置与上述访问权限相关联的资源访问信息,将资源访问信息与对服务资源的访问权限之间的关联关系进行存储;并且将上述资源访问信息和预先开发好的加密算法发送给需求端。
[0115]
根据本公开的实施例,需求端(图1示例的110或120)与服务端(图1示例的130)所对应的信息收发双方之间可以通过约定的媒介进行资源访问信息和加密算法的传输,例如通过邮件的方式进行传输,或者由需求端通过访问服务端给出的某个特定的访问地址(访问密码由收发双方共有)来获取数据包。
[0116]
图5b示意性地示出了根据本公开实施例的操作s401的另一种详细实施流程图。
[0117]
为了进一步提升信息传输过程中的安全性,避免信息在传输过程中被盗取或泄露,上述数据包为通过约定秘钥进行加密后的密文形式,上述约定秘钥是在信息收发双方之间约定的对外保密内容。例如,服务端发送的数据包是加密后的压缩包,加密和解密的秘钥是由需求端和服务端双方约定的对外保密的秘钥。
[0118]
在上述通过约定秘钥对数据包进行加密的实施例的基础上,参照图5b所示,上述操作s401除了包括上述操作s501~s503之外,还包括以下操作s504:基于上述约定秘钥,对接收到的密文形式的数据包进行解密后,得到明文形式的资源访问信息和加密算法。
[0119]
本公开的第二个示例性实施例提供了一种数据处理的方法。本实施例的数据处理的方法可以由图1中示例的服务端130执行。为了理解需求端和服务端交互的整个数据流,可以结合第一个实施例和第二个实施例的相关描述。
[0120]
图6示意性地示出了根据本公开一实施例的数据处理的方法的流程图。
[0121]
参照图6所示,本公开实施例提供的数据处理的方法,包括以下操作:s601、s602和s603。操作s601~s603由服务端执行,该服务端对需求端访问api接口对应的api服务资源进行权限管理。
[0122]
在操作s601,接收需求端发送的访问请求,上述访问请求携带的信息包括:用户账号、与调用时机相关的令牌信息、请求调用的目标服务资源的地址信息和上述目标服务资源需要执行的目标指令。
[0123]
其中,上述令牌信息是上述需求端在调用上述目标服务资源时,根据从服务端预先获取的资源访问信息和加密算法生成的;其中上述资源访问信息与上述用户账号对服务资源的访问权限相关联。
[0124]
在操作s602,对上述令牌信息进行解密和权限验证,得到访问响应结果。
[0125]
在操作s603,将上述访问响应结果发送给需求端。
[0126]
在一实施例中,在需求端一侧执行完上述操作s201~s203之后,执行操作s204,将携带有上述用户账号、上述令牌信息、上述地址信息和上述目标指令的访问请求发送给服务端。相应的,在服务端一侧接收需求端发送的访问请求(对应于操作s601)。接着,服务端执行操作s602,得到访问响应结果,并执行操作s603,将上述访问响应结果发送给需求端。相应的,在需求端一侧接收服务端发送的访问响应结果(对应于操作s205)。
[0127]
一方面,由于每次访问请求对应的令牌信息都是各个需求端在调用时机进行实时计算的(每次请求都需要重新计算),无需考虑其时效性,因此需求端不需要费力进行令牌定期更新或置换的开发,服务端也不需要面临频繁更新令牌产生的压力;另一方面,由于上述令牌信息为加密形式且与调用时机相关,其使用时间仅在一个访问请求和访问响应所对应的极短时间周期内,因此访问请求即使被不法分子截获,携带的令牌信息在短时间内很难被破解,即使令牌信息能够被破解,也需要花费很长时间(超过令牌有效期时间),此时该次访问请求对应的访问-响应周期已经结束,令牌信息已经失效,有效保证了服务端的安全性;此外,还能够有效提升权限管控的细粒度,实现对同一个系统的服务资源的细化权限管控。
[0128]
图7示意性地示出了根据本公开实施例的操作s602的详细实施流程图。
[0129]
根据本公开的实施例,参照图7所示,上述操作s602中,对上述令牌信息进行解密
和权限验证,得到访问响应结果,包括以下操作:s701、s702、s703a和s704a。
[0130]
参照图7所示,在包含上述操作s701、s702、s703a和s704a的实施例的基础上,上述操作s602还可以进一步包括操作s703b和s704b。
[0131]
在操作s701,对上述令牌信息进行解密,得到解密后的资源访问信息。
[0132]
进行解密采用的算法是服务端预先设置好的针对加密算法的解密算法,对应解密的过程可以为加密过程的逆过程。
[0133]
根据本公开的实施例,对上述令牌信息进行解密,得到解密后的资源访问信息,包括以下子操作:s7011、s7012、s7013。
[0134]
在子操作s7011,根据上述用户账号,从数据库查询预先配置的目标资源访问信息,上述目标资源访问信息包括:上述用户账号用于访问授权服务资源的目标访问秘钥。
[0135]
例如查询到的用户账号ca授权的api服务资源1对应的目标访问秘钥为:“rvkr76m9”。
[0136]
在子操作s7012,根据与上述加密算法相匹配的解密算法,将查询到的上述目标访问秘钥作为解密秘钥,对上述令牌信息进行解密计算,得到字符串信息。
[0137]
进行解密计算,得到的字符串信息例如为:“1632721553d!$x0u824_^644i@f”。
[0138]
在子操作s7013,对上述字符串信息进行拆分,得到解密后的时间戳信息和用户登录密码。
[0139]
根据与加密时合并一致的顺序,对字符串信息进行拆分。例如按照时间戳信息在前,用户登录密码在后的顺序,得到解密后的时间戳信息为:“1632721553”,解密后的用户登录密码为:“d!$x0u824_^644i@f”。
[0140]
在操作s702,根据上述解密后的资源访问信息,对上述用户账号对应的用户进行身份校验。
[0141]
上述预先配置的目标资源访问信息中除了包括目标访问秘钥之外,还包括:与上述用户账号关联的目标用户登录密码。
[0142]
上述操作s702中,根据上述解密后的资源访问信息,对上述用户账号对应的用户进行身份校验,包括:校验解密后的时间戳信息与上述访问请求对应的时间戳信息是否一致;校验解密后的用户登录密码与上述目标用户登录密码是否一致;在校验得到解密后的时间戳信息与上述访问请求对应的时间戳信息一致,且解密后的用户登录密码与上述目标用户登录密码一致的情况下,确定上述用户账号对应的用户账号的身份校验通过;在校验得到解密后的时间戳信息与上述访问请求对应的时间戳信息不一致,和/或,解密后的用户登录密码与上述目标用户登录密码不一致的情况下,确定上述用户账号对应的用户账号的身份校验不通过。
[0143]
基于上述,对用户进行身份校验时,不仅要校验当前访问请求中根据令牌信息解密后得到的用户登录密码是否与用户账号匹配,还要校验当前访问请求携带的时间戳信息是否为访问请求发起时的时间戳,如果时间戳信息不一致,也会导致校验不通过,从而可以阻拦非法截获令牌信息发起的伪造请求对服务资源的访问,有效保证服务端的安全性。
[0144]
在操作s703a,在上述用户账号的身份校验通过的情况下,根据预先配置的用户账号与服务资源的访问权限之间的关联关系,确定上述用户账号对上述目标服务资源是否具有调用权限。
[0145]
在操作s704a,在确定上述用户账号对上述目标服务资源具有调用权限的情况下,根据上述地址信息,将上述目标指令发送给目标服务资源进行数据处理,得到数据处理结果,上述数据处理结果作为访问响应结果。
[0146]
在操作s703b,在上述用户账号的身份校验不通过的情况下,得到访问失败的访问响应结果。
[0147]
在操作s704b,在确定上述用户账号对上述目标服务资源不具有调用权限的情况下,得到访问失败的访问响应结果。
[0148]
本公开的第三个示例性实施例提供了一种资源访问的装置。
[0149]
图8示意性地示出了根据本公开实施例的资源访问的装置的结构框图。
[0150]
参照图8所示,本公开实施例提供的资源访问的装置800包括:指令接收模块801、资源调用确定模块802、令牌生成模块803、数据发送模块804和数据接收模块805。
[0151]
上述指令接收模块801用于接收用户在开发或使用应用过程中的操作指令。
[0152]
上述资源调用确定模块802用于确定执行上述操作指令所需要调用的目标服务资源的地址信息和调用信息,上述调用信息包括:调用时机、上述目标服务资源需要执行的目标指令。
[0153]
上述令牌生成模块803用于在上述调用时机,根据从服务端预先获取的资源访问信息和加密算法,生成与上述调用时机相关的令牌信息。其中上述资源访问信息与上述用户的用户账号对服务资源的访问权限相关联。
[0154]
上述数据发送模块804用于将携带有上述用户账号、上述令牌信息、上述地址信息和上述目标指令的访问请求发送给服务端。
[0155]
上述数据接收模块805用于接收来自服务端的访问响应结果;其中上述访问响应结果由上述服务端对上述令牌信息进行解密和权限验证后得到。
[0156]
根据本公开的实施例,上述资源访问的装置800除了包括上述指令接收模块801、资源调用确定模块802、令牌生成模块803、数据发送模块804和数据接收模块805之外,还可以包括:访问信息和加密算法获取模块,用于获取资源访问信息和加密算法。
[0157]
上述访问信息和加密算法获取模块可以包括用于实现上述操作s501~s503,或者上述操作s501~s504的功能模块或子模块。
[0158]
本公开的第四个示例性实施例提供了一种数据处理的装置。
[0159]
图9示意性地示出了根据本公开实施例的数据处理的装置的结构框图。
[0160]
参照图9所示,本公开实施例提供数据处理的装置900包括:请求接收模块901、数据处理模块902和结果发送模块903。
[0161]
上述请求接收模块901用于接收需求端发送的访问请求,上述访问请求携带的信息包括:用户账号、与调用时机相关的令牌信息、请求调用的目标服务资源的地址信息和上述目标服务资源需要执行的目标指令。其中,上述令牌信息是上述需求端在调用上述目标服务资源时,根据从服务端预先获取的资源访问信息和加密算法生成的;其中上述资源访问信息与上述用户账号对服务资源的访问权限相关联。
[0162]
上述数据处理模块902用于对上述令牌信息进行解密和权限验证,得到访问响应结果。
[0163]
上述结果发送模块903用于将上述访问响应结果发送给需求端。
[0164]
上述第三个实施例中,上述指令接收模块801、资源调用确定模块802、令牌生成模块803、数据发送模块804和数据接收模块805中的任意多个可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。指令接收模块801、资源调用确定模块802、令牌生成模块803、数据发送模块804和数据接收模块805中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(fpga)、可编程逻辑阵列(pla)、片上系统、基板上的系统、封装上的系统、专用集成电路(asic),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,指令接收模块801、资源调用确定模块802、令牌生成模块803、数据发送模块804和数据接收模块805中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
[0165]
上述第四个实施例中,上述请求接收模块901、数据处理模块902和结果发送模块903中的任意多个可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。请求接收模块901、数据处理模块902和结果发送模块903中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(fpga)、可编程逻辑阵列(pla)、片上系统、基板上的系统、封装上的系统、专用集成电路(asic),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,请求接收模块901、数据处理模块902和结果发送模块903中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
[0166]
本公开的第五个示例性实施例提供了一种电子设备。
[0167]
图10示意性示出了本公开实施例提供的电子设备的结构框图。
[0168]
参照图10所示,本公开实施例提供的电子设备1000包括处理器1001、通信接口1002、存储器1003和通信总线1004,其中,处理器1001、通信接口1002和存储器1003通过通信总线1004完成相互间的通信;存储器1003,用于存放计算机程序;处理器1001,用于执行存储器上所存放的程序时,实现如上所述的资源访问的方法或数据处理的方法。
[0169]
本公开的第六个示例性实施例还提供了一种计算机可读存储介质。上述计算机可读存储介质上存储有计算机程序,上述计算机程序被处理器执行时实现如上所述的资源访问的方法或数据处理的方法。
[0170]
该计算机可读存储介质可以是上述实施例中描述的设备/装置中所包含的;也可以是单独存在,而未装配入该设备/装置中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。
[0171]
根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或
者与其结合使用。
[0172]
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0173]
以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。
技术特征:
1.一种资源访问的方法,其特征在于,包括:接收用户在开发或使用应用过程中的操作指令;确定执行所述操作指令所需要调用的目标服务资源的地址信息和调用信息,所述调用信息包括:调用时机、所述目标服务资源需要执行的目标指令;在所述调用时机,根据从服务端预先获取的资源访问信息和加密算法,生成与所述调用时机相关的令牌信息;其中所述资源访问信息与所述用户的用户账号对服务资源的访问权限相关联;将携带有所述用户账号、所述令牌信息、所述地址信息和所述目标指令的访问请求发送给服务端;以及接收来自服务端的访问响应结果;其中所述访问响应结果由所述服务端对所述令牌信息进行解密和权限验证后得到。2.根据权利要求1所述的方法,其特征在于,所述资源访问信息包括:与所述用户账号关联的用户登录密码和用于访问服务资源的访问秘钥;其中,所述在所述调用时机,根据从服务端预先获取的资源访问信息和加密算法,生成与所述调用时机相关的令牌信息,包括:将所述调用时机对应的时间戳信息与所述用户登录密码进行合并,得到字符串;以及根据所述加密算法,将所述访问秘钥作为加密秘钥,对所述字符串进行加密计算,得到令牌信息。3.根据权利要求1或2所述的方法,其特征在于,还包括:获取资源访问信息和加密算法;其中,所述获取资源访问信息和加密算法,包括:在满足访问特定服务资源的授权条件的情况下,向服务端发起获取所述特定服务资源对应的资源访问信息和加密算法的获取请求;以及接收服务端发送的数据包,所述数据包中携带有所述资源访问信息和所述加密算法。4.根据权利要求3所述的方法,其特征在于,所述数据包为通过约定秘钥进行加密后的密文形式,所述约定秘钥是在信息收发双方之间约定的对外保密内容;其中,所述获取资源访问信息和加密算法,还包括:基于所述约定秘钥,对接收到的密文形式的数据包进行解密后,得到明文形式的资源访问信息和加密算法。5.根据权利要求1所述的方法,其特征在于,所述访问请求包括超文本传输协议中的post请求方式,所述用户账号和所述令牌信息均位于cookie中。6.一种数据处理的方法,其特征在于,包括:接收需求端发送的访问请求,所述访问请求携带的信息包括:用户账号、与调用时机相关的令牌信息、请求调用的目标服务资源的地址信息和所述目标服务资源需要执行的目标指令;其中,所述令牌信息是所述需求端在调用所述目标服务资源时,根据从服务端预先获取的资源访问信息和加密算法生成的;其中所述资源访问信息与所述用户账号对服务资源的访问权限相关联;对所述令牌信息进行解密和权限验证,得到访问响应结果;以及将所述访问响应结果发送给需求端。
7.根据权利要求6所述的方法,其特征在于,所述对所述令牌信息进行解密和权限验证,得到访问响应结果,包括:对所述令牌信息进行解密,得到解密后的资源访问信息;根据所述解密后的资源访问信息,对所述用户账号对应的用户进行身份校验;在所述用户账号的身份校验通过的情况下,根据预先配置的用户账号与服务资源的访问权限之间的关联关系,确定所述用户账号对所述目标服务资源是否具有调用权限;在确定所述用户账号对所述目标服务资源具有调用权限的情况下,根据所述地址信息,将所述目标指令发送给目标服务资源进行数据处理,得到数据处理结果,所述数据处理结果作为访问响应结果。8.根据权利要求7所述的方法,其特征在于,所述对所述令牌信息进行解密和权限验证,得到访问响应结果,还包括:在所述用户账号的身份校验不通过的情况下,或者在确定所述用户账号对所述目标服务资源不具有调用权限的情况下,得到访问失败的访问响应结果。9.根据权利要求7所述的方法,其特征在于,所述对所述令牌信息进行解密,得到解密后的资源访问信息,包括:根据所述用户账号,从数据库查询预先配置的目标资源访问信息,所述目标资源访问信息包括:所述用户账号用于访问授权服务资源的目标访问秘钥;根据与所述加密算法相匹配的解密算法,将查询到的所述目标访问秘钥作为解密秘钥,对所述令牌信息进行解密计算,得到字符串信息;以及对所述字符串信息进行拆分,得到解密后的时间戳信息和用户登录密码。10.根据权利要求9所述的方法,其特征在于,所述目标资源访问信息还包括:与所述用户账号关联的目标用户登录密码;其中,所述根据所述解密后的资源访问信息,对所述用户账号对应的用户进行身份校验,包括:校验解密后的时间戳信息与所述访问请求对应的时间戳信息是否一致;校验解密后的用户登录密码与所述目标用户登录密码是否一致;在校验得到解密后的时间戳信息与所述访问请求对应的时间戳信息一致,且解密后的用户登录密码与所述目标用户登录密码一致的情况下,确定所述用户账号对应的用户账号的身份校验通过;在校验得到解密后的时间戳信息与所述访问请求对应的时间戳信息不一致,和/或,解密后的用户登录密码与所述目标用户登录密码不一致的情况下,确定所述用户账号对应的用户账号的身份校验不通过。11.一种资源访问的装置,其特征在于,包括:指令接收模块,用于接收用户在开发或使用应用过程中的操作指令;资源调用确定模块,用于确定执行所述操作指令所需要调用的目标服务资源的地址信息和调用信息,所述调用信息包括:调用时机、所述目标服务资源需要执行的目标指令;令牌生成模块,用于在所述调用时机,根据从服务端预先获取的资源访问信息和加密算法,生成与所述调用时机相关的令牌信息;其中所述资源访问信息与所述用户的用户账号对服务资源的访问权限相关联;
数据发送模块,用于将携带有所述用户账号、所述令牌信息、所述地址信息和所述目标指令的访问请求发送给服务端;以及数据接收模块,用于接收来自服务端的访问响应结果;其中所述访问响应结果由所述服务端对所述令牌信息进行解密和权限验证后得到。12.一种数据处理的装置,其特征在于,包括:请求接收模块,用于接收需求端发送的访问请求,所述访问请求携带的信息包括:用户账号、与调用时机相关的令牌信息、请求调用的目标服务资源的地址信息和所述目标服务资源需要执行的目标指令;其中,所述令牌信息是所述需求端在调用所述目标服务资源时,根据从服务端预先获取的资源访问信息和加密算法生成的;其中所述资源访问信息与所述用户账号对服务资源的访问权限相关联;数据处理模块,用于对所述令牌信息进行解密和权限验证,得到访问响应结果;以及结果发送模块,用于将所述访问响应结果发送给需求端。13.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器、通信接口和存储器通过通信总线完成相互间的通信;存储器,用于存放计算机程序;处理器,用于执行存储器上所存放的程序时,实现权利要求1-10中任一项所述的方法。14.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-10中任一项所述的方法。
技术总结
本公开涉及一种资源访问和数据处理的方法、装置、电子设备及介质,资源访问的方法包括:接收用户在开发或使用应用过程中的操作指令;确定执行该操作指令所需要调用的目标服务资源的地址信息和调用信息,该调用信息包括:调用时机、目标服务资源需要执行的目标指令;在该调用时机,根据从服务端预先获取的资源访问信息和加密算法,生成与该调用时机相关的令牌信息;其中该资源访问信息与用户的用户账号对服务资源的访问权限相关联;将携带有该用户账号、该令牌信息、该地址信息和该目标指令的访问请求发送给服务端;以及接收来自服务端的访问响应结果;其中访问响应结果由服务端对该令牌信息进行解密和权限验证后得到。令牌信息进行解密和权限验证后得到。令牌信息进行解密和权限验证后得到。
技术研发人员:张立 刘启荣 张成远 高新刚
受保护的技术使用者:京东科技信息技术有限公司
技术研发日:2022.02.11
技术公布日:2022/5/25
转载请注明原文地址:https://tc.8miu.com/read-18972.html