梁智
摘 要:開放平臺的核心是用戶驗證和授權。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