一种平台授权方法、平台服务端及应用客户端和系统
2020-01-10

一种平台授权方法、平台服务端及应用客户端和系统

本发明实施例公开了一种平台授权方法、平台服务端及应用客户端和系统,该方法包括:平台服务端接收应用客户端通过第一路径发送的第一验证消息并获取所述应用客户端的客户端标识;所述平台服务端对所接收的第一验证消息与所述客户端标识之间的映射关系进行记录;所述平台服务端接收所述应用客户端通过第二路径发送的第二验证消息;如果所述平台服务端验证所述第一验证消息和第二验证消息匹配,则根据所述第一验证消息从所记录的所述映射关系中提取所述客户端标识,并根据所述客户端标识生成授权访问令牌,发送给所述应用客户端和/或应用服务端。本发明实施例的技术方案能使得用户对授权过程无感知,并能进一步提高授权的安全性。

若为第一种情况,则应用服务端接收到应用客户端发送的随机字符串以后,还需要查找该应用客户端在平台方注册时的身份认证信息,以将包括所述随机字符串和身份认证信息的第二验证消息发送给所述平台服务端。

现有技术中,用户给应用客户端授权前需要先基于用户的已有账户登录该平台,否则平台无法知道是哪个用户要为对应的应用客户端授权,而为了保证安全,一般都需要应用客户端提供网络视图(WebView)或外部浏览器来加载对应平台所提供的登录授权页面,用户在该登录授权页面进行登录授权,以便应用客户端不能直接接触到用户的账号、密码等敏感信息。但这样的流程体验在很多时候是很不友好的:

应用客户端通过第一路径向平台服务端发送第一验证消息;

实施例二

图1是本发明实施例一所述的平台服务端的平台授权方法的流程图;

所述客户端标识为代表应用客户端,并能够用于查找对应的用户账户信息的标识,优选地,所述客户端标识为所述应用客户端所在终端的终端标识。

801、应用客户端向平台服务端发送内含随机字符串的第一验证消息。

第二、由于web页是由开放平台端统一提供的,第三方应用一般是无法对该页面的风格、布局、内容等进行灵活自定义的,很多时候,这个页面的风格会与应用客户端自身的风格出入很大,使得第三方应用难以接受,尤其是在第三方游戏应用中;

一种平台授权方法、平台服务端及应用客户端和系统

本发明实施例公开了一种平台授权方法、平台服务端及应用客户端和系统,方法包括:接收应用客户端通过第一路径发送的第一验证消息并获取应用客户端所在终端的终端标识;记录所接收的随机字符串与终端标识之间的映射关系;接收应用客户端通过第二路径发送的第二验证消息;根据所接收的身份标识从数据库中读取注册过程中提交的身份认证信息,并对身份加密串进行解密和验证,若一致则根据随机字符串从所记录的所述映射关系中提取对应的终端标识,并根据终端标识获取对应的用户账号信息;根据用户账号信息和身份认证信息生成授权访问令牌,发送给应用客户端。本发明实施例的技术方案能使得用户对授权过程无感知,并能进一步提高授权的安全性。

此后,平台服务端接收到请求后,对应用客户端身份验证信息进行解密,得到所述网络时间戳、应用客户端包名和包签名等信息,然后判断当前系统时间戳与所述网络时间戳的差值是否在预设阀值内,若不在反之内,则认为是一个重放攻击请求,直接返回相应错误信息即可,否则继续下一步骤。

应用客户端或应用服务器在平台服务端上注册的过程中,平台服务端会为各应用客户端或应用服务器分配一个身份标识,用于对各应用客户端或应用服务器进行唯一标识,即该身份标识和对应的身份认证信息可以对应于一个应用客户端,也可以是对应于一类应用服务的所有应用客户端。同时,为了安全起见,在注册过程中,各应用客户端或应用服务器还会向平台服务端提交身份认证信息(例如应用密钥),以进行身份认证。在平台服务端会在数据库中对所述身份标识和所述身份认证信息之间的映射关系进行记录,用于关联查找。各应用客户端或应用服务器在向平台服务端发起访问请求时,需要发送身份标识和身份认证信息用以进行身份区别和身份认证,例如将身份认证信息用作包名和包签名。进一步地,所述第二验证消息还可包括所述应用客户端期望获取的数据访问权限列表。

S610、应用客户端接收所述平台服务端发送的授权访问令牌。

504、平台服务端向应用客户端返回所生成的授权访问令牌。

图3是本发明实施例三所述的平台服务端的结构框图,如图3所示,本实施例所述的平台服务端包括:

应用客户端接收所述平台服务端发送的授权访问令牌。

背景技术

下面结合附图并通过具体实施方式来进一步说明本发明的技术方案。

图4是本发明实施例四所述的应用客户端的结构框图;

进一步地,所述终端的标识为手机号。

即通过互联网发送验证信息。应用客户端在短信发送成功后,调用平台方提供的软件开发工具包SDK(SoftwareDevelopmentKit,软件开发工具包)包提供的接口来获取当前应用客户端的身份验证信息,所述身份认证信息是根据应用客户端的包名、包签名、当前网络时间戳、预设的固定密钥等信息进行对称加密生成的加密串,为了防止具体加密算法被第三方获取,从而影响本技术方案的安全性,整个签名算法(包括应用客户端包名、包签名、预设的密钥等数据的获取)都通过JNI(JavaNativeInterfaceJAVA本地调用)技术由C/C++代码层实现;

所述平台服务端对所接收的随机字符串与所述终端标识之间的映射关系进行记录;

应用客户端通过第一路径向平台服务端发送第一验证消息,所述第一验证消息包括随机字符串;

一种平台授权方法、平台服务端及应用客户端和系统

本发明实施例公开了一种平台授权方法、平台服务端及应用客户端和系统,方法包括:接收应用客户端通过第一路径发送的第一验证消息并获取终端标识;记录所接收的随机字符串与标识之间的映射关系;接收应用客户端通过第二路径发送的第二验证消息;根据身份标识从数据库中读取注册过程中提交的身份认证信息,并对所提取的身份认证信息进行签名;如果验证所生成的签名值与所接收的签名值一致,则根据随机字符串从所记录的映射关系中提取对应的终端标识,并根据终端标识获取对应的用户账号信息;根据用户账号信息和身份认证信息生成授权访问令牌,发送给应用客户端。本发明实施例的技术方案能使得用户对授权过程无感知,并能进一步提高授权的安全性。

签名单元402,用于通过预设签名算法对身份认证信息进行签名生成签名值;

账号信息获取单元,用于如果验证所生成的签名值与所接收的签名值一致,则根据所述随机字符串从所记录的所述映射关系中提取对应的终端标识,并根据所述终端标识获取对应的用户账号信息;

本发明实施例提出的技术方案通过平台服务端分别通过两条路径从应用客户端发送包括随机字符串的第一验证消息,包括所述随机字符串、签名值和身份标识的第二验证消息,如果所述平台服务端验证根据所接收的签名值所生成的签名值与所接收的签名值一致,则根据所述随机字符串获取对应的用户账号信息,并根据所述用户账号信息和所述身份认证信息生成授权访问令牌,发送给所述应用客户端,能使得用户对授权过程无感知,并能进一步提高授权的安全性。

S105、如果所述平台服务端验证所生成的签名值与所接收的签名值一致,则根据所述随机字符串从所记录的所述映射关系中提取对应的终端标识,并根据所述终端标识获取对应的用户账号信息。

背景技术

S105、如果所述平台服务端验证所生成的签名值与所接收的签名值一致,则根据所述随机字符串从所记录的所述映射关系中提取对应的终端标识,并根据所述终端标识获取对应的用户账号信息。

第六方面,本发明实施例还提供了一种平台授权系统,包括:本发明任意实施例所提供的平台服务端和本发明任意实施例所提供的应用客户端。

授权单元,用于根据所述用户账号信息和所述身份认证信息生成授权访问令牌,发送给所述应用客户端。

第三方应用的应用客户端从平台服务端获取到的授权访问令牌,即可通过所述授权访问令牌调用平台方提供的OpenAPI接口来获取相应的云能力和用户数据。

503、平台服务端向应用客户端发送第二验证消息,内含随机字符串,签名值,以及身份标识。

一种平台授权方法、平台服务端及应用客户端和系统

本发明实施例公开了一种平台授权方法、平台服务端及应用客户端和系统,方法包括:接收应用客户端通过第一路径发送的第一验证消息并获取终端标识,所述第一验证消息包括签名值;对所接收的签名值与所述终端标识之间的映射关系进行记录;接收所述应用客户端通过第二路径发送的第二验证消息,所述第二验证消息包括所述签名值和身份标识;根据身份标识从数据库中读取注册过程中提交的身份认证信息,并生成签名值;如果签名值一致,则从所记录的所述映射关系中提取对应的终端标识,用户账号信息,以及根据所述用户账号信息和所述身份认证信息生成授权访问令牌,发送给所述应用客户端。本发明实施例的技术方案能使得用户对授权过程无感知,并能进一步提高授权的安全性。

所述终端标识为用于唯一区分终端的标识码,只要平台服务端接收应用客户端通过第一路径发送的第一验证消息时,能用来识别出是哪一个终端即可,所述终端标识包括但不限于电话号码和终端的设备标识。终端标识通常被用户用来标识自己的账户,能据此获取账户信息。

S106、所述平台服务端根据所述用户账号信息和所述身份认证信息生成授权访问令牌,发送给所述应用客户端。

为了进一步提高安全性能,作为优选,本操作还可增加一个过期判定的操作,以确定是否过期。具体为:平台服务端对接收到的第二验证消息中的网络时间戳进行过期验证,判断当前系统时间戳与所述网络时间戳的差值是否在预设阀值内,若不在预设阀值的范围之内,则认为是一个重放攻击请求,直接返回相应错误信息即可,否则继续下一步骤。

图3是本发明实施例三所述的平台服务端的结构框图,如图3所示,本实施例所述的平台服务端包括:

附图说明

S606、所述平台服务端接收所述应用客户端通过第二路径发送的第二验证消息。S607、所述平台服务端根据所述身份标识从数据库中读取注册过程中提交的身份认证信息,并通过预设签名算法对所提取的身份认证信息进行签名生成签名值。

第五方应用面,本发明实施例还提供了一种平台授权方法,包括:

第六方面,本发明实施例还提供了一种平台授权系统,包括:本发明任意实施例所提供的平台服务端和本发明任意实施例所提供的应用客户端。

图5是本发明实施例五所述的平台授权方法中,应用客户端的平台授权方法中平台服务端与应用客户端的交互示意图,本实施例主要应用在安卓系统的手机应用程序(下称应用客户端)中,基于由平台服务端、应用客户端和短信网关组成的系统。如图5所示,本实施例所述的方法包括:

现有技术中,用户给应用客户端授权前需要先基于用户的已有账户登录该平台,否则平台无法知道是哪个用户要为对应的应用客户端授权,而为了保证安全,一般都需要应用客户端提供网络视图(WebView)或外部浏览器来加载对应平台所提供的登录授权页面,用户在该登录授权页面进行登录授权,以便应用客户端不能直接接触到用户的账号、密码等敏感信息。但这样的流程体验在很多时候是很不友好的:

平台服务端根据所述短信内容串从所述缓存系统中读取出对应的手机号,并根据所述手机号获取对应的用户账号信息(如果不存在所述账号信息,则根据手机号自动注册一个用户账号),然后根据所述用户账号信息、所述应用ID、平台方给所述应用客户端开通的权限信息、以及所述数据访问权限列表等数据生成一个授权访问令牌。

为了保证安全,所述第二路径可基于SSL(SecureSocketsLayer,安全套接层)协议,进一步地,所述第二路径可基于HTTPS(HyperTextTransferProtocoloverSecureSocketLayer,安全超文本传输协议)协议。例如,基于所述第二路径发送的第二验证消息可为基于HTTPS发送的HTTPS请求。为了防止应用客户端利用所述第二路径恶意获取平台方的用户数据,应用客户端需要针对所述第二路径作必要的安全防护以提升其他客户端利用该路径的难度和成本,例如提供套接字SOCKET接口代替HTTP(HypertextTransferProtocol,超文本传输协议)接口,对所述第二验证消息作相应的对称加密或非对称加密,增加防跨站请求伪造攻击处理策略等。

发送所述验证短信至短信网关,以指示所述短信网关将所述验证短信进行协议转换并提取所述验证短信的短信发起方终端标识,生成包含所述签名值的第一验证消息,向所述平台服务端发送。

本发明实施例提出的技术方案通过平台服务端分别通过两条路径从应用客户端发送包括签名值的第一验证消息,包括所述签名值和身份标识的第二验证消息,如果所述平台服务端验证通过预设签名算法对身份认证信息进行签名生成的签名值与所接收的签名值一致,则根据所述签名值获取对应的用户账号信息,并根据所述用户账号信息和所述身份认证信息生成授权访问令牌,发送给所述应用客户端,无需通过网页进行登录,能使得用户对授权过程无感知,并能进一步提高授权的安全性。

第四、当应用客户端同时需要多个开放平台所提供的用户数据和云能力来实现一项功能时,就得想办法引导用户挨个在多个平台上进行登录授权,在每次登录授权都要出一个登录授权界面的情况下,这样的工作基本上无法有效开展的。应用客户端需要的是,在用户不受干扰的情况下,顺畅完成多个平台的授权问题,这样才能获得最大的转化率。