梁智
摘 要:開(kāi)放平臺(tái)的核心是用戶(hù)驗(yàn)證和授權(quán)。OAuth2.0協(xié)議是一個(gè)安全、開(kāi)放、簡(jiǎn)易的認(rèn)證標(biāo)準(zhǔn),逐漸成為開(kāi)放平臺(tái)的國(guó)際通用授權(quán)方式。介紹了OAuth2.0 協(xié)議的核心工作流程與授權(quán)機(jī)制,探討了基于OAuth2.0 授權(quán)協(xié)議的高校開(kāi)放服務(wù)平臺(tái)實(shí)現(xiàn)方式。
關(guān)鍵詞:OAuth2.0協(xié)議;授權(quán)體系;開(kāi)放服務(wù)平臺(tái)
DOIDOI:10.11907/rjdk.171256
中圖分類(lèi)號(hào):TP319
文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-7800(2017)007-0159-03
0 引言
隨著移動(dòng)互聯(lián)、云計(jì)算、虛擬化和大數(shù)據(jù)等信息技術(shù)在教育領(lǐng)域的不斷融合,高校信息化建設(shè)正從“數(shù)字校園”快速邁入“智慧校園”階段。傳統(tǒng)“重應(yīng)用、輕使用”的面向應(yīng)用集成的建設(shè)模式正逐步向 “泛在化、融合化、個(gè)性化”的開(kāi)放性服務(wù)建設(shè)模式轉(zhuǎn)變。搭建一個(gè)既擁有開(kāi)放性又具有安全性的公共服務(wù)平臺(tái)是高?!爸腔坌@”框架建設(shè)的重要內(nèi)容。本文基于OAuth2.0開(kāi)放授權(quán)協(xié)議并結(jié)合高校信息化環(huán)境,對(duì)開(kāi)放服務(wù)平臺(tái)建設(shè)實(shí)踐中遇到的問(wèn)題進(jìn)行了探討。
1 高校開(kāi)放服務(wù)平臺(tái)
隨著互聯(lián)網(wǎng)技術(shù)的快速發(fā)展和廣泛應(yīng)用,用戶(hù)對(duì)信息化的需求越來(lái)越高,高校信息化已邁入了 “智慧校園”建設(shè)階段?!爸腔坌@”的一大主要特征即具有高度的開(kāi)放性。開(kāi)放性促進(jìn)了互聯(lián)網(wǎng)的快速發(fā)展,互聯(lián)網(wǎng)服務(wù)之間的交互日益增強(qiáng)。因此,構(gòu)建開(kāi)放平臺(tái)整合互聯(lián)網(wǎng)之間的服務(wù)成為必然趨勢(shì)?;ヂ?lián)網(wǎng)服務(wù)提供商將服務(wù)封裝成一系列接口供第三方開(kāi)發(fā)者使用,這種行為稱(chēng)為OPEN API。提供開(kāi)放的API平臺(tái)就稱(chēng)為開(kāi)放平臺(tái)(Open Platform)[1]。
高校業(yè)務(wù)工作涉及教學(xué)、科研、行政、生活等多個(gè)領(lǐng)域,每個(gè)領(lǐng)域又建設(shè)了大量的業(yè)務(wù)系統(tǒng),包含大量的服務(wù)內(nèi)容。在傳統(tǒng)的數(shù)字化校園體系下,更多地強(qiáng)調(diào)管理而非服務(wù),需要用戶(hù)在各個(gè)業(yè)務(wù)系統(tǒng)內(nèi)尋找所需服務(wù),這顯然不能滿(mǎn)足用戶(hù)需求。新的需求如同人們?cè)诨ヂ?lián)網(wǎng)上購(gòu)買(mǎi)機(jī)票時(shí),還同時(shí)完成酒店、接機(jī)預(yù)定,甚至是周邊旅游景點(diǎn)門(mén)票、餐飲的預(yù)定。這些信息服務(wù)來(lái)源于不同行業(yè),但圍繞著用戶(hù)以及用戶(hù)行為重新組合起來(lái)。因此,將高校原有服務(wù)內(nèi)容抽離,構(gòu)建內(nèi)部的開(kāi)放性公共服務(wù)平臺(tái)并圍繞不同用戶(hù)(如教師、學(xué)生、校友)和不同時(shí)期(如到校前、在校間、離校后)進(jìn)行有機(jī)組合,提供更為開(kāi)放、個(gè)性化的服務(wù),是新形勢(shì)下教育信息化建設(shè)的迫切需要。
2 高校開(kāi)放服務(wù)平臺(tái)面臨的問(wèn)題
傳統(tǒng)數(shù)字化校園系統(tǒng)下,各業(yè)務(wù)系統(tǒng)包含大量不同的服務(wù)內(nèi)容,其授權(quán)體系基本都是系統(tǒng)級(jí)別的授權(quán),即直接對(duì)應(yīng)用進(jìn)行授權(quán)。當(dāng)用戶(hù)登錄系統(tǒng)后即可訪問(wèn)這些服務(wù),所有的服務(wù)都處于各自的系統(tǒng)邊界內(nèi),在這個(gè)邊界內(nèi)能很好地控制用戶(hù)的信息安全與權(quán)限問(wèn)題。
開(kāi)放服務(wù)平臺(tái)需要將各業(yè)務(wù)系統(tǒng)提供的服務(wù)進(jìn)行抽離并放在統(tǒng)一的平臺(tái)上,這樣就不得不打破原有的系統(tǒng)邊界,如果跳出這個(gè)邊界且在沒(méi)有手段對(duì)訪問(wèn)權(quán)限進(jìn)行有效控制的情況下勢(shì)必帶來(lái)信息安全問(wèn)題。文獻(xiàn)[2]指出,網(wǎng)絡(luò)服務(wù)在具有開(kāi)放性的同時(shí),其背后的個(gè)人數(shù)據(jù)安全是一個(gè)不容忽視的問(wèn)題。目前,開(kāi)放平臺(tái)有兩種解決方案來(lái)實(shí)現(xiàn)開(kāi)放授權(quán),一種是使用OAuth協(xié)議,另一種是使用IAM服務(wù)[3]。OAuth協(xié)議主要適用于個(gè)人用戶(hù)對(duì)資源的開(kāi)放授權(quán),其強(qiáng)調(diào)“現(xiàn)場(chǎng)授權(quán)”,需要現(xiàn)場(chǎng)審批。針對(duì)高校的特定應(yīng)用場(chǎng)景,通過(guò)OAuth協(xié)議實(shí)現(xiàn)高校開(kāi)放服務(wù)平臺(tái)授權(quán)體系是行之有效的方法。
3 OAuth2.0認(rèn)證授權(quán)協(xié)議
OAuth2.0協(xié)議是一種專(zhuān)門(mén)針對(duì)跨平臺(tái)應(yīng)用之間認(rèn)證授權(quán)而設(shè)計(jì)的框架協(xié)議,其最新版本OAuth 2.0于2012年10月發(fā)布,稱(chēng)為RFC 6749[4]。該協(xié)議允許在應(yīng)用之間通過(guò)重定向方式讓用戶(hù)顯式而明確地參與授權(quán)過(guò)程,并且保護(hù)用戶(hù)關(guān)鍵的憑證(口令)信息[5-6];允許第三方應(yīng)用程序使用該用戶(hù)的私有資源(如個(gè)人信息、照片、通訊錄等),而無(wú)需將用戶(hù)名和密碼直接提供給第三方應(yīng)用程序。OAuth2.0協(xié)議已經(jīng)成為互聯(lián)網(wǎng)上主流的開(kāi)放平臺(tái)授權(quán)方式,得到了眾多互聯(lián)網(wǎng)企業(yè)支持,如Google API、騰訊、網(wǎng)易等主流開(kāi)放平臺(tái)。
3.1 OAuth2.0協(xié)議參與角色
(1)資源擁有者(resource owner):對(duì)受保護(hù)資源具有授權(quán)許可能力的實(shí)體,通常是最終用戶(hù)。
(2)資源服務(wù)器(resource server):存儲(chǔ)用戶(hù)受保護(hù)數(shù)據(jù)資源,客戶(hù)端通過(guò)授權(quán)令牌(access token)向資源服務(wù)器請(qǐng)求資源,資源服務(wù)器處理訪問(wèn)請(qǐng)求。
(3)授權(quán)服務(wù)器(authorization server):認(rèn)證資源擁有者身份,提供授權(quán)審批流程,最終頒發(fā)授權(quán)令牌(Access Token)給客戶(hù)端。
(4)客戶(hù)端(client):訪問(wèn)受保護(hù)資源的第三方應(yīng)用。在獲得資源擁有者的授權(quán)后,向資源服務(wù)器提交訪問(wèn)資源請(qǐng)求,通常是Web網(wǎng)站、PC桌面客戶(hù)端、移動(dòng)終端應(yīng)用或其它設(shè)備。
3.2 OAuth2.0協(xié)議授權(quán)方式
在OAuth2.0協(xié)議下,客戶(hù)端必須得到用戶(hù)授權(quán)才能獲得令牌(access token)去訪問(wèn)受保護(hù)資源。為了支持不同類(lèi)型的第三方應(yīng)用,OAuth2.0提出了4種授權(quán)方式應(yīng)對(duì)不同的應(yīng)用場(chǎng)景。
(1)授權(quán)碼模式(authorization code):基于網(wǎng)頁(yè)的授權(quán)方式,是功能最完整、流程最嚴(yán)密的授權(quán)模式??蛻?hù)端在請(qǐng)求驗(yàn)證前,需要將瀏覽器跳轉(zhuǎn)到用戶(hù)授權(quán)頁(yè)面。用戶(hù)確認(rèn)授權(quán)后,通過(guò)重定向URI讓客戶(hù)端獲得一個(gè)一次性的授權(quán)碼,再通過(guò)授權(quán)碼向授權(quán)服務(wù)器交換授權(quán)令牌(access token)。它的特點(diǎn)是授權(quán)令牌的申請(qǐng)是客戶(hù)端服務(wù)器與授權(quán)服務(wù)器在后臺(tái)完成,整個(gè)過(guò)程用戶(hù)不可見(jiàn)。
(2)簡(jiǎn)化模式(implicit):簡(jiǎn)化模式下客戶(hù)端運(yùn)行在用戶(hù)代理(user agent)中,用戶(hù)代理向授權(quán)服務(wù)器申請(qǐng)授權(quán)令牌(access token),所有工作都在用戶(hù)代理中完成,授權(quán)令牌對(duì)訪問(wèn)者具可見(jiàn)性。這種模式一般用于客戶(hù)端應(yīng)用程序。endprint
(3)密碼模式(resource owner password):OAuth2.0提供一種允許客戶(hù)端使用者持有用戶(hù)名與密碼作為訪問(wèn)許可來(lái)交換授權(quán)令牌(access token)。在這種模式下,要求用戶(hù)與客戶(hù)端之間具有很強(qiáng)的信任關(guān)系。
(4)客戶(hù)端模式(client credentials):是指客戶(hù)端自身向授權(quán)服務(wù)器申請(qǐng)授權(quán)令牌(access token)。這種模式中,用戶(hù)在客戶(hù)端注冊(cè)后,客戶(hù)端以自己的名義向資源服務(wù)器請(qǐng)求資源,授權(quán)服務(wù)器只驗(yàn)證客戶(hù)端身份而不驗(yàn)證用戶(hù)身份。通常適用于請(qǐng)求的資源數(shù)據(jù)與用戶(hù)無(wú)關(guān)(如網(wǎng)上的新聞),不涉及用戶(hù)登錄與授權(quán)。
3.3 OAuth2.0核心思路與流程
OAuth2.0授權(quán)協(xié)議提供在沒(méi)有資源所有者密碼的情況下,通過(guò)授權(quán)服務(wù)器頒發(fā)的授權(quán)令牌來(lái)訪問(wèn)用戶(hù)資源的方法。其基本思路在文獻(xiàn)[7]中進(jìn)行了描述??蛻?hù)端首先從資源擁有者獲取訪問(wèn)許可,使用獲得的訪問(wèn)許可交換授權(quán)令牌,通過(guò)向資源服務(wù)器出示授權(quán)令牌來(lái)訪問(wèn)受保護(hù)資源。OAuth在客戶(hù)端與資源服務(wù)器之間提供了一個(gè)抽象的授權(quán)層(authorization layer)對(duì)用戶(hù)與客戶(hù)端進(jìn)行分離,使資源服務(wù)器只關(guān)注單一的授權(quán)令牌。令牌與密碼不同,其具有資源擁有者賦予的權(quán)限作用域、時(shí)效期和其它信息。使用OAuth2.0流程[4]如圖1所示。
OAuth2.0認(rèn)證和授權(quán)流程如下:①資源擁有者(用戶(hù))訪問(wèn)第三方客戶(hù)端,客戶(hù)端引導(dǎo)用戶(hù)授予訪問(wèn)許可;②資源擁有者為客戶(hù)端授權(quán),給客戶(hù)端發(fā)送一個(gè)訪問(wèn)許可(authorization code);③客戶(hù)端使用收到的訪問(wèn)許可與自己的私有證書(shū),向授權(quán)服務(wù)器申請(qǐng)授權(quán)令牌;④授權(quán)服務(wù)器對(duì)客戶(hù)端身份與訪問(wèn)許可進(jìn)行認(rèn)證,并頒發(fā)授權(quán)令牌;⑤客戶(hù)端出示獲得的授權(quán)令牌,向資源服務(wù)器請(qǐng)求資源擁有者的受保護(hù)資源;⑥資源服務(wù)器確認(rèn)授權(quán)令牌的有效性,并對(duì)客戶(hù)端的資源訪問(wèn)請(qǐng)求做出響應(yīng)。
4 OAuth2.0應(yīng)用
在OAuth2.0授權(quán)協(xié)議體系中,授權(quán)服務(wù)器起著至關(guān)重要的作用,它既是用戶(hù)身份的認(rèn)證者又是授權(quán)的頒發(fā)者,既控制著認(rèn)證又控制著授權(quán)。目前高校基本已完成包括統(tǒng)一身份認(rèn)證平臺(tái)在內(nèi)的三大平臺(tái)建設(shè),為服務(wù)平臺(tái)建立獨(dú)立的身份認(rèn)證體系顯然不合適。為此,可將認(rèn)證和授權(quán)設(shè)計(jì)為兩個(gè)獨(dú)立體系。授權(quán)服務(wù)器向統(tǒng)一身份認(rèn)證平臺(tái)發(fā)起認(rèn)證請(qǐng)求,當(dāng)認(rèn)證通過(guò)時(shí)再頒發(fā)授權(quán)令牌給客戶(hù)端使用。資源服務(wù)器與授權(quán)服務(wù)器邏輯上是分離的,但為有效減少I(mǎi)O成本,提高訪問(wèn)效率,事實(shí)上往往是資源服務(wù)器與授權(quán)服務(wù)器處于同一臺(tái)服務(wù)器上。高校業(yè)務(wù)領(lǐng)域廣,涉及系統(tǒng)多,應(yīng)將資源服務(wù)器從授權(quán)服務(wù)器上分離并進(jìn)行合理規(guī)劃,將服務(wù)集群與授權(quán)服務(wù)器對(duì)接。高校開(kāi)放性服務(wù)平臺(tái)模型如圖2所示。
5 結(jié)語(yǔ)
在信息技術(shù)、互聯(lián)網(wǎng)技術(shù)飛速發(fā)展的今天,開(kāi)放平臺(tái)成為互聯(lián)網(wǎng)資源開(kāi)放的一大發(fā)展趨勢(shì),OAuth2.0協(xié)議為開(kāi)放平臺(tái)中用戶(hù)資源授權(quán)與身份驗(yàn)證問(wèn)題提供了一個(gè)安全、開(kāi)放、簡(jiǎn)易的標(biāo)準(zhǔn)。本文基于OAuth2.0協(xié)議,結(jié)合高校信息化環(huán)境,對(duì)開(kāi)放性服務(wù)平臺(tái)的構(gòu)建進(jìn)行了分析研究,對(duì)高校開(kāi)放服務(wù)平臺(tái)建設(shè)提供了一種有效的實(shí)現(xiàn)方案。
參考文獻(xiàn):
[1]錢(qián)丹浩.項(xiàng)目化嵌入式教學(xué)的開(kāi)發(fā)系統(tǒng)平臺(tái)構(gòu)建[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2010(11) : 22-35.
[2]羅潔.網(wǎng)絡(luò)開(kāi)放平臺(tái)用戶(hù)隱私權(quán)的風(fēng)險(xiǎn)防范研究[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]盧慧鋒,趙文濤,孫志峰,等.社會(huì)化網(wǎng)絡(luò)服務(wù)中OAuth2.0的應(yīng)用研究與實(shí)現(xiàn)[J]. 計(jì)算機(jī)應(yīng)用,2014,34(S1):50-54.endprint