蘇州科技大學信息建設與管理中心 袁海峰 胡 銳
蘇州科技大學天平學院 郁 蔥
基于OAuth2.0的高校數據中心Open API的設計與實現
蘇州科技大學信息建設與管理中心 袁海峰 胡 銳
蘇州科技大學天平學院 郁 蔥
隨著校園信息化建設的發展,應用系統的增加,數據共享變的必不可少,建設共享的公共數據平臺越來越受到學校信息化建設者的青睞。公共數據平臺做為唯一的數據出口為第三方應用提供數據服務,數據共享就面臨著數據安全問題,如何安全的提供給第三方使用,是現在校園信息化建設存在的普遍問題。本文提出一種基于OAuth 2.0的校園數據安全認證系統,數據的擁有者通過認證服務器在使用數據的過程中給需要訪問資源的第三方授權訪問該數據的權限,有效的控制了數據安全問題。
OAuth2.0;數據安全;認證系統
近年來,學校信息化的發展作為學校自身發展一部分,越來越受到學校管理者的重視。學校的數據成指數增長,產生了大量的個人數據和業務數據[1],這些數據存放在公共數據平臺。目前很多學校都是采用開放訪問公共數據平臺數據庫權限的方式,給第三方提供數據服務,這種方式是非常不安全,使公共數據平臺時刻處在風險之中。因此開發一套安全可靠校園數據安全認證系統是非常用必要的。
根據OAuth2.0協議的開發的公共數據平臺的Open API,其API授權的方式與以往的授權方式不同之處是 OAuth 的授權不會使第三方觸及到用戶的用戶名與密碼等敏感信息,即第三方無需使用用戶的用戶名與密碼就可以申請獲得該用戶資源的授權[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(訪問令牌)。
以蘇州科技大學為例,Open API是公共數據平臺的基礎搭建設,通過認證服務器給第三方應用授權訪問公共數據平臺 API的權限,如圖1所示。
(1)公共數據平臺的數據是通過Oracle ODI同步于校內各應用系統,作為校內資源存儲者,在這里充當Open API系統的資源服務器。
(2)Web API提供公共數據數據平臺API接口給第三方應用。
(3)認證服務器給第三方應用進行認證,發放令牌,授權訪問公共數據數據平臺API。
通過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結構示意圖
以開源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系統。通過該系統的為第三訪提供統一數據認證和數據使用授權,極大的保證了數據安全性和可信性。同時該系統具有可擴展性、可靠性和經濟性等特點,能夠滿足高?,F階段信息化建設的需求。
[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.
袁海峰(1977—),男,漢族,河南周口人,大學本科,工程師;主要研究方向和關注領域:高校網絡建設。
該系統在根據OAuth2.0的規范,通過調用開源的DotNetOpen-