网站首页  词典首页

请输入您要查询的论文:

 

标题 OAuth2.0协议及其应用模式研究
范文 席剑霄



摘 要:OAuth2.0协议可以有效实现用户身份认证和资源开放授权,同时避免了对外暴露用户的敏感信息。研究了OAuth2.0协议工作的核心原理,包括工作流程和令牌发放模式,分析总结了当前较为典型的基于OAuth2.0协议的开放授权应用模式,可为其它开放授权应用提供参考。
关键词:OAuth2.0;开放授权;身份验证;单点登录
DOIDOI:10.11907/rjdk.151251
中图分类号:TP301 文献标识码:A 文章编号:1672-7800(2015)007-0023-03
0 引言
信息技术迈入Web2.0时代之后,大量互联网应用不断涌现,为用户提供不同的服务。在某些应用场景下,用户需要将自己保留在应用系统中的资源提供给第三方使用。如何在保证用户信息安全的前提下,对用户身份进行鉴定,并将用户指定的资源提供给第三方,即实现用户身份验证与资源开放授权,是互联网服务提供商需要解决的问题。OAuth协议提供了针对该问题的解决方案,目前的最新版本是2.0。OAuth2.0协议能够允许第三方应用代表资源拥有者(系统用户)或者第三方应用本身获得应用系统有限的使用权限。该协议简洁易用,可以充分保证身份认证和开放授权过程的安全性,并有效实现应用资源的可控性和开放性,目前已被包括众多互联网服务提供商支持。
1 背景与意义
目前,众多互联网商向外界公布了自己的开放应用平台,大量的第三方应用可以直接免费发布在开放平台上,用户使用原有账号,无需注册即可使用这些应用。但是,这些第三方应用大都需要使用用户的信息资源(头像、ID号、联系人列表等)。因此,需要解决的问题是:如何设计出完善的用户身份认证和开放授权流程,既能对合法的系统用户进行身份鉴定,又能将用户限定的信息资源开放给已获得授权的第三方应用,同时避免用户在开放授权过程中,将涉及到用户信息安全的敏感信息(如口令)暴露给外界。OAuth协议即在这样的需求下应运而生。OAuth协议的最新版本是2.0,与OAuth1.0协议相比,OAuth2.0版本更加简捷,在实际中使用更多,已成为事实上的标准解决方案。
OAuth协议的根本意义在于实现了资源的集中利用和重新整合,主要表现在:
(1)对于用户而言,可避免同时跨多个系统保留信息资源。诸多互联网应用的出现,在满足用户需求的同时,也造成了用户在不同的应用系统中保留大量信息资源。这些信息资源往往具有较高的相似性。由于不同系统中的信息相对隔离,在没有用户授权的情况下,外部应用无法获取这些信息,造成大量冗余信息的存在[1]。理想情况下,用户只需将信息资源存放在一处,即可跨系统利用,即“一次认证,多次使用”,从而有效提升用户体验。
(2)对于服务提供商而言,可以降低所提供服务的“同质化”趋势。第三方应用只需将注意力放在业务逻辑上,而无需关注服务运维、信息存储、安全设置等支撑业务,利用平台提供商的对外开放接口,即可将应用推送给用户。客观上降低了开发、运维成本,提升了应用质量,实现了资源的进一步整合。另外,由于通过OAuth2.0协议可以显著减少认证鉴权次数,实现账号信息的集中管理,增加账号信息的安全性,因此也常常用来实现单点登录功能。
2 工作原理
2.1 OAuth2.0协议实体
OAuth2.0协议中涉及的主要实体包括[2]:①资源拥有者:通常为系统用户,能够授权给第三方应用访问其拥有的资源;②客户端:访问用户资源的第三方应用,该应用可以是Web服务、运行在PC机上的本地程序、智能移动终端上安装的App等。第三方应用只有通过认证服务器验证才能成功获取用户资源;③认证服务器:对资源拥有者进行身份验证,验证通过后,授予访问权限;④资源服务器:保存用户资源的实体,可以接收访问受保护资源的请求。资源服务器通过和认证服务器的交互,判别客户端是否有权访问资源,并根据交互结果向客户端返回应答。
2.2 OAuth2.0核心工作流程
OAuth2.0协议核心工作流程为[2]:①客户端向资源拥有者请求授权许可;②客户端从资源拥有者方面获得授权许可,该授权许可使用协议中定义的授权形式或扩展类型来表示;③凭借获得的授权认证,客户端向认证服务器请求访问令牌,认证服务器对客户端进行验证;④认证服务器验证客户端和授权许可是否合法。如果验证通过,认证服务器将访问令牌返回客户端;⑤客户端向资源服务器请求访问资源,并向资源服务器出示访问令牌;⑥资源服务器验证访问令牌。如果访问令牌合法,资源服务器处理该请求并做出应答。OAuth2.0协议工作流程如图1所示。
图1 OAuth2.0协议工作流程
2.3 OAuth2.0访问令牌获取(更新)方式
为了避免访问令牌有效期过长带来的安全隐患,OAuth2.0为访问令牌设置了过期时间属性,并增加了刷新令牌。当访问令牌过期之后,客户端需要向认证服务器获取新的访问令牌。在获取新访问令牌的过程中,需要向认证服务器出示为该客户端颁发的刷新令牌。客户端通过认证服务器验证之后,认证服务器向客户端返回新的访问令牌。OAuth2.0协议刷新令牌流程如图2所示。
图2 OAuth2.0协议刷新令牌流程
OAuth2.0协议刷新令牌流程为:①客户端凭借授权许可向认证服务器请求访问令牌;②认证服务器验证客户端和授权许可是否合法,如果验证通过,向客户端返回访问令牌和刷新令牌;③客户端凭借访问令牌向资源服务器请求用户资源;④资源服务器验证访问令牌是否合法,如果合法则对请求作出响应。通常,资源服务器需要和认证服务器交互方能完成验证,但资源服务器和认证服务器的交互方式不在OAuth2.0协议范畴之内;⑤获取访问令牌之后,客户端重复步骤3和4,直到访问令牌过期;⑥当访问令牌失效后,资源服务器向客户端返回错误应答,提示客户端访问令牌失效;⑦客户端凭借刷新令牌向认证服务器请求新的访问令牌;⑧认证服务器验证客户端和刷新令牌,如果验证通过,向客户端返回新生成的访问令牌。在必要的情况下,也可以生成新的刷新令牌。
3 应用模式
3.1 典型应用流程
OAuth2.0协议目前已被包括百度、腾讯在内的多家互联网提供商支持[3],第三方应用可以通过这些开放平台接口向系统用户提供服务。较为典型的应用流程如图3所示。
图3 典型应用流程
流程具体步骤为:①开发者个人或组织向认证服务器(应用平台提供商)注册,需要提供开发者或组织的真实信息,提交之后等候审核。只有审核通过的开发者方可提交应用;②提交应用信息。通过审核的开发者需要登记应用详细信息,包括应用名称、应用描述、回调地址等。其中,回调地址是应用信息中十分关键的信息,在获取认证授权的步骤中,认证服务器通过该地址将用户代理重定向至应用;③设置用户授权入口。应用需要在UI界面设置用户身份信息验证功能。只有用户身份验证通过并同意授权时,应用方能继续请求访问令牌;④应用使用认证服务器提供的API接口,根据认证服务器提供的授权方式获得访问令牌;⑤应用利用提供的API接口,凭借访问令牌等信息,向资源服务器请求用户信息资源。
3.2 授权模式对比
OAuth2.0协议中规定了4种授权模式,分别是授权码模式(Authorization Code)、简化模式(Implicit)、资源拥有者密码授权模式(Resource Owner Password Credentials)、客户端授权模式(Client Credentials)。其中,授权码模式是4种方式中最为严格的模式,在应用获得访问令牌之前,需要首先获得授权码(Authorization Code);简化模式可以看作授权码模式的简化版本,当客户端应用没有服务器端时,可采用此模式。该模式的好处在于:由于桌面程序、移动App或运行在用户代理中的脚本程序等本地应用通常无法安全妥善地保管应用密钥,因而大大降低了应用密钥泄露的几率;资源拥有者密码授权模式仅当用户十分信任某个客户端应用时才使用;严格来讲,客户端授权模式并不存在用户授权问题,只要客户端应用被认证服务器完全信任,则无需用户身份认证流程即可获得访问令牌。以下只对授权码模式和简化模式作简单的比较和分析。
当使用授权码模式时,客户端应用需要具备服务器。当用户身份验证通过并获得授权码之后,用户代理会将包括授权码在内的请求,重定向至客户端应用,由应用服务器向认证服务器请求访问令牌,并由应用服务器向资源服务器请求访问用户资源。授权码模式具体流程如图4所示。
(2)用户输入用户名密码完成身份认证,并同意授权给应用指定的权限。
(3)根据第一步请求中的URL中携带的redirect_uri参数,认证服务器将客户端重定向,并将授权码以参数形式携带在URL中,例如:http://www.client.com/redirect?code=BMYyRTioQDdlPrvasdBIC7bLqZDxhkMn。
(4)应用服务器凭借获得授权码,向认证服务器请求访问令牌,例如:https://www.authorize_server.com/token?grant_type=authorization_code&code=BMYyRBMYyRTioQDdlPrva7bLqZDxhkMn&client_id=Wb6zRSIl B5Gr5fR4MU1wvYW5&client_secret=****&redirect_uri=http%3A%2F%2Fwww.client.com%2Fredirect,请求令牌URL携带参数含义如表2所示。
通过验证,认证服务器向客户端返回访问令牌等信息,如:
{
"access_token":"6ApqcALYTwjfxRbisZVcGH",
"token_type":"bearer",
"expires_in":86400,
"refresh_token":"sFmc6KPlE2ZF9Ay9RdsWoZ",
}
具体参数含义如表3所示。
(6)应用服务器凭借访问令牌,向资源服务器请求访问用户信息资源。当客户端应用不存在服务器端时,可使用简化模式。简化模式无需获取授权码,认证服务器直接将访问令牌返给应用,应用向资源服务器请求访问用户资源。简化模式适用于应用不存在服务端的情况,避免了应用直接存储应用密钥带来的风险。简化模式流程如图5所示。
简化模式的核心步骤在于应用直接向认证服务器提供的URL获取访问令牌,如:https://www.authorize_server.com/authorize?response_type=token&client_id=Wb6zRSIlB5Gr5fR4MU1wvYW5&redirect_uri=http%3A%2F%2Fwww.client.com%2Fredirect&scope=user_info& state=****。此时,请求参数中response_type的值必须为token。在请求有效的情况下,认证服务器直接向应用返回访问令牌。
4 结语
OAuth2.0标准协议提供了灵活多样的授权模式,制定的认证授权流程严谨、安全,能够允许第三方在用户授权的情况下访问用户资源,在保证用户信息安全的前提下,实现了资源的开放利用,并在提高用户体验的同时,提高了资源的利用效率。该协议可为单点登录、开放授权、资源访问控制等功能提供参考。
参考文献:
[1] 朱宇飞.Web 2.0时代的安全框架——OAuth[J].科技情报开发与经济,2012,22(17):81.
[2] Internet Engineering Task Force.The OAuth2.0 authorization protocol[EB/OL].http://datatracker.ietf.org/doc/rfc6749.
[3] 卢慧锋.社会化网络服务中OAuth2.0的应用研究与实现[J].计算机应用,2014,34(S1):50-51.
[4] 腾讯开放平台.使用Authorization_Code获取Access_Token[EB/OL].http://wiki.open.qq.com/wiki/website/%E4%BD%BF%E7%94%A8Authorization_Code%E8%8E%B7%E5%8F%96Access_Token.
(责任编辑:黄 健)
随便看

 

科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。

 

Copyright © 2004-2023 puapp.net All Rights Reserved
更新时间:2025/3/15 10:05:30