梁智
摘 要:开放平台的核心是用户验证和授权。OAuth2.0协议是一个安全、开放、简易的认证标准,逐渐成为开放平台的国际通用授权方式。介绍了OAuth2.0 协议的核心工作流程与授权机制,探讨了基于OAuth2.0 授权协议的高校开放服务平台实现方式。
关键词:OAuth2.0协议;授权体系;开放服务平台
DOIDOI:10.11907/rjdk.171256
中图分类号:TP319
文献标识码:A 文章编号:1672-7800(2017)007-0159-03
0 引言
随着移动互联、云计算、虚拟化和大数据等信息技术在教育领域的不断融合,高校信息化建设正从“数字校园”快速迈入“智慧校园”阶段。传统“重应用、轻使用”的面向应用集成的建设模式正逐步向 “泛在化、融合化、个性化”的开放性服务建设模式转变。搭建一个既拥有开放性又具有安全性的公共服务平台是高校“智慧校园”框架建设的重要内容。本文基于OAuth2.0开放授权协议并结合高校信息化环境,对开放服务平台建设实践中遇到的问题进行了探讨。
1 高校开放服务平台
随着互联网技术的快速发展和广泛应用,用户对信息化的需求越来越高,高校信息化已迈入了 “智慧校园”建设阶段。“智慧校园”的一大主要特征即具有高度的开放性。开放性促进了互联网的快速发展,互联网服务之间的交互日益增强。因此,构建开放平台整合互联网之间的服务成为必然趋势。互联网服务提供商将服务封装成一系列接口供第三方开发者使用,这种行为称为OPEN API。提供開放的API平台就称为开放平台(Open Platform)[1]。
高校业务工作涉及教学、科研、行政、生活等多个领域,每个领域又建设了大量的业务系统,包含大量的服务内容。在传统的数字化校园体系下,更多地强调管理而非服务,需要用户在各个业务系统内寻找所需服务,这显然不能满足用户需求。新的需求如同人们在互联网上购买机票时,还同时完成酒店、接机预定,甚至是周边旅游景点门票、餐饮的预定。这些信息服务来源于不同行业,但围绕着用户以及用户行为重新组合起来。因此,将高校原有服务内容抽离,构建内部的开放性公共服务平台并围绕不同用户(如教师、学生、校友)和不同时期(如到校前、在校间、离校后)进行有机组合,提供更为开放、个性化的服务,是新形势下教育信息化建设的迫切需要。
2 高校开放服务平台面临的问题
传统数字化校园系统下,各业务系统包含大量不同的服务内容,其授权体系基本都是系统级别的授权,即直接对应用进行授权。当用户登录系统后即可访问这些服务,所有的服务都处于各自的系统边界内,在这个边界内能很好地控制用户的信息安全与权限问题。
开放服务平台需要将各业务系统提供的服务进行抽离并放在统一的平台上,这样就不得不打破原有的系统边界,如果跳出这个边界且在没有手段对访问权限进行有效控制的情况下势必带来信息安全问题。文献[2]指出,网络服务在具有开放性的同时,其背后的个人数据安全是一个不容忽视的问题。目前,开放平台有两种解决方案来实现开放授权,一种是使用OAuth协议,另一种是使用IAM服务[3]。OAuth协议主要适用于个人用户对资源的开放授权,其强调“现场授权”,需要现场审批。针对高校的特定应用场景,通过OAuth协议实现高校开放服务平台授权体系是行之有效的方法。
3 OAuth2.0认证授权协议
OAuth2.0协议是一种专门针对跨平台应用之间认证授权而设计的框架协议,其最新版本OAuth 2.0于2012年10月发布,称为RFC 6749[4]。该协议允许在应用之间通过重定向方式让用户显式而明确地参与授权过程,并且保护用户关键的凭证(口令)信息[5-6];允许第三方应用程序使用该用户的私有资源(如个人信息、照片、通讯录等),而无需将用户名和密码直接提供给第三方应用程序。OAuth2.0协议已经成为互联网上主流的开放平台授权方式,得到了众多互联网企业支持,如Google API、腾讯、网易等主流开放平台。
3.1 OAuth2.0协议参与角色
(1)资源拥有者(resource owner):对受保护资源具有授权许可能力的实体,通常是最终用户。
(2)资源服务器(resource server):存储用户受保护数据资源,客户端通过授权令牌(access token)向资源服务器请求资源,资源服务器处理访问请求。
(3)授权服务器(authorization server):认证资源拥有者身份,提供授权审批流程,最终颁发授权令牌(Access Token)给客户端。
(4)客户端(client):访问受保护资源的第三方应用。在获得资源拥有者的授权后,向资源服务器提交访问资源请求,通常是Web网站、PC桌面客户端、移动终端应用或其它设备。
3.2 OAuth2.0协议授权方式
在OAuth2.0协议下,客户端必须得到用户授权才能获得令牌(access token)去访问受保护资源。为了支持不同类型的第三方应用,OAuth2.0提出了4种授权方式应对不同的应用场景。
(1)授权码模式(authorization code):基于网页的授权方式,是功能最完整、流程最严密的授权模式。客户端在请求验证前,需要将浏览器跳转到用户授权页面。用户确认授权后,通过重定向URI让客户端获得一个一次性的授权码,再通过授权码向授权服务器交换授权令牌(access token)。它的特点是授权令牌的申请是客户端服务器与授权服务器在后台完成,整个过程用户不可见。
(2)简化模式(implicit):简化模式下客户端运行在用户代理(user agent)中,用户代理向授权服务器申请授权令牌(access token),所有工作都在用户代理中完成,授权令牌对访问者具可见性。这种模式一般用于客户端应用程序。endprint
(3)密码模式(resource owner password):OAuth2.0提供一种允许客户端使用者持有用户名与密码作为访问许可来交换授权令牌(access token)。在这种模式下,要求用户与客户端之间具有很强的信任关系。
(4)客户端模式(client credentials):是指客户端自身向授权服务器申请授权令牌(access token)。这种模式中,用户在客户端注册后,客户端以自己的名义向资源服务器请求资源,授权服务器只验证客户端身份而不验证用户身份。通常适用于请求的资源数据与用户无关(如网上的新闻),不涉及用户登录与授权。
3.3 OAuth2.0核心思路与流程
OAuth2.0授权协议提供在没有资源所有者密码的情况下,通过授权服务器颁发的授权令牌来访问用户资源的方法。其基本思路在文献[7]中进行了描述。客户端首先从资源拥有者获取访问许可,使用获得的访问许可交换授权令牌,通过向资源服务器出示授权令牌来访问受保护资源。OAuth在客户端与资源服务器之间提供了一个抽象的授权层(authorization layer)对用户与客户端进行分离,使资源服务器只关注单一的授权令牌。令牌与密码不同,其具有资源拥有者赋予的权限作用域、时效期和其它信息。使用OAuth2.0流程[4]如图1所示。
OAuth2.0认证和授权流程如下:①资源拥有者(用户)访问第三方客户端,客户端引导用户授予访问许可;②资源拥有者为客户端授权,给客户端发送一个访问许可(authorization code);③客户端使用收到的访问许可与自己的私有证书,向授权服务器申请授权令牌;④授权服务器对客户端身份与访问许可进行认证,并颁发授权令牌;⑤客户端出示获得的授权令牌,向资源服务器请求资源拥有者的受保护资源;⑥资源服务器确认授权令牌的有效性,并对客户端的资源访问请求做出响应。
4 OAuth2.0应用
在OAuth2.0授权协议体系中,授权服务器起着至关重要的作用,它既是用户身份的认证者又是授权的颁发者,既控制着认证又控制着授权。目前高校基本已完成包括统一身份认证平台在内的三大平台建设,为服务平台建立独立的身份认证体系显然不合适。为此,可将认证和授权设计为两个独立体系。授权服务器向统一身份认证平台发起认证请求,当认证通过时再颁发授权令牌给客户端使用。资源服务器与授权服务器逻辑上是分离的,但为有效减少IO成本,提高访问效率,事实上往往是资源服务器与授权服务器处于同一台服务器上。高校业务领域广,涉及系统多,应将资源服务器从授权服务器上分离并进行合理规划,将服务集群与授权服务器对接。高校开放性服务平台模型如图2所示。
5 结语
在信息技术、互联网技术飞速发展的今天,开放平台成为互联网资源开放的一大发展趋势,OAuth2.0协议为开放平臺中用户资源授权与身份验证问题提供了一个安全、开放、简易的标准。本文基于OAuth2.0协议,结合高校信息化环境,对开放性服务平台的构建进行了分析研究,对高校开放服务平台建设提供了一种有效的实现方案。
参考文献:
[1]钱丹浩.项目化嵌入式教学的开发系统平台构建[J].单片机与嵌入式系统应用,2010(11) : 22-35.
[2]罗洁.网络开放平台用户隐私权的风险防范研究[J].理论月刊,2014(11) : 173-176.
[3]AWS identity and access management[EB/OL].[2017-2-17].https://aws.amazon.com/cn/iam.
[4]The OAuth 2.0 authorization framework[EB/OL].[2017-2-15].https://tools.ietf.org/html/rfc6749.
[5]LEIBA B. OAuth Web authorization protocol[J]. IEEE Internet Computing, 2012(1-2):74-77.
[6]HAMMER-LAHAV E. The OAuth 1.0 protocol, RFC5849[S]. Internet Engineering Task Force(IETF), 2010.
[7]卢慧锋,赵文涛,孙志峰,等.社会化网络服务中OAuth2.0的应用研究与实现[J]. 计算机应用,2014,34(S1):50-54.endprint