小程序的鉴权方法、服务器及计算机可读存储介质与流程

文档序号:17222888发布日期:2019-03-27 12:11阅读:170来源:国知局
小程序的鉴权方法、服务器及计算机可读存储介质与流程

本发明属于计算机技术领域,尤其涉及一种小程序的鉴权方法、服务器及计算机可读存储介质。



背景技术:

传统的互联网的网页鉴权过程,一般通过采用session(时域)对象存储特定用户会话所需的属性及配置信息的方式来实现鉴权。而小程序的使用过程也需要进行鉴权,由于小程序是通过在第三方应用的页面中实现登录,而在小程序中没有cookie(储存在用户本地终端上的数据)的概念,因此无法使用session对象存储特定用户会话所需的属性及配置信息的传统鉴权方式来实现鉴权。因此在小程序的鉴权过程中,一般会通过使用账号密码登陆或者手机动态码验证等登陆方式来进行鉴权,但是这些登陆方式的流程较为繁琐,用户需要花费一定时间进行处理,从而造成用户体验不佳。



技术实现要素:

有鉴于此,本发明实施例提供了一种小程序的鉴权方法、服务器及计算机可读存储介质,以解决现有技术中小程序的登陆方式的流程较为繁琐,用户需要花费一定时间进行处理的问题。

本发明实施例的第一方面提供了一种方法,包括:

若接收到来自客户端的用户授权认证请求,则获取所述客户端从应用平台接收并转发的加密字符串,以及从所述应用平台获取密钥,其中所述加密字符串由所述应用平台对当前登录所述应用平台的用户的用户信息进行加密得到,所述客户端为小程序的客户端,所述小程序依托所述应用平台作为载体;

根据所述密钥对所述加密字符串进行解密得到所述用户信息;

若在预存的用户信息库中查询到所述用户信息,则生成授权成功的通知,且接收所述应用平台的所述用户的用户标识,并根据所述用户的用户标识生成鉴权信息并存储至数据库,并将所述鉴权信息以及所述授权成功的通知发送至所述客户端。

本发明实施例的第二方面提供了一种服务器,所述服务器包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如下步骤:

若接收到来自客户端的用户授权认证请求,则获取所述客户端从应用平台接收并转发的加密字符串,以及从所述应用平台获取密钥,其中所述加密字符串由所述应用平台对当前登录所述应用平台的用户的用户信息进行加密得到,所述客户端为小程序的客户端,所述小程序依托所述应用平台作为载体;

根据所述密钥对所述加密字符串进行解密得到所述用户信息;

若在预存的用户信息库中查询到所述用户信息,则生成授权成功的通知,且接收所述应用平台的所述用户的用户标识,并根据所述用户的用户标识生成鉴权信息并存储至数据库,并将所述鉴权信息以及所述授权成功的通知发送至所述客户端。

本发明实施例的第三方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现上述方法的步骤。

实施本发明实施例提供的一种小程序的鉴权方法、服务器及计算机可读存储介质具有以下有益效果:

本发明实施例,用户通过在客户端登陆界面的虚拟按键一键触发用户授权认证请求,获取所述客户端从应用平台接收并转发的加密字符串,以及从所述应用平台获取密钥,根据所述密钥对所述加密字符串进行解密得到所述用户信息,服务器在预存的用户信息库中存储所有具有登陆权限的用户信息,服务器判断在预存的用户信息库中是否查询到所述用户信息,当服务器在预存的用户信息库中查询到所述用户信息,则判定该用户具备权限,从而使得用户在小程序客户端进行登录时,在保证鉴权信息真实有效的同时,可以实现一键操作,简化登录流程,节省用户在登陆过程所花费的时间,提高用户体验。

附图说明

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

图1是本发明第一实施例提供的一种小程序的鉴权方法的实现流程示意图;

图2是本发明第二实施例提供的一种小程序的鉴权方法的实现流程示意图;

图3是本发明第三实施例提供的一种小程序的鉴权方法的实现流程示意图;

图4是本发明第四实施例提供的一种小程序的鉴权方法的实现流程示意图;

图5是本发明第五实施例提供的一种服务器的示意图;

图6是本发明第六实施例提供的一种服务器的示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

本发明实施例中的小程序是指一种基于特定编程语言开发完成,无需下载和安装,就可以使用的移动端应用。小程序无需手动在移动端的操作系统中安装,通常需要依托于应用平台作为载体进行使用,该应用平台可以为即时通讯应用。通常开发人员通过小程序开发平台完成小程序的开发后,将开发完成的小程序发布至该应用平台的服务端,与该应用平台实现对接。

参阅图1,图1为本发明第一实施例中的小程序的鉴权方法的实现流程示意图。本实施例中的小程序的鉴权方法的执行主体为服务器。如图所述的小程序的鉴权方法可以包括如下步骤:

s101,若接收到来自客户端的用户授权认证请求,则获取所述客户端从应用平台接收并转发的加密字符串,以及从所述应用平台获取密钥,其中所述加密字符串由所述应用平台对当前登录所述应用平台的用户的用户信息进行加密得到,所述客户端为小程序的客户端,所述小程序依托所述应用平台作为载体。

用户在使用移动端的小程序时,需要先进入移动端上搭载该小程序的应用平台中,在应用平台中找到该小程序的客户端登陆入口。当用户在小程序的客户端登陆时,小程序对应的服务器需要对该用户的用户信息进行鉴权,以确定该用户是否为具有权限的用户。用户具体可以通过在客户端登陆界面的虚拟按键一键触发用户授权认证请求,客户端将用户授权认证请求发送至服务器。

若服务器接收到来自客户端的用户授权认证请求,则获取客户端从小程序所依托的应用平台中接收并转发的加密字符串,以及从小程序所依托的应用平台获取密钥。需要说明的是,客户端直接通过api接口从与小程序所依托的应用平台获取加密字符串,该api接口为小程序所依托的应用平台给小程序的客户端开放的数据共享接口,用于小程序的客户端从应用平台获取加密字符串信息;服务器则通过api接口从与小程序所依托的应用平台获取密钥,该api接口为小程序所依托的应用平台给小程序的服务器开放的数据共享接口,用于小程序的服务器从应用平台获取密钥信息;由于对应的加密字符串以及密钥并未经过任何公共网络,因此很难进行篡改,由此可以保证服务器获取的加密字符串以及密钥的安全性。加密字符串由小程序所依托的应用平台对当前登录应用平台的用户的用户信息进行加密得到,用户信息至少包括手机号信息,当然用户信息还包括昵称、性别以及地域等信息;服务器从应用平台获取的密钥为应用平台对当前登录应用平台的用户的用户信息进行加密得到加密字符串的加密密钥。

s102,根据所述密钥对所述加密字符串进行解密得到所述用户信息。

在s102中,服务器通过从应用平台获取的密钥对加密字符串进行解密得到该用户的用户信息,即得到对应的手机号信息,当然得到的用户信息还包括昵称、性别以及地域等信息。

s103,若在预存的用户信息库中查询到所述用户信息,则生成授权成功的通知,且接收所述应用平台的所述用户的用户标识,并根据所述用户的用户标识生成鉴权信息并存储至数据库,并将所述鉴权信息以及所述授权成功的通知发送至所述客户端。

在s103中,服务器在预存的用户信息库中存储所有具有登陆权限的用户信息,服务器判断在预存的用户信息库中是否查询到上述用户信息,当服务器在预存的用户信息库中查询到上述用户信息,则判定该用户具备权限,当服务器在预存的用户信息库中未查询到上述用户信息,则判定该用户不具备权限。需要说明的是,服务器可以通过用户信息库中是否查询到对应的手机号信息,当服务器查询到对应的手机号信息,即可判定该用户具备权限,否则,则判定该用户不具备权限。

服务器在判定该用户具备权限时,生成授权成功的通知,且通过api接口从应用平台接收该用户的用户标识,并根据该用户的用户标识生成鉴权信息,并将鉴权信息存储至数据库,该鉴权信息用于保证服务器与客户端之间的通信安全。上述用户标识为应用平台的用户在使用小程序时的openid,即用户标识为应用平台的用户在使用该小程序时的唯一标识信息。其中,上述鉴权信息包括令牌、refreshtoken参数、token_expires_in参数以及api密钥等信息。上述令牌信息为包括用户标识、时间戳以及签名,其中,签名是根据令牌中的用户标识以及时间戳经过哈希算法压缩得到具有一定长度的字符串。refreshtoken参数作为一个加密字符串,用于对令牌进行刷新,api密钥作为服务器与客户端之间进行请求或响应的密钥信息。token_expires_in参数作为一种用于标示令牌的超时时间的参数,其中token_expires_in参数一般默认设置的超时时间为10分钟,每隔10分钟,对应的令牌就会失效,此时需要token_expires_in参数通过refreshtoken参数来进行请求,从而刷新一次令牌所对应的参数值,其中超时时间可以由管理人员在服务器的配置中根据需求进行修改。

服务器将鉴权信息以及授权成功的通知发送至客户端,客户端与服务器之间的请求和响应都将通过鉴权信息进行加密,以保证数据传输的安全性;此外客户端根据授权成功的通知在显示界面展示小程序登陆成功的通知,以使得用户能及时查看到小程序登陆成功的通知。

以上可以看出,用户通过在客户端登陆界面的虚拟按键一键触发用户授权认证请求,服务器接收客户端直接通过api接口从与小程序所依托的应用平台获取加密字符串,以及通过api接口从与小程序所依托的应用平台获取密钥,由于对应的加密字符串以及密钥均是直接通过小程序所依托的应用平台所提供的接口来获取,并未经过任何公共网络,因此很难进行篡改,由此可以保证服务器获取的加密字符串以及密钥的安全性;服务器在预存的用户信息库中存储所有具有登陆权限的用户信息,服务器判断在预存的用户信息库中是否查询到上述用户信息,当服务器在预存的用户信息库中查询到上述用户信息,则判定该用户具备权限,从而使得用户在小程序客户端进行登录时,在保证鉴权信息真实有效的同时,可以实现一键操作,简化登录流程,节省用户在登陆过程所花费的时间,提高用户体验。

参阅图2,图2是本发明第二实施例提供的小程序的鉴权方法的实现流程示意图。本实施例与第一实施例的区别在于,本实施例中在s202之后还包括s204。其中s201~s203与第一实施例中的s101~s103相同,具体请参阅第一实施例中s101~s103的相关描述,此处不赘述。s204具体如下:

s204,若在预存的用户信息库中未查询到所述用户信息,则生成授权失败的通知,并将所述授权失败的通知发送至所述客户端。

服务器在预存的用户信息库中存储所有具有登陆权限的用户信息,服务器判断在预存的用户信息库中是否查询到上述用户信息,当服务器在预存的用户信息库中查询到上述用户信息,则服务器判定该用户具备权限,而当在预存的用户信息库中未查询到所述用户信息,则服务器判定该用户不具备权限。需要说明的是,服务器具体通过是否在用户信息库中查询到对应的手机号信息来判断用户具有权限的,当服务器查询到对应的手机号信息,即可判定该用户具备权限,否则,则服务器判定该用户不具备权限。当服务器判定该用户不具备权限时,会生成授权失败的通知,并将授权失败的通知发送至客户端,客户端根据授权失败的通知在显示界面展示小程序登陆失败的通知,以使得用户能及时查看到小程序登陆失败的通知。

参阅图3,图3是本发明第三实施例提供的小程序的鉴权方法的实现流程示意图。本实施例与第一实施例的区别在于,本实施例中在s303之后还包括s304~s307,s301~s303与第一实施例中的步骤s101~s103相同,具体请参阅第一实施例中s101~s103的相关描述,此处不赘述。s304~s307具体如下:

s304,接收所述客户端的数据请求,所述数据请求包括令牌、请求参数、随机数、时间戳以及请求密文,所述请求密文为所述客户端通过所述api密钥对所述令牌、所述请求参数、所述随机数以及所述时间戳进行加密生成。

服务器中存储的鉴权信息至少包括api密钥,当用户在客户端通过身份验证之后,在客户端执行相应的功能时,将通过客户端发起对应的数据请求至服务器,其中该数据请求包括令牌、请求参数、随机数、时间戳以及请求密文,请求密文具体为客户端通过令牌、请求参数、随机数以及时间戳进行加密生成,其中加密的密钥为api密钥。服务器接收客户端的数据请求,服务器会先对客户端的数据请求进行处理,判断是否进行放行该数据请求,并根据该数据请求执行相应的响应。

s305,根据所述数据请求中的令牌在所述数据库查询得到所述api密钥,根据所述api密钥对所述令牌、所述请求参数、所述随机数以及所述时间戳进行加密生成比对密文。

服务器在接收到数据请求中的令牌后,将根据令牌在存储鉴权信息的数据中查询到对应的api密钥,并以api密钥为盐值对令牌、请求参数、随机数以及时间戳进行加密生成与请求密文进行比对校验的比对密文,为了保证数据的安全性,通过加密生成的比对密文与请求密文进行比对校验,由于比对密文和请求密文都是根据令牌、请求参数、随机数以及时间戳以api密钥为盐值进行加密生成,当客户端发送至服务器的数据请求被不法分子恶意拦截并篡改请求参数中的信息,通过将比对密文与请求密文进行比对校验即可及时发现该情况,避免了信息的泄露,从而保证了服务器和客户端之间进行数据传输的安全性。

s306,若所述比对密文与所述请求密文一致,则放行所述数据请求。

s307,若所述比对密文与所述请求密文不一致,则拦截所述数据请求。

服务器将比对密文与请求密文进行比较,若比对密文与请求密文一致,则数据请求中的请求参数没有被篡改过,说明该数据请求为安全的,因此服务器将放行该数据请求,并根据该数据请求执行相应的响应。若比对密文与请求密文不一致,则数据请求中的请求参数被篡改过,说明该数据请求为不安全的,因此服务器将拦截该数据请求。

进一步地,所述比对密文的生成方法包括:

以所述api密钥为盐值对所述令牌、所述请求参数、所述随机数以及所述时间戳进行消息摘要算法加密生成所述比对密文。

由于客户端发送至服务器的数据请求包括令牌、请求参数、随机数、时间戳以及请求密文,该请求密文为以api密钥为盐值进行md5消息摘要算法加密生成。服务器在对数据请求的安全性进行校验时,服务器以api密钥为盐值进行md5消息摘要算法加密生成比对密文,根据比对密文与请求密文进行比对校验,并根据比对密文与请求密文的比对结果对数据请求的安全性进行验证,从而可以减小数据泄露的风险。

服务器与客户端之间进行请求和响应时,将通过加密生成的比对密文与请求密文进行比对校验,由于比对密文和请求密文都是根据令牌、请求参数、随机数以及时间戳以api密钥为盐值进行加密生成,当客户端发送至服务器的数据请求被不法分子恶意拦截并篡改请求参数中的信息,通过将比对密文与请求密文进行比对校验即可及时发现该情况,避免了信息的泄露,从而保证了服务器和客户端之间进行数据传输的安全性。

参阅图4,图4是本发明第四实施例提供的小程序的鉴权方法的实现流程示意图。本实施例与第三实施例的区别在于,本实施例中在s405之前还包括s4051~s4052,s4051之后还包括s4053~s4054,s401~s407与第三实施例中的s301~s307相同,具体请参阅第三实施例中s301~s307的相关描述,此处不赘述。s4051~s4054具体如下:

s4051,判断在预设时间内是否存在相同的所述数据请求。

服务器在对数据请求中的比对密文进行比较校验之前,会先判断在预设时间内是否存在相同的数据请求,该相同的数据请求指的是包含相同请求参数的数据请求,其中预设时间为服务器预设的时间间隔,例如十分钟。由于对于正常的数据请求,在较短时间内,客户端不会发送多个数据请求,当在较短时间内,服务器在接收到客户端发送的多个相同的数据请求,则该数据请求可能是恶意的请求,需要采取拦截措施。

s4052,若在预设时间内不存在相同的所述数据请求,则判定所述数据请求不是重放攻击。

当预设时间内不存在相同的数据请求,则服务器判定所述数据请求不是重放攻击,服务器将对数据请求中的比对密文进行比较校验。

进一步地,所述s4051之后,还包括:

s4053,若在预设时间内存在相同的所述数据请求,则判定所述数据请求为重放攻击,并拒绝所述数据请求;

s4054,将所述数据请求所对应的客户端的互联网协议地址加入限制访问名单。

若在预设时间内存在相同的数据请求,则说明该数据请求为重放攻击,可能是恶意的数据请求,则将直接拒绝数据请求,服务器将该数据请求所对应的客户端的ip互联网协议地址加入限制访问名单。

参阅图5,图5是本发明第五实施例提供的一种服务器的示意图。服务器包括的各单元用于执行图1~图4对应的实施例中的各步骤。具体请参阅图1~图4各自对应的实施例中的相关描述。为了便于说明,仅示出了与本实施例相关的部分。参见图5,服务器5包括:

获取单元101,用于若接收到来自客户端的用户授权认证请求,则获取所述客户端从应用平台接收并转发的加密字符串,以及从所述应用平台获取密钥,其中所述加密字符串由所述应用平台对当前登录所述应用平台的用户的用户信息进行加密得到,所述客户端为小程序的客户端,所述小程序依托所述应用平台作为载体。

解密单元102,用于根据所述密钥对所述加密字符串进行解密得到所述用户信息。

第一生成单元103,用于若在预存的用户信息库中查询到所述用户信息,则生成授权成功的通知,且接收所述应用平台的所述用户的用户标识,并根据所述用户的用户标识生成鉴权信息并存储至数据库,并将所述鉴权信息以及所述授权成功的通知发送至所述客户端。

可选地,所述服务器还包括:

第二生成单元,用于若在预存的用户信息库中未查询到所述用户信息,则生成授权失败的通知,并将所述授权失败的通知发送至所述客户端。

可选地,所述鉴权信息至少包括api密钥,所述服务器还包括:

接收单元,用于接收所述客户端的数据请求,所述数据请求包括令牌、请求参数、随机数、时间戳以及请求密文,所述请求密文为所述客户端通过所述api密钥对所述令牌、所述请求参数、所述随机数以及所述时间戳进行加密生成。

加密单元,用于根据所述数据请求中的令牌在所述数据库查询得到所述api密钥,根据所述api密钥对所述令牌、所述请求参数、所述随机数以及所述时间戳进行加密生成比对密文。

执行单元,用于若所述比对密文与所述请求密文一致,则放行所述数据请求;若所述比对密文与所述请求密文不一致,则拦截所述数据请求。

可选地,所述服务器还包括:

判断单元,用于判断在预设时间内是否存在相同的所述数据请求;

第一判定单元,用于若在预设时间内不存在相同的所述数据请求,则判定所述数据请求不是重放攻击。

可选地,所述服务器还包括:

第二判定单元,用于若在预设时间内存在相同的所述数据请求,则判定所述数据请求为重放攻击,并拒绝所述数据请求;

限制单元,用于将所述请求所对应的客户端的互联网协议地址加入限制访问名单。

可选地,所述比对密文的生成方法,包括:

以所述api密钥为盐值对所述令牌、所述请求参数、所述随机数以及所述时间戳进行消息摘要算法加密生成所述比对密文。

图6是本发明第六实施例提供的一种服务器的示意图。如图6所示,该实施例的服务器6包括:处理器60、存储器61以及存储在所述存储器61中并可在所述处理器60上运行的计算机程序62,例如服务器的控制程序。所述处理器60执行所述计算机程序62时实现上述各个服务器的评估方法实施例中的步骤,例如图1所示的s101至s103。或者,所述处理器60执行所述计算机程序62时实现上述各装置实施例中各单元的功能,例如图3所示单元103至103功能。

示例性的,所述计算机程序62可以被分割成一个或多个单元,所述一个或者多个单元被存储在所述存储器61中,并由所述处理器60执行,以完成本发明。所述一个或多个单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序62在所述服务器6中的执行过程。例如,所述计算机程序62可以被分割成获取单元、解密单元以及第一生成单元,各单元具体功能如上所述。

所述服务器可包括,但不仅限于,处理器60、存储器61。本领域技术人员可以理解,图6仅仅是服务器6的示例,并不构成对服务器6的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述服务器还可以包括输入输出服务器、网络接入服务器、总线等。

所称处理器60可以是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

所述存储器61可以是所述服务器6的内部存储单元,例如服务器6的硬盘或内存。所述存储器61也可以是所述服务器6的外部存储服务器,例如所述服务器6上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。进一步地,所述存储器61还可以既包括所述服务器6的内部存储单元也包括外部存储服务器。所述存储器61用于存储所述计算机程序以及所述服务器所需的其他程序和数据。所述存储器61还可以用于暂时地存储已经输出或者将要输出的数据。

以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1