基于OAuth协议的开放平台安全认证方法和系统的制作方法

文档序号:7968807阅读:180来源:国知局
专利名称:基于OAuth协议的开放平台安全认证方法和系统的制作方法
技术领域
本发明涉及一种基于OAuth协议的开放平台安全认证方法和系统,属于网络技术。
背景技术
目前,大多数互联网开放平台采用OAuth协议对第三方应用实现鉴权和认证。 OAuth是一种开放的协议,为桌面应用或者基于B/S模式的WWW应用提供了一种简单、标准的方式访问需要用户授权的API服务,任何第三方应用在访问用户资源时都需要经过用户认证同意后方可访问,这样保证了用户数据的隐私保密。由于其安全、开发简单易行,很多互联网厂商如Google、雅虎、新浪、腾讯在建设开放平台时都提供了 OAuth认证服务。在OAuth协议框架中,主要包括三类角色Service Provider, OAuth服务的服务提供者,由开放平台负责提供服务API供第三方应用进行调用;Consumer,OAuth服务的消费者或使用者,是指调用开放平台服务API的第三方应用;User,用户,使用第三方应用的最终用户。开放平台需要对第三方应用提供完整的应用开发、测试、上线流程和操作界面。 首先,第三方应用的开发者需要在开放平台侧注册一个应用和填写应用信息,注册成功后从开放平台获取该应用的第三方应用标识(对应OAuth协议中的参数名称为oauth_ consumer_key),和对应这个第三方应用标识的应用密钥(对应OAuth协议中的参数名为 oauth_consumer_secret),经过开发、测试、审核后上线发布,就可以提供给用户使用了。第三方应用在访问开放平台的服务API时需要先通过OAuth认证依次向OAuth 的3个服务地址发送认证请求,并在OAuth认证成功后发送调用开放平台的服务API的访问请求,上述步骤都需要按照约定加密算法对每个请求消息进行签名(oauttusignature), 其中开放平台通过对请求消息中携带的第三方应用标识、请求签名等参数来识别第三方应用,从而避免第三方应用身份被伪造而非法调用开放平台的服务API。其中,OAuth协议的认证授权过程及所涉及的3个服务地址如下1、第三方应用向开放平台的Request Token URL地址发送请求,获取未授权的 Request Token ;2、第三方应用向开放平台的her Authorization URL地址发送请求,获取用户授权的 Request Token ;3、第三方应用向开放平台的Access Token URL地址发送请求,用授权的Request Token 换取 Access Token。根据第三方应用向最终用户的服务提供方式,可将应用场景分为以下两种模式1、客户端模式,所述终端多为手机终端或桌面终端。用户在使用这类应用时,在手机、或PC浏览器、或PC客户端上直接运行含有开放平台服务API的第三方应用。这种模式下用户首先需要从开放平台提供的类似应用门户上下载需要的第三方应用程序到本地进行安装配置。其特点是第三方应用同终端直接远程访问开放平台提供的服务API来满足用
4户需求。因此客户端模式下的应用用户量越大,第三方应用程序副本的下载数量和在不同终端上的第三方应用运行实例数量就会越多。2、服务器模式,用户需要通过web浏览器、或定制客户端访问网络服务器上的第三方应用,再通过网络服务器上的第三方应用来访问开放平台服务API。网络侧的第三方应用的服务平台由开发者构架和部署,比如完全基于开放平台来实现应用、或者采用插件方式开发应用嵌入到开发者自己的服务程序中从而实现各类应用的混搭。服务器模式下的第三方应用通常会提供给行业客户或者企业集团客户来使用,因此第三方应用运行实例的数量不受最终用户数量的影响,而是由不同行业客户或者企业集团客户的数量来决定的。标准OAuth认证过程适用于第三方应用作为相同的资源运行实体向用户服务,或者所开发的应用限于用户自己使用,用户采用浏览器或桌面客户端使用第三方应用时,开放平台对用户和第三方应用标识进行认证和鉴权。但随着开放平台应用范围越来越广泛, 特别是在移动互联网环境下,出现了一些新的应用场景需要考虑。开发者基于开放平台所开发的第三方应用程序副本将会被大量下载,并安装在数量规模巨大的硬件终端上为移动互联网提供服务;同时,一个用户会拥有不同类型的硬件终端,如移动终端和个人电脑PC, 用户会从不同的硬件终端上发起对同一个第三方应用服务的访问请求。由于OAuth协议采用相同的第三方应用标识oauth_consumer_key、应用密钥oauth_consumer_secret禾口对应的签名oauttusignature来访问开放平台服务API,这种情况下,存在着大量的第三方应用运行实例采用相同的第三方应用标识oauth_consumer_key和签名oauth_signature访问开放平台,开放平台仅通过第三方应用标识对来自各个终端用户的访问请求进行认证和鉴权很难保证服务的安全性,对不同用户的访问请求也很难区分,存在有一定的安全隐患,如果其中一个被破解,则大量用户使用同类型的第三方应用运行实例就会不攻自破,从而威胁的各方安全。同时,不同类型的开放平台会提供各自有特色类型服务API,典型的如电信能力开放平台中会提供短信服务API、彩信服务API,定位、GIS等位置服务API等。首先,第三方应用所访问的服务API有计费要求;其次,开放平台为吸引更多用户使用基于开放平台的第三方应用,刺激使用量,通常需要灵活的计费策略和对第三方应用、或用户进行准确计费来配合使用,如在平台运营初期在低于某种访问量或访问频率情况下免费提供服务,而高于某个阀值后采用按需计费的方式。对于有计费要求的移动互联网能力开放平台来说,也无法根据第三方应用标识来实现对用户和第三方应用运行实例进行准确计费和访问统计, 存在服务缺陷。因此,如何对存在有多个第三方应用运行实例的业务场景进行精确认证和鉴权? 仍是一个急需要解决的技术难题。

发明内容
有鉴于此,本发明的目的是提供一种基于OAuth协议的开放平台安全认证方法和系统,能对存在有多个第三方应用运行实例的业务场景进行精确认证和鉴权。为了达到上述目的,本发明提供了一种基于OAuth协议的开放平台安全认证方法,所述方法包括有步骤一、开放平台检查第三方应用装置发来的申请未授权的Request Token的访问请求中,是否携带有和开放平台上保存一致的应用实例标识信息,如果没有,则为所述第三方应用装置分配新的应用实例标识,并将所述应用实例标识、生成的未经用户授权的 Request Token与对应的token密钥返回给第三方应用装置;步骤二、第三方应用装置将开放平台返回的应用实例标识更新到本地,并继续携带所述应用实例标识进行后续的OAuth认证请求,开放平台通过第三方应用装置发来的应用实例标识引导用户对资源授权,然后根据应用实例标识和第三方应用标识对第三方应用装置认证通过后,向第三方应用装置下发Access Token与对应的密钥。为了达到上述目的,本发明还提供了一种基于OAuth协议的开放平台安全认证系统,包括有开放平台和若干个第三方应用装置,所述开放平台和第三方应用装置通过网络相连,所述开放平台进一步包括有认证授权单元,用于接收、并检查第三方应用装置发来的申请未授权的Request Token的访问请求中,是否携带有和开放平台上保存一致的应用实例标识信息,如果没有, 则为所述第三方应用装置分配新的应用实例标识,并将所述应用实例标识、生成的未经用户授权的Request Token与对应的token密钥返回给第三方应用装置;然后根据第三方应用装置在后续OAuth认证请求中所携带的应用实例标识,引导用户对资源进行授权,最后根据应用实例标识和第三方应用标识信息对第三方应用装置认证通过后,向第三方应用装置下发Access Token与对应的密钥。与现有技术相比,本发明的有益效果是本发明通过扩展OAuth协议的参数,增加应用实例标识oauth_Consumer_key_id对每个第三方应用装置(即第三方应用运行实例) 进行标识,开放平台认证和鉴权的对象是第三方应用装置,从而实现了对多个第三方应用运行实例的业务场景进行精确认证和鉴权;并且还可以根据第三方应用装置在认证成功后,通过开放平台的服务API访问用户授权的资源时所携带的应用实例标识和第三方应用标识,对第三方应用和最终用户的服务请求进行记录和统计,从而具有灵活计费能力。


图1是本发明一种基于OAuth协议的开放平台安全认证方法的流程图。图2是图1所示方法实施例的信令流程图。图3是本发明一种基于OAuth协议的开放平台安全认证系统的实施例的组成结构示意图。图4是开放平台的组成结构示意图。
具体实施例方式为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步的详细描述。针对上述移动、互联网的典型应用场景,本发明通过扩展OAuth协议的参数应用实例标识oauth_Consumer_key_id,来对每个访问开放平台的第三方应用装置进行标识。如图1所示,本发明一种基于OAuth协议的开放平台安全认证方法,包括有步骤一、当用户向第三方应用装置发出访问开放平台的资源请求时,第三方应用装置检查本地是否已分配有应用实例标识?如果有,则携带所述应用实例标识向开放平台的Request Token URL地址发起申请未授权的Request Token的访问请求;如果没有,则直接向开放平台的Request Token URL地址发起申请未授权的Request Token的访问请求;步骤二、开放平台检查第三方应用装置发来的申请未授权的Request Token的访问请求中,是否携带有和开放平台上保存一致的应用实例标识信息,如果没有,则为所述第三方应用装置分配新的应用实例标识,并将所述应用实例标识、生成的未经用户授权的 Request Token与对应的token密钥返回给第三方应用装置;步骤三、第三方应用装置将开放平台返回的应用实例标识更新到本地,并继续携带所述应用实例标识进行后续的OAuth认证请求,开放平台通过第三方应用装置发来的应用实例标识引导用户对资源授权,然后根据应用实例标识和第三方应用标识对第三方应用装置认证通过后,向第三方应用装置下发Access Token与对应的密钥;步骤四、第三方应用装置在认证成功后,携带应用实例标识、第三方应用标识和 Access Token等参数信息,通过开放平台的服务API访问用户授权的资源,开放平台根据所述应用实例标识和第三方应用标识,对第三方应用和最终用户的服务请求进行记录,所述记录信息可以用于计费。在Access Token有效期内,第三方应用装置可以直接通过开放平台的服务API访问用户已授权的资源;开放平台根据所述应用实例标识和第三方应用标识,对用户的服务请求进行记录、并计费。所述第三方应用装置,即第三方应用运行实例,是下载、并安装有第三方应用程序副本的硬件终端。所述硬件终端可以是手机、计算机、网络服务器等。根据本发明方法,开放平台认证和鉴权的对象是每一个第三方应用装置,也即是,在不同终端上的第三方应用运行实例。所述应用实例标识由开放平台统一生成。值得注意的是,所述第三方应用标识用于对不同的第三方应用进行标识,而应用实例标识用于对每个第三方应用的不同第三方应用装置进行标识。由于一个开放平台可能有上百个第三方应用,而每个第三方应用又对应于上万的用户,这样当几百万用户同时发起访问请求时,为确保开放平台能对每个第三方应用装置进行有效的认证和鉴权,具有相同第三方应用标识的不同第三方应用装置的应用实例标识应具有唯一性,即在通过第三方应用标识对每个第三方应用进行标示的前提下,进一步通过应用实例标识对同一个第三方应用的不同第三方应用装置进行标示。所述应用实例标识可以采用时间序列加序列号/或随机数的方式表示,如采用 "YYYYMMDDHHMMSS"(年月日时分秒)+4位随机号码。所述步骤二进一步包括有步骤21、开放平台接收第三方应用装置发来的申请未授权的Request Token的访问请求,检查所述访问请求中是否携带有应用实例标识?如果有,继续步骤22 ;如果无,则继续步骤23 ;步骤22、开放平台检查所述应用实例标识是否和开放平台上保存的应用实例标识一致?如果是,则将所述应用实例标识、生成的未经用户授权的Request Token与对应的 token密钥返回给第三方应用装置;如果否,则继续步骤23 ;步骤23、开放平台生成、并保存新的应用实例标识,然后将所述应用实例标识、生成的未经用户授权的Request Token与对应的token密钥返回给第三方应用装置。
7
所述步骤三进一步包括有步骤31、第三方应用装置将开放平台返回的应用实例标识更新到本地,并携带应用实例标识,向开放平台发出请求用户授权的Request Token的访问请求,开放平台根据所述应用实例标识,引导用户对第三方应用装置所访问的资源进行授权,最后向第三方应用装置返回用户授权的Request Token ;步骤32、第三方应用装置携带应用实例标识和第三方应用标识,向开放平台发出将授权Request Token换取成Access Token的请求,开放平台根据所述应用实例标识和第三方应用标识信息,查询对应的用户授权的Request Token,对所述请求认证鉴权通过后, 向第三方应用装置下发Access Token与对应的密钥。图2是图1所示方法实施例的信令流程图,详细介绍如下步骤1、用户通过第三方应用装置的访问界面,向第三方应用装置发出访问服务的请求,所述服务需要访问保存在开放平台上的数据资源或网络能力;步骤2、第三方应用装置携带应用实例标识,向开放平台的Request Token URL地址发起申请未授权的Request Token的访问请求;步骤3、开放平台检查所述申请未授权的Request Token的访问请求中是否携带有应用实例标识,并向第三方应用装置返回应用实例标识、生成的未经用户授权的Request Token与对应的token密钥;步骤4、第三方应用装置将开放平台返回的应用实例标识更新到本地,然后向开放平台的her Authorization URL地址发起请求用户授权的Request Token的访问请求,所述访问请求中携带有应用实例标识,未经用户授权的Request Token与对应的token密钥;步骤5、开放平台根据所述应用实例标识,引导用户对第三方应用装置所访问的数据资源或网络能力进行授权;步骤6、用户可通过用户名/密码或验证码等方式,授权第三方应用装置可以访问所述数据资源或网络能力;步骤7、开放平台向第三方应用装置返回用户授权的Request Token ;步骤8、第三方应用装置向开放平台的Access Token URL地址发起将授权Request Token换取成Access Token的请求,所述请求中携带有应用实例标识;步骤9、开放平台根据应用实例标识和第三方应用标识,查询对应的用户授权的 Request Token,对所述请求认证鉴权通过后,向第三方应用装置下发Access Token与对应的密钥;步骤10、第三方应用装置携带应用实例标识、第三方应用标识、Access Token等参数信息,通过开放平台的服务API访问用户授权的资源;步骤11、开放平台的服务API向第三方应用装置返回调用的数据资源;步骤12、第三方应用装置向用户完成本次服务。如图3所示,本发明一种基于OAuth协议的开放平台安全认证系统,包括有开放平
台和若干个第三方应用装置(如第三方应用装置1、第三方应用装置2.....第三方应用装
置η),所述开放平台和第三方应用装置通过网络相连。其中,第三方应用装置可以采取客户端、或者服务器模式,例如第三方应用装置1和第三方应用装置η分别是用户1和用户m的手机或计算机,第三方应用装置2是网络服务器;用户可以从不同硬件终端发起对同一个第三方应用的访问请求,例如用户1分别从第三方应用装置1、或者第三方应用装置2发出访问请求。如图4所示,开放平台还可以进一步包括有认证授权单元和计费单元,其中认证授权单元,用于接收、并检查第三方应用装置发来的申请未授权的Request Token的访问请求中,是否携带有和开放平台上保存一致的应用实例标识信息,如果没有, 则为所述第三方应用装置分配新的应用实例标识,并将所述应用实例标识、生成的未经用户授权的Request Token与对应的token密钥返回给第三方应用装置;然后根据第三方应用装置在后续OAuth认证请求中所携带的应用实例标识,引导用户对资源进行授权,最后根据应用实例标识和第三方应用标识信息对第三方应用装置认证通过后,向第三方应用装置下发Access Token与对应的密钥;计费单元,用于在第三方应用装置认证成功后,根据第三方应用装置通过开放平台的服务API访问用户授权的资源时所携带的应用实例标识和第三方应用标识信息,对第三方应用和最终用户的服务请求进行记录、并计费。所述第三方应用装置,是下载、并安装有第三方应用程序副本的硬件终端,用于接收用户发来的访问开放平台的资源请求,并检查本地是否已分配有应用实例标识,如果有,则携带所述应用实例标识向开放平台的Request Token URL地址发起申请未授权的 Request Token的访问请求;将开放平台返回的应用实例标识更新至本地,并携带所述应用实例标识进行后续的OAuth认证请求。所述开放平台和第三方应用装置可以通过互联网、或移动网相连,所述第三方应用装置可以是手机、计算机、网络服务器。值得说明的是,当重新下载、并在终端上安装第三方应用程序副本时,原有第三方应用装置对应的应用实例标识会成为开放平台的垃圾数据,需要定时清除。因此,可以采用应用实例标识与Access Token相同的有效期,这样当Access Token失效时,应用实例标识同样做失效处理,开放平台定期清除失效的应用实例标识信息,从而优化系统环境。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
权利要求
1.一种基于OAuth协议的开放平台安全认证方法,其特征在于,所述方法包括有步骤一、开放平台检查第三方应用装置发来的申请未授权的Request Token的访问请求中,是否携带有和开放平台上保存一致的应用实例标识信息,如果没有,则为所述第三方应用装置分配新的应用实例标识,并将所述应用实例标识、生成的未经用户授权的Request Token与对应的token密钥返回给第三方应用装置;步骤二、第三方应用装置将开放平台返回的应用实例标识更新到本地,并继续携带所述应用实例标识进行后续的OAuth认证请求,开放平台通过第三方应用装置发来的应用实例标识引导用户对资源授权,然后根据应用实例标识和第三方应用标识对第三方应用装置认证通过后,向第三方应用装置下发Access Token与对应的密钥。
2.根据权利要求1所述的方法,其特征在于,所述第三方应用装置,是下载、并安装有第三方应用程序副本的硬件终端,所述硬件终端可以是手机、计算机、或者网络服务器。
3.根据权利要求2所述的方法,其特征在于,当在第三方应用装置上重新下载、并安装第三方应用程序副本时,原有第三方应用装置对应的应用实例标识需定时清除,所述应用实例标识采用与Access Token相同的有效期,这样当Access Token失效时,应用实例标识同样做失效处理,开放平台定期清除失效的应用实例标识信息。
4.根据权利要求1所述的方法,其特征在于,所述应用实例标识由开放平台统一生成, 用于对每个第三方应用的不同第三方应用装置进行标识,具有相同第三方应用标识的不同第三方应用装置的应用实例标识具有唯一性,所述应用实例标识可以采用时间序列加序列号或随机数的方式表示。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括有当用户向第三方应用装置发出访问开放平台的资源请求时,第三方应用装置检查本地是否已分配有应用实例标识?如果有,则携带所述应用实例标识向开放平台的Request TokenURL地址发起申请未授权的Request Token的访问请求;如果没有,则直接向开放平台的Request Token URL地址发起申请未授权的Request iToken的访问请求。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括有第三方应用装置在认证成功后,携带应用实例标识、第三方应用标识和Access Token 参数信息,通过开放平台的服务API访问用户授权的资源,开放平台根据所述应用实例标识和第三方应用标识,对第三方应用和最终用户的服务请求进行记录,所述记录信息可以用于计费。
7.根据权利要求1所述的方法,其特征在于,所述步骤一进一步包括有步骤11、开放平台接收第三方应用装置发来的申请未授权的Request Token的访问请求,检查所述访问请求中是否携带有应用实例标识?如果有,继续步骤12 ;如果无,则继续步骤13 ;步骤12、开放平台检查所述应用实例标识是否和开放平台上保存的应用实例标识一致?如果是,则将所述应用实例标识、生成的未经用户授权的Request Token与对应的 token密钥返回给第三方应用装置;如果否,则继续步骤13 ;步骤13、开放平台生成、并保存新的应用实例标识,然后将所述应用实例标识、生成的未经用户授权的Request Token与对应的token密钥返回给第三方应用装置。
8.根据权利要求1所述的方法,其特征在于,所述步骤二进一步包括有步骤21、第三方应用装置将开放平台返回的应用实例标识更新到本地,并携带应用实例标识,向开放平台发出请求用户授权的Request Token的访问请求,开放平台根据所述应用实例标识,引导用户对第三方应用装置所访问的资源进行授权,最后向第三方应用装置返回用户授权的Request Token ;步骤22、第三方应用装置携带应用实例标识和第三方应用标识,向开放平台发出将授权Request Token换取成Access Token的请求,开放平台根据所述应用实例标识和第三方应用标识信息,查询对应的用户授权的Request Token,对所述请求认证鉴权通过后,向第三方应用装置下发Access Token与对应的密钥。
9.一种基于OAuth协议的开放平台安全认证系统,包括有开放平台和若干个第三方应用装置,所述开放平台和第三方应用装置通过网络相连,其特征在于,所述开放平台进一步包括有认证授权单元,用于接收、并检查第三方应用装置发来的申请未授权的Request Token 的访问请求中,是否携带有和开放平台上保存一致的应用实例标识信息,如果没有,则为所述第三方应用装置分配新的应用实例标识,并将所述应用实例标识、生成的未经用户授权的Request Token与对应的token密钥返回给第三方应用装置;然后根据第三方应用装置在后续OAuth认证请求中所携带的应用实例标识,引导用户对资源进行授权,最后根据应用实例标识和第三方应用标识信息对第三方应用装置认证通过后,向第三方应用装置下发 AccessToken与对应的密钥。
10.根据权利要求9所述的系统,其特征在于,所述应用实例标识由开放平台统一生成,用于对每个第三方应用的不同第三方应用装置进行标识,具有相同第三方应用标识的不同第三方应用装置的应用实例标识具有唯一性,所述应用实例标识可以采用时间序列加序列号或随机数的方式表示。
11.根据权利要求9所述的系统,其特征在于,所述第三方应用装置,是下载、并安装有第三方应用程序副本的硬件终端,用于接收用户发来的访问开放平台的资源请求,并检查本地是否已分配有应用实例标识,如果有,则携带所述应用实例标识向开放平台的Request Token URL地址发起申请未授权的Request Token的访问请求;将开放平台返回的应用实例标识更新至本地,并携带所述应用实例标识进行后续的OAuth认证请求,所述第三方应用装置可以是手机、计算机、网络服务器。
12.根据权利要求11所述的方法,其特征在于,当在第三方应用装置上重新下载、并安装第三方应用程序副本时,原有第三方应用装置对应的应用实例标识需定时清除,所述应用实例标识采用与Access Token相同的有效期,这样当Access Token失效时,应用实例标识同样做失效处理,开放平台定期清除失效的应用实例标识信息。
13.根据权利要求9所述的系统,其特征在于,所述开放平台还包括有计费单元,用于在第三方应用装置认证成功后,根据第三方应用装置通过开放平台的服务API访问用户授权的资源时所携带的应用实例标识和第三方应用标识信息,对第三方应用和最终用户的服务请求进行记录、并计费。
全文摘要
一种基于OAuth协议的开放平台安全认证方法和系统,包括有开放平台检查第三方应用装置的申请未授权的Request Token的访问请求,是否携带有和平台一致的应用实例标识,如果没有,则分配新的应用实例标识,并将应用实例标识、未经用户授权的Request Token与对应的token密钥返回给第三方应用装置;第三方应用装置将应用实例标识更新到本地,并继续携带应用实例标识进行后续的OAuth认证请求,开放平台通过应用实例标识,引导用户授权,然后向第三方应用装置下发Access Token与对应的密钥。本发明属于网络技术领域,能对多个第三方应用运行实例的业务场景进行精确认证和鉴权,还可以灵活计费。
文档编号H04L29/06GK102394887SQ201110354138
公开日2012年3月28日 申请日期2011年11月10日 优先权日2011年11月10日
发明者吴若迪, 廖建新, 曹予飞, 李文嘉, 梁龙, 赵军 申请人:杭州东信北邮信息技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1