基于OAuth2.0的高校数据中心Open API的设计与实现
2017-12-19苏州科技大学信息建设与管理中心袁海峰
苏州科技大学信息建设与管理中心 袁海峰 胡 锐
苏州科技大学天平学院 郁 葱
基于OAuth2.0的高校数据中心Open API的设计与实现
苏州科技大学信息建设与管理中心 袁海峰 胡 锐
苏州科技大学天平学院 郁 葱
随着校园信息化建设的发展,应用系统的增加,数据共享变的必不可少,建设共享的公共数据平台越来越受到学校信息化建设者的青睐。公共数据平台做为唯一的数据出口为第三方应用提供数据服务,数据共享就面临着数据安全问题,如何安全的提供给第三方使用,是现在校园信息化建设存在的普遍问题。本文提出一种基于OAuth 2.0的校园数据安全认证系统,数据的拥有者通过认证服务器在使用数据的过程中给需要访问资源的第三方授权访问该数据的权限,有效的控制了数据安全问题。
OAuth2.0;数据安全;认证系统
1.引言
近年来,学校信息化的发展作为学校自身发展一部分,越来越受到学校管理者的重视。学校的数据成指数增长,产生了大量的个人数据和业务数据[1],这些数据存放在公共数据平台。目前很多学校都是采用开放访问公共数据平台数据库权限的方式,给第三方提供数据服务,这种方式是非常不安全,使公共数据平台时刻处在风险之中。因此开发一套安全可靠校园数据安全认证系统是非常用必要的。
根据OAuth2.0协议的开发的公共数据平台的Open API,其API授权的方式与以往的授权方式不同之处是 OAuth 的授权不会使第三方触及到用户的用户名与密码等敏感信息,即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权[2]。
2.相关技术
OAuth 2.0是OAuth协议的下一版本,但不向前兼容 OAuth 1.0。和 OAuth 1.0相比,OAuth 2.0关注客户端开发者的简易性,同时为Web应用、桌面应用和手机应用提供专门的认证流程[3]。2012年10月,OAuth 2.0协议正式发布为RFC 6749[4]。
OAuth 2.0有四种角色,分别是资源所有者(Resource Owner),资源服务器(Resource Server),客户端(Client)和认证服务器(Authorization Server)[5]。资源所有者:能授权访问受保护资源的一个实体[6],如公共数据平台用户2153。资源服务器:存储资源的服务器[7],比如存储2153个人信息,客户端通过出示 Access Token(访问令牌)进行访问。客户端:经过授权后,代表资源所有者访问资源服务器上受限制的资源。认证服务器:对资源所有者进行认证,向客户端发放Access Token(访问令牌)。
3.公共数据平台Open API设计
3.1 系统架构
以苏州科技大学为例,Open API是公共数据平台的基础搭建设,通过认证服务器给第三方应用授权访问公共数据平台 API的权限,如图1所示。
(1)公共数据平台的数据是通过Oracle ODI同步于校内各应用系统,作为校内资源存储者,在这里充当Open API系统的资源服务器。
(2)Web API提供公共数据数据平台API接口给第三方应用。
(3)认证服务器给第三方应用进行认证,发放令牌,授权访问公共数据数据平台API。
3.2 认证服务器
通过OAuth2.0模式打造自己的Web api认证服务,用于其第三方访问我们的api时进行权限认证。
(1)用户首先要保持登录,即已认证通过的状态;
(2)第三方应用请求用户授权(我理解是弹出一个显示的操作界面让用户确认给第三方授权);
(3)用户授权成功之后会向Authorization Server(认证服务器)请求“授权码”(指authorization_code而不是最终的access_token),请求中还会携带redirect_uri(跳转至第三方应用的链接);
(4)获得“授权码”之后用户所在的浏览器网页将跳转到redirect_uri(即第三方应用)
(5)第三方应用携带“授权码”和应用认证信息(client_id &client_secret)到Authorization Server换取access_token;
(6)第三方应用就可以在访问开放平台时带上access_token。
图1 Open API结构示意图
4.公共数据平台Open API实现
以开源DotNetOpenAuth为基础设计的基于OAuth2.0的校园认证系统,包括客户端,授权服务端和资源服务端三方面的实同。
(1)对客户端来说,授权的过程就是获取AccessToken的过程,DotNetOpenAuth.OAuth2.Client是DotNetOpenAuth给C#客户端提供的默认SDK。
(2)授权服务端交互最多是客户端于是定义一个client类,调用DotNetOpenAuth.OAuth2.IClientDescription接口, IClientDescription接口定义。DotNetOpenAuth预定义了一个接口——IAuthorization-ServerHost,当授权通过后,通过CreateAccessToken生成AccessToken并返回给客户端,客户端于是就可以用AccessToken访问资源服务端了。AuthorizationServerDescription包含两个属性,AuthorizationEndpoint是用户显式授权的地址,一般即用户输用户名密码的地;TokenEndpoint是用授权码换取AccessToken的地址,注意该地址须用POST请求。
(3)在所有的授权模式下,资源服务端都只专注一件和OAuth相关的事情——验证AccessToken。
授权服务地址的 URL地址:http∶//210.*.*.*∶8080/OAuth/tokenclient_id:ustsapp;client_secret:1;grant_type:client_credentialspost 到授权服务务获得access_token,token_type,expires_in,如图2所示。
图2
访问资源服务器,URL:http∶// 210.*.*.*∶8070/api/Values?user=user&pwd=passwd
图3
Authorization:“token_type” + “空格” + “access_token”,如图3所示。Auth软件,实现了对高校数据中惦OpenAPI系统。通过该系统的为第三访提供统一数据认证和数据使用授权,极大的保证了数据安全性和可信性。同时该系统具有可扩展性、可靠性和经济性等特点,能够满足高校现阶段信息化建设的需求。
[1]胡锐,胡伏原,陈丽春.基于Hadoop的高校公共数据平台的构建[J].苏州科技学院学报(自然科学版),2015,32(3):52-53.
[2]时子庆,刘金兰,谭晓华.基于OAuth2.0的认证授权技术[J].计算机系统应用,2012,21(3):260-264.
[3]卢慧锋,赵文涛,孙志峰,游超.社会化网络服务中OAuth2.0的应用研究与实现[J].计算机系统应用,2014(S1):50-54.
[4]IETF:The OAuth 2.0 Authorization Framework[EB/OL].[2012-11].https://tools.ietf.org/html/rfc6749.
[5]俞晓,左友东,YUXiao,ZUOYou-Dong[J].计算机系统应用,2014,23(8):59-62.
[6]沈海波,陈强,陈勇昌.基于OAuth2.0扩展的客户端认证方案[J].计算机工程与设计,2017,38(2):350-354.
[7]时子庆,刘金兰,谭晓华.基于OAuth2_0的认证授权技术[J].计算机系统应用,2012,21(3):260-264.
5.总结
袁海峰(1977—),男,汉族,河南周口人,大学本科,工程师;主要研究方向和关注领域:高校网络建设。
该系统在根据OAuth2.0的规范,通过调用开源的DotNetOpen-