龍 輝
(四川省科學(xué)技術(shù)信息研究所,四川 成都 610016)
目前科研項(xiàng)目管理體系內(nèi)存在不同級(jí)別、不同類型的科研項(xiàng)目管理系統(tǒng),分別由不同的開發(fā)單位獨(dú)自建設(shè),因此科研人員需要記憶并管理大量不同網(wǎng)站的賬號(hào)和密碼,且每次訪問不同的子系統(tǒng)都需要重新輸入、切換登錄用戶。這一傳統(tǒng)過程極大浪費(fèi)了科研人員的工作時(shí)間和精力。通過研究并設(shè)計(jì)一套基于 OAuth2.0的統(tǒng)一身份認(rèn)證系統(tǒng),實(shí)現(xiàn)科研體系內(nèi)部多個(gè)子系統(tǒng)間的互信互訪,幫助科研人員簡(jiǎn)便、高效地實(shí)現(xiàn)科研項(xiàng)目的研究與管理,極大地提高科研效率,節(jié)約人力成本,推進(jìn)技術(shù)創(chuàng)新。
OAuth2.0(全稱為Open Authorization 2.0)協(xié)議作為一個(gè)開放授權(quán)標(biāo)準(zhǔn)草案,能很好地解決開放平臺(tái)中的安全授權(quán)和資源共享問題,通過在第三方應(yīng)用與服務(wù)提供商之間設(shè)置授權(quán)層,將用戶與客戶端區(qū)安全分離。用戶無需暴露賬號(hào)密碼,只需要在授權(quán)的時(shí)候指定授權(quán)層令牌的權(quán)限范圍和有效期,服務(wù)提供商根據(jù)此范圍和有效期,向第三方應(yīng)用開放用戶資源。
該協(xié)議的基本原理[1]見圖1。
圖1 基本原理Fig.1 basic theory
如圖1所示,OAuth2.0的基本工作流程是:
(1)當(dāng)用戶打開第三方應(yīng)用后,客戶端要求用戶給予授權(quán);
(2)用戶同意授權(quán);
(3)第三方應(yīng)用客戶端使用上一步獲得的授權(quán),向認(rèn)證服務(wù)器申請(qǐng)令牌;
(4)認(rèn)證服務(wù)器對(duì)第三方應(yīng)用進(jìn)行認(rèn)證以后,確認(rèn)無誤,同意發(fā)放令牌;
(5)第三方應(yīng)用使用令牌向資源服務(wù)器請(qǐng)求獲取受保護(hù)的資源;
(6)資源服務(wù)器確認(rèn)令牌,同意向第三方應(yīng)用開放訪問權(quán)限。
OAuth2.0雖然被認(rèn)為是OAuth1.0的延續(xù)[2],但兩個(gè)版本的協(xié)議并不能相互兼容,2.0針對(duì)1.0的各種問題提供了解決方法,且2.0版本更關(guān)注考慮第三方開發(fā)者的簡(jiǎn)易性,具有更大的優(yōu)勢(shì)[3-7]:
(1)OAuth2.0為第三方應(yīng)用獲取授權(quán)提供了更多的模式,各個(gè)客戶端可按照實(shí)際情況選擇不同的流程來獲取授權(quán)令牌。這樣就擴(kuò)大了第三方應(yīng)用的接入范圍,也解決了拓展性的問題;
(2)OAuth2.0刪除了繁瑣的加密算法,通過https傳輸對(duì)認(rèn)證的安全性提供保障;
(3)OAuth2.0通過引入授權(quán)服務(wù)器,使得認(rèn)證流程只有2步:第三方應(yīng)用在資源服務(wù)器處獲得認(rèn)證碼,然后向授權(quán)服務(wù)器申請(qǐng)Access Token,這減輕了開發(fā)者的負(fù)擔(dān);
(4)OAuth2.0提出了授權(quán)令牌的更新方案,第三方應(yīng)用在獲取令牌的同時(shí)也獲取 refresh_token,一般來說令牌是有過期時(shí)間的,而refresh_token的過期時(shí)間較長(zhǎng),這樣便能隨時(shí)通過refresh_token對(duì)access_token進(jìn)行更新。
1、功能:用戶在服務(wù)端登錄頁(yè)面登錄并授權(quán)后,向資源服務(wù)器請(qǐng)求令牌。
2、API接口:
/authorize?response_type=
其中,response_type為授權(quán)方式,client_id為客戶端ID,state為授權(quán)安全隨機(jī)碼。
3、返回值:返回結(jié)果為如下Json格式:
1、功能:本接口可獲取科研用戶及專家的賬號(hào)信息。
2、API接口:
1、功能:本接口可以獲取科研人員關(guān)聯(lián)的單位或公司信息。
2、API接口:
基于 OAuth2.0協(xié)議在科研項(xiàng)目管理體系中為不同異構(gòu)子系統(tǒng)之間營(yíng)造一個(gè)安全的信息傳遞環(huán)境[8],并向用戶提供可靠的認(rèn)證和授權(quán)方式[9],有效解決了大型科研項(xiàng)目管理服務(wù)體系中各個(gè)子系統(tǒng)間資源共享的難題,簡(jiǎn)化了程序設(shè)計(jì),改善了各系統(tǒng)間的兼容性,提高了平臺(tái)的總體性能[10]。目前,該統(tǒng)一用戶認(rèn)證授權(quán)接口系統(tǒng)已在四川省科研項(xiàng)目管理平臺(tái)和科技報(bào)告呈交共享系統(tǒng)之間得到應(yīng)用,經(jīng)過實(shí)際運(yùn)行證明其設(shè)計(jì)思想是正確和可行的,為今后類似系統(tǒng)的設(shè)計(jì)開發(fā)提供了借鑒和參考。