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