基于OAuth协议的开放平台授权认证系统及方法转让专利

申请号 : CN201611118636.1

文献号 : CN106534175B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李青山褚华马明宇寇苗娟问茜茹

申请人 : 西安电子科技大学

摘要 :

本发明公开了一种基于OAuth协议的开放平台授权认证系统及方法,主要解决现有技术对资源访问令牌的有效时间没有合理的优化和限制,导致资源访问令牌滥用的问题。其系统包括授权客户端和授权服务器,该授权客户端通过其内的各功能模块完成发送授权认证请求、接收资源访问令牌和令牌的有效时间,并根据用户资源获取的次数和时间重置令牌的有效时间;该授权服务器通过其内的各功能模块完成接收并检查授权认证请求、获取未授权访问令牌和令牌有效时间、生成资源访问令牌和令牌有效时间并发送给授权客户端。本发明简化了授权认证过程,提高了资源的安全性,可用于获取开放平台资源时的认证授权过程。

权利要求 :

1.一种基于OAuth协议的开放平台授权认证系统,包括,授权客户端以及授权服务器:所述的授权客户端,用于发送授权认证请求,接收资源访问令牌和令牌的有效时间,并根据用户资源获取的次数和时间重置令牌的有效时间;该授权客户端,包括:令牌缓存检查模块,用于检查授权客户端的缓存中是否有资源访问令牌,如果有,则获取资源访问令牌及其有效时间,并发送给令牌时间检查模块,否则,通知授权认证请求发送模块发送授权认证请求;

令牌时间检查模块,用于检查当前时间是否在资源访问令牌有效时间内,如果是,则通过资源访问令牌直接获取资源,否则,通知授权认证请求发送模块发送授权认证请求;

授权认证请求发送模块,用于向授权服务器发送授权认证请求;

资源访问令牌接收模块,用于接收授权服务器发送来的资源访问令牌和令牌有效时间,并将令牌有效时间发送给令牌有效时间更新模块,如果授权客户端已缓存资源访问令牌,则替换旧的令牌;

令牌有效时间更新模块,用于根据用户资源获取的次数和时间更新资源访问令牌的有效时间;

数据加密模块,用于通过RSA算法对当前时间进行加密,生成一个字符串,并将该字符串发给授权认证请求发送模块,该字符串将作为授权认证请求发送模块向授权服务器发送的授权认证请求中的校验参数;

所述的授权服务器,用于接收并检查授权认证请求,获取未授权访问令牌和令牌有效时间,生成资源访问令牌和令牌有效时间并发送给授权客户端;该授权服务器包括:授权认证请求接收模块,用于接收授权客户端发送来的授权认证请求,检查授权认证请求中应用访问标识与包名是否相对应,并将应用访问标识发送给未授权访问令牌获取模块;

未授权访问令牌获取模块,用于获取与第三方客户端对应的未授权访问令牌和有效时间并发送给资源访问令牌获取模块和未授权访问令牌有效时间更新模块,若数据库中没有与第三方客户端对应的未授权访问令牌或未授权访问令牌已失效时,根据应用访问标识、用户信息重新获取未授权访问令牌,并存储在授权服务器的数据库中;

未授权访问令牌有效时间更新模块,用于根据用户获取资源访问令牌的次数和时间更新未授权访问令牌的有效时间;

资源访问令牌获取模块,用于获取资源访问令牌,并为该令牌设定一个默认的有效时间,若资源访问令牌失效,则在该模块根据未授权访问令牌重新生成资源访问令牌和令牌有效时间,若令牌有效,则发送给资源访问令牌发送模块;

资源访问令牌发送模块,用于向授权客户端发送资源访问令牌和令牌有效时间;

资源访问令牌有效时间更新模块,用于接收授权服务器发送来的资源访问令牌有效时间,替换数据库中旧的资源访问令牌有效时间;

客户端注册模块,用于注册第三方客户端,注册后会为第三方客户端生成应用访问标识、未授权访问令牌以及令牌有效时间,并存储在授权服务器的数据库中;

数据解密模块,用于通过RSA算法对授权认证请求接收模块接收到的授权认证请求中的校验参数进行解密及校验。

2.一种基于OAuth协议的开放平台授权认证方法,其特征在于,包括:

1)授权客户端检查是否有资源访问令牌的缓存且令牌有效,如果授权客户端中有资源访问令牌的缓存且令牌有效,则执行7),否则,执行2);

2)授权客户端向授权服务器发送授权认证请求,该授权认证请求包含应用访问标识、第三方客户端的包名和校验参数;

3)授权服务器检查校验参数是否合格,如果不合格,则拒绝授权认证请求,否则,检查应用访问标识以及包名是否相对应,若是,则进行步骤4),否则,拒绝授权认证请求;

4)授权服务器检查数据库中是否有与第三方客户端对应的未授权访问令牌且未授权访问令牌有效,若是,则获取未授权访问令牌和有效时间,否则,重新申请未授权访问令牌并存储在数据库中;

5)授权服务器通过未授权访问令牌信息获得资源访问令牌,即授权服务器同意用户的授权认证请求,并为该资源访问令牌设置一个默认的有效时间;

6)授权服务器将资源访问令牌和令牌的有效时间发送给授权客户端,授权客户端将资源访问令牌和令牌的有效时间存储在本地;

7)授权客户端根据用户资源获取的次数和时间重置令牌的有效时间,并分别更新授权客户端和授权服务器中存储的资源访问令牌有效时间,授权客户端通过资源访问令牌直接向资源服务器获取资源,完成授权认证。

3.根据权利要求2所述的方法,步骤4)所述的未授权访问令牌和有效时间,是开放平台用户注册第三方客户端时生成,在未授权访问令牌有效情况下,未授权访问令牌的有效时间根据用户获取资源访问令牌的次数和时间进行更新。

说明书 :

基于OAuth协议的开放平台授权认证系统及方法

技术领域

[0001] 本发明属于计算机技术领域,特别涉及一种开放平台授权认证技术,可用于获取开放平台资源时的认证授权过程。

背景技术

[0002] OAuth协议为开放平台中的资源的授权提供了一个开放、安全且简单的标准,它是大多数互联网运营商用来解决开放平台间的用户、第三方客户端和服务提供商之间认证和授权问题的开放协议。在不需要将用户的账号和密码提供给第三方客户端的情况下,就让第三方客户端通过用户授权访问用户在开放平台的资源,简单而便捷地保证了用户信息的安全性和资源的获取。但每一次利用OAuth协议进行资源授权时,都需要重复输入账号和密码,OAuth协议也没有明确的标准来衡量授权码、访问令牌等时间的有效性,导致大量冗余的授权请求,严重影响用户体验和授权流程的便捷性。
[0003] 东软集团股份有限公司申请的专利“基于OAuth技术的系统集成方法和装置”(专利申请号:CN201511024442.0,公开号:CN105657011A)公开了一种基于OAuth技术的系统集成方法和装置,该方法通过提供多个应用的统一登录平台,接收用户输入的统一登录平台对应的账号信息,以及基于OAuth技术获取账号信息对应的每个应用的操作权限,可根据用户的账号信息为用户定制个性化服务,实现局部弹性伸缩部署。该方法存在的不足是:仅仅考虑了用户在多个第三方客户端的操作权限,来达到通过统一登录平台完成授权,并没有考虑每次授权过程中,都需要用户输入授权信息,导致大量重复操作,影响系统使用的便捷性。
[0004] 腾讯科技(北京)有限公司申请的专利“一种基于OAuth协议的授权方法、装置和系统”(专利申请号:CN201410086517.7,公开号:CN104917721A)公开了一种基于OAuth协议的授权方法、装置和系统。该方法以终端为媒介,替代第三方客户端完成向授权服务器获取令牌并转发给第三方客户端的操作,有效地提高了授权过程的流畅性和安全性。该方法存在的不足是:仅考虑利用终端提前获取系统访问令牌节省授权过程,并没有对系统访问令牌的有效时间加以限制,导致资源访问令牌滥用,安全性差。

发明内容

[0005] 本发明的目的在于针对上述已有技术的不足,提供一种基于OAuth协议的开放平台授权认证系统及方法,对资源访问令牌的时间进行优化和限制,避免反复授权认证,节省授权认证时间,提高系统使用的便捷性和授权的安全性。
[0006] 为实现上述目的,本发明基于OAuth协议的开放平台授权认证系统,包括:授权客户端以及授权服务器:
[0007] 所述的授权客户端,用于发送授权认证请求,接收资源访问令牌和令牌的有效时间,并根据用户资源获取的次数和时间重置令牌的有效时间;
[0008] 所述的授权服务器,用于接收并检查授权认证请求,获取未授权访问令牌和令牌有效时间,生成资源访问令牌和令牌有效时间并发送给授权客户端。
[0009] 上述系统,其中授权客户端,包括:
[0010] 令牌缓存检查模块,用于检查授权客户端的缓存中是否有资源访问令牌,如果有,则获取资源访问令牌及其有效时间,并发送给令牌时间检查模块,否则,通知授权认证请求发送模块发送授权认证请求;
[0011] 令牌时间检查模块,用于检查当前时间是否在资源访问令牌有效时间内,如果是,则通过资源访问令牌直接获取资源,否则,通知授权认证请求发送模块发送授权认证请求;
[0012] 授权认证请求发送模块,用于向授权服务器发送授权认证请求;
[0013] 资源访问令牌接收模块,用于接收授权服务器发送来的资源访问令牌和令牌有效时间,并将令牌有效时间发送给令牌有效时间更新模块,如果授权客户端已缓存资源访问令牌,则替换旧的令牌;
[0014] 令牌有效时间更新模块,用于根据用户资源获取的次数和时间更新资源访问令牌的有效时间;
[0015] 数据加密模块,用于通过RSA算法对当前时间进行加密,生成一个字符串,并将该字符串发给授权认证请求发送模块,该字符串将作为授权认证请求发送模块向授权服务器发送的授权认证请求中的校验参数。
[0016] 上述的系统,其中授权服务器包括:
[0017] 授权认证请求接收模块,用于接收授权客户端发送来的授权认证请求,检查授权认证请求中应用访问标识与包名是否相对应,并将应用访问标识发送给未授权访问令牌获取模块;
[0018] 未授权访问令牌获取模块,用于获取与第三方客户端对应的未授权访问令牌和有效时间并发送给资源访问令牌获取模块和未授权访问令牌有效时间更新模块,若数据库中没有与第三方客户端对应的未授权访问令牌或未授权访问令牌已失效时,根据应用访问标识、用户信息重新获取未授权访问令牌,并存储在授权服务器的数据库中;
[0019] 未授权访问令牌有效时间更新模块,用于根据用户获取资源访问令牌的次数和时间更新未授权访问令牌的有效时间;
[0020] 资源访问令牌获取模块,用于获取资源访问令牌,并为该令牌设定一个默认的有效时间,若资源访问令牌失效,则在该模块根据未授权访问令牌重新生成资源访问令牌和令牌有效时间,若令牌有效,则发送给资源访问令牌发送模块;
[0021] 资源访问令牌发送模块,用于向授权客户端发送资源访问令牌和令牌有效时间;
[0022] 资源访问令牌有效时间更新模块,用于接收授权服务器发送来的资源访问令牌有效时间,替换数据库中旧的资源访问令牌有效时间;
[0023] 客户端注册模块,用于注册第三方客户端,注册后会为第三方客户端生成应用访问标识、未授权访问令牌以及令牌有效时间,并存储在授权服务器的数据库中;
[0024] 数据解密模块,用于通过RSA算法对授权认证请求接收模块接收到的授权认证请求中的校验参数进行解密及校验。
[0025] 为实现上述目的,本发明基于OAuth协议的开放平台授权认证方法,包括:
[0026] 1)授权客户端检查是否有资源访问令牌的缓存且令牌有效,如果授权客户端中有资源访问令牌的缓存且令牌有效,则执行7),否则,执行2);
[0027] 2)授权客户端向授权服务器发送授权认证请求,该授权认证请求包含应用访问标识、第三方客户端的包名和校验参数;
[0028] 3)授权服务器检查校验参数是否合格,如果不合格,则拒绝授权认证请求,否则,检查应用访问标识以及包名是否相对应,若是,则进行步骤4),否则,拒绝授权认证请求;
[0029] 4)授权服务器检查数据库中是否有与第三方客户端对应的未授权访问令牌且未授权访问令牌有效,若是,则获取未授权访问令牌和有效时间,否则,重新申请未授权访问令牌并存储在数据库中;
[0030] 5)授权服务器通过未授权访问令牌信息获得资源访问令牌,即授权服务器同意用户的授权认证请求,并为该资源访问令牌设置一个默认的有效时间;
[0031] 6)授权服务器将资源访问令牌和令牌的有效时间发送给授权客户端,授权客户端将资源访问令牌和令牌的有效时间存储在本地;
[0032] 7)授权客户端根据用户资源获取的次数和时间重置令牌的有效时间,并分别更新授权客户端和授权服务器中存储的资源访问令牌有效时间,授权客户端通过资源访问令牌直接向资源服务器获取资源,完成授权认证。
[0033] 本发明与现有的技术相比具有以下优点:
[0034] 第一,本发明通过让授权客户端缓存资源访问令牌,在资源访问令牌的有效时间内,第三方客户端即可直接向服务提供者获取资源,若资源访问令牌失效,则重新进行授权认证,此过程使得本发明避免了反复授权认证,节省了授权认证时间,便捷了用户的授权认证操作,从而提高了系统的易用性和便捷性。
[0035] 第二,本发明采用结合用户资源获取次数和使用时间的方法对未授权访问令牌和资源访问令牌的有效时间进行优化和限制,保证了用户资源的安全性;此外,本发明使用加密算法生成校验参数授权认证请求进行验证,保证了系统和用户信息的安全性。

附图说明

[0036] 图1为本发明基于OAuth协议的开放平台授权认证系统图;
[0037] 图2为本发明基于OAuth协议的开放平台授权认证流程图。

具体实施方式

[0038] 下面结合附图对本发明作进一步的详细描述。
[0039] 参照图1,本发明的系统包括授权客户端和授权服务器。其中,
[0040] 授权客户端,用于向授权服务器发送授权认证请求,接收返回的资源访问令牌和令牌有效时间,在资源访问令牌有效情况下,用户使用资源访问令牌直接获取资源,并根据用户资源获取的次数和时间重置令牌的有效时间。
[0041] 授权服务器,用于接收授权客户端发送的授权认证请求,并获取与该第三方客户端相对应的未授权访问令牌,而后获取资源访问令牌和有效时间并发送给授权客户端。
[0042] 授权客户端包括,令牌缓存检查模块、令牌时间检查模块、授权认证请求发送模块、资源访问令牌接收模块、令牌有效时间更新模块和数据加密模块,各模块的功能如下:
[0043] 令牌缓存检查模块,用于检查授权客户端的缓存中是否有资源访问令牌,如果有,则获取资源访问令牌及其有效时间,并发送给令牌时间检查模块,否则,通知授权认证请求发送模块发送授权认证请求;
[0044] 令牌时间检查模块,用于检查当前时间是否在资源访问令牌有效时间内,如果是,则通过资源访问令牌直接获取资源,否则,通知授权认证请求发送模块发送授权认证请求;
[0045] 授权认证请求发送模块,用于向授权服务器发送授权认证请求。用户访问资源时,该模块向授权服务器发送授权认证请求。其中授权认证请求包含用户访问标识、第三方客户端的包名和校验参数,用户访问标识由开放平台用户在授权服务器的客户端注册模块获得,校验参数通过数据加密模块获得;
[0046] 资源访问令牌接收模块,用于接收授权服务器发送来的资源访问令牌和令牌有效时间,并将令牌有效时间发送给令牌有效时间更新模块,如果该模块已缓存资源访问令牌,则替换旧的令牌;
[0047] 令牌有效时间更新模块,用于根据用户资源获取的次数和时间计算新的资源访问令牌的有效时间,替换旧的令牌有效时间;
[0048] 数据加密模块,用于通过RSA算法对当前时间进行加密,生成一个字符串,并将该字符串发送给授权认证请求发送模块,该字符串将作为授权认证请求发送模块向授权服务器发送的授权认证请求中的校验参数。
[0049] 授权服务器包括,授权认证请求接收模块、未授权访问令牌获取模块、未授权访问令牌有效时间更新模块、资源访问令牌获取模块、资源访问令牌发送模块、资源访问令牌有效时间更新模块、客户端注册模块和数据解密模块,各模块的功能如下:
[0050] 授权认证请求接收模块,用于接收授权客户端发送来的授权认证请求,将该请求中的校验参数发送给数据解密模块进行校验,然后检查授权认证请求中的应用访问标识和第三方客户端的包名是否相对应,若对应,则将应用访问标识发送给未授权访问令牌获取模块,否则,拒绝授权认证请求;
[0051] 未授权访问令牌获取模块,用于获取与第三方客户端对应的未授权访问令牌和有效时间,并发送给资源访问令牌获取模块和未授权访问令牌有效时间更新模块,该模块在工作时,首先根据应用访问标识检查数据库中是否有与第三方客户端对应的未授权访问令牌,如果没有,则根据应用访问标识、用户信息重新获取未授权访问令牌并存储在数据库中,否则,获取与第三方客户端对应的未授权访问令牌和有效时间;而后检查未授权访问令牌是否无效,如果未授权访问令牌已失效,则根据应用访问标识、用户信息重新获取未授权访问令牌,并存储在数据库中;最后将未授权访问令牌和有效时间发送给资源访问令牌获取模块和未授权访问令牌有效时间更新模块;
[0052] 未授权访问令牌有效时间更新模块,用于根据用户获取资源访问令牌的次数和时间计算新的未授权访问令牌有效时间,替换旧的有效时间;
[0053] 资源访问令牌获取模块,用于获取资源访问令牌,并为这个令牌设定一个默认的有效时间,若资源访问令牌失效,则在该模块根据未授权访问令牌重新生成资源访问令牌和令牌有效时间,否则,将资源访问令牌和令牌有效时间发送给资源访问令牌发送模块;
[0054] 资源访问令牌发送模块,用于向授权客户端发送资源访问令牌和令牌有效时间;
[0055] 资源访问令牌有效时间更新模块,用于接收授权服务器发送来的资源访问令牌有效时间,替换数据库中旧的资源访问令牌有效时间;
[0056] 客户端注册模块,用于注册第三方客户端,该模块在工作时,首先检验用户身份、应用信息,如果信息不合格,则提示修改信息,否则,提示注册成功,然后为第三方客户端生成应用访问标识、未授权访问令牌以及令牌有效时间,并存储在授权服务器的数据库中;
[0057] 数据解密模块,用于通过RSA算法对授权认证请求接收模块接收到的授权认证请求中的校验参数进行解密及校验,如果验证成功,则继续授权认证过程,否则,拒绝授权认证请求。
[0058] 参照图2,本发明的授权认证方法,其步骤如下:
[0059] 步骤1,授权客户端检查自己的缓存。
[0060] 1.1)授权客户端对自己的缓存进行检查,如果缓存中有资源访问令牌的缓存,则执行1.2),否则,执行步骤2。
[0061] 1.2)检查当前时间是否在资源访问令牌有效时间内,如果是,则跳转到步骤8,否则,执行步骤2。
[0062] 步骤2,发送授权认证请求。
[0063] 授权客户端先获取应用访问标识和第三方客户端的包名,并通过RSA算法对时间序列进行加密生成校验参数,而后将包含应用访问标识、第三方客户端的包名和校验参数的授权认证请求发送给授权服务器。
[0064] 步骤3,接收并检验授权认证请求。
[0065] 授权服务器接收授权认证请求后,先将授权认证请求中的校验参数通用RSA算法进行解密,对解密后的时间序列进行校验,如果校验成功,则继续授权认证过程,否则,拒绝授权认证请求;再检查授权认证请求中的应用访问标识和第三方客户端的包名是否相对应,若对应,则执行步骤4,否则,拒绝授权认证请求。
[0066] 步骤4,获取未授权访问令牌和令牌有效时间。
[0067] 4.1)根据应用访问标识检查数据库中是否有与其对应的未授权访问令牌,如果没有,则根据应用访问标识、用户信息重新获取未授权访问令牌并存储在数据库中,否则,获取相应的未授权访问令牌和有效时间Tw;
[0068] 4.2)检查未授权访问令牌是否有效,如果未授权访问令牌已失效,则根据应用访问标识、用户信息重新生成未授权访问令牌,并存储在数据库中,否则,执行步骤5。
[0069] 步骤5,在未授权访问令牌有效的情况下,更新未授权访问令牌的有效时间。
[0070] 5.1)根据用户获取资源访问令牌的次数和时间对未授权访问令牌的有效时间Tw进行更新,得到更新后的未授权访问令牌有效时间Tw′:
[0071]
[0072] 其中,Tc为当前时间,T1,...,Tn为每次获取资源访问令牌的时刻,n为获取资源访问令牌的次数,当n=0时,Tw′=90;当Tw′>120时,Tw′=120;
[0073] 5.2)用新得到的未授权访问令牌有效时间Tw′替换旧的令牌有效时间Tw,即Tw=Tw′,然后替换数据库中的未授权访问令牌有效时间。
[0074] 步骤6,获取资源访问令牌和令牌有效时间。
[0075] 根据未授权访问令牌获取资源访问令牌和令牌有效时间Tm,如果资源访问令牌无效,则根据未授权访问令牌重新生成资源访问令牌和令牌有效时间,否则,将资源访问令牌和令牌有效时间发送给授权客户端。
[0076] 步骤7,授权客户端存储资源访问令牌和令牌有效时间。
[0077] 授权客户端接收授权服务器发来的资源访问令牌和令牌有效时间,检查是否有资源访问令牌的缓存,如果有,则替换旧的令牌,否则,缓存新的资源访问令牌;然后,检查是否有令牌有效时间的缓存,如果有,则替换旧的有效时间,否则,缓存新的有效时间。
[0078] 步骤8,更新资源访问令牌有效时间并获取资源。
[0079] 8.1)根据用户资源获取的次数和时间对资源访问令牌有效时间Tm进行更新,得到更新后的资源访问令牌有效时间Tm′:
[0080]
[0081] 其中,Tc为当前时间,x1,...,xn为在资源访问令牌有效时间内每次获取资源的时刻,n为获取资源的次数,当n=0时,Tm′=20,当Tm′>30时,Tm′=30;
[0082] 8.2)授权客户端向授权服务器发送新的资源访问令牌有效时间Tm′,授权服务器接收新的资源访问令牌有效时间Tm′替换数据库中已有的资源访问令牌有效时间,同时授权服务器将资源访问令牌替换是否成功的结果返回给授权客户端,如果替换成功,则授权客户端用新得到的资源访问令牌有效时间Tm′替换自己缓存中的令牌有效时间Tm,并执行8.3),否则,直接执行8.3);
[0083] 8.3)授权客户端通过资源访问令牌直接向资源服务器获取资源,即完成整个授权认证过程。
[0084] 以上描述仅是本发明的一个具体实例,不构成对本发明的任何限制,显然对于本领域的专业人员来说,在了解了本发明内容和原理后,都可能在不背离本发明原理、结构的情况下,进行形式和细节上的各种修正和改变,但这些基本发明思想的修正和改变仍在本发明的权利要求保护范围之内。