范 迪,朱志祥
(西安郵電大學 物聯網與兩化融合研究院,陜西 西安 710061)
一種Dubbo框架的授權認證方案
范 迪,朱志祥
(西安郵電大學 物聯網與兩化融合研究院,陜西 西安 710061)
為增強Dubbo分布式服務框架的訪問安全性,避免服務消費過程中出現消費混亂或者數據被盜取的情況,將安全授權碼應用到服務注冊以及服務消費過程中,提出了一種新的訪問控制方案。在Dubbo中引入授權認證中心,通過授權認證中心對服務提供方和服務消費方下發訪問授權碼,在服務注冊階段對服務提供者進行身份驗證,服務提供者在服務被消費階段對服務消費者進行身份驗證,保證了數據交換過程中數據訪問的安全性,有效地進行服務注冊與服務消費的訪問控制。授權認證中心同時依賴Dubbo構建成為分布式服務,與Dubbo框架本身進行深度融合,可以支撐高并發的授權碼認證請求。該方案在Dubbo中增加授權認證中心,通過該模塊下發和管理授權碼,能夠對注冊授權和消費授權進行靈活管控,為Dubbo注冊中心與服務提供方提供了更安全的訪問控制,從而達到保護數據的目的。
Dubbo;授權認證;分布式服務框架;訪問控制
隨著互聯網的發展,網站應用的規模不斷擴大,分布式服務架構以及流動計算架構勢在必行[1]。Dubbo是一個分布式服務框架以及SOA治理方案,致力于提供高性能和透明化的RPC遠程服務調用方案,是阿里巴巴SOA服務化治理方案的核心框架,每天為2 000+個服務提供3 000 000 000+次訪問量支持,并廣泛應用于阿里巴巴集團的各成員站點。Dubbo自開源后已經被很多非阿里系公司使用[2-3]。
數據作為信息時代最重要的資產[4],在互聯網時代也被作為商品進行消費,所以在跨行業、跨部門之間建設數據交換共享服務,將本行業數據作為一種商品提供給需要的行業部門,減少因重復建設造成的社會資源浪費,通過優勢資源為自身服務并節省成本,集中精力提高自身核心競爭力,必然是互聯網社會分工的趨勢[5-6]。利用Dubbo分布式服務框架構建大型數據交換平臺,不僅能夠簡化應用系統開發,而且可以靈活擴展服務,是建設數據交換中心的一種可行方案。由于Dubbo分布式服務框架的服務治理功能依賴于服務注冊中心[7-8],而服務注冊中心并沒有對服務注冊過程進行嚴格的身份驗證,同時,服務消費過程是消費者對提供者的直接訪問,而提供者也沒有對消費者身份進行驗證,因此對于數據交換來說,造成了很大的安全隱患。
授權認證方案通過引入授權認證中心模塊進行服務支持,為利用Dubbo分布式服務框架構建的數據交換平臺提供一種訪問控制方法,對服務注冊和服務消費進行嚴格的身份認證和訪問控制。
系統在Dubbo框架中引入管理中心、授權認證中心兩個新模塊,結合框架原有的注冊中心、服務提供者、服務消費者共同構成完整的系統[9-10],系統架構如圖1所示。

圖1 系統整體架構
管理中心整合了授權認證中心和注冊中心的功能,實現服務目錄和服務治理的功能。授權認證中心包括兩部分工作:根據服務名生成授權碼,通過授權碼對服務進行授權,授權包括服務注冊授權和服務消費授權;驗證提供授權碼的服務身份,通過對授權碼進行多項驗證,檢查發起請求的服務是否經過授權。系統要求注冊中心和服務提供者在響應服務之前向授權認證中心驗證請求中攜帶的授權碼信息。
授權認證中心采用AppId(應用標識)和SecretKey(訪問密鑰)作為一組授權碼進行授權[11],授權碼除了有啟用和禁用的狀態限制外,還有使用次數和有效時間作為限制。使用次數和有效時間是管理中心對服務進行授權時指定的,和狀態限制一樣可以動態修改[12]。
授權和認證涉及兩個過程:服務注冊和服務消費。服務注冊是服務消費的前提,注冊到注冊中心的服務會通過管理中心同步到服務目錄中,服務消費者才可以在服務目錄中進行申請開通服務,開通服務后可對服務進行消費。
服務注冊授權認證過程如圖2所示。

圖2 服務注冊授權認證流程
服務提供者首先需在管理中心申請注冊服務,管理中心會對服務申請進行審核授權,若通過審核,則向授權認證中心請求授權碼,授權認證中心生成授權碼,返回給管理中心,由管理中心下發授權碼給服務提供者,此時提供者可攜帶該授權碼向注冊中心請求注冊服務,注冊中心向授權認證中心驗證此授權碼是否合法。服務注冊授權不涉及調用次數和有效時間的限制,只受狀態碼的影響。注冊驗證過程如下:
(1)注冊中心接收到服務提供者的注冊請求,獲取請求中攜帶的授權碼信息,向授權認證中心發起注冊認證請求;
(2)授權認證中心接收到注冊驗證請求,根據AppId查詢授權碼是否存在,若不存在,返回failed信息,錯誤描述信息為“授權碼信息不存在,請向管理中心申請注冊授權碼”;
(3)驗證授權碼SecretKey,SecretKey不匹配時返回failed信息,錯誤描述信息為“授權碼錯誤”,SecretKey驗證匹配繼續下一步認證;
(4)檢查授權碼狀態,狀態為“禁用”時返回failed信息,錯誤描述信息為“授權碼已被禁用”,狀態為“啟用”時返回success信息,成功描述信息為“身份認證通過”;
(5)注冊中心根據授權認證中心的返回信息進行下一步處理,注冊驗證通過則將服務注冊到注冊中心,注冊驗證失敗直接向服務提供者返回注冊失敗信息。
服務消費授權認證過程如圖3所示。
服務消費者首先需向管理中心申請開通服務。與服務注冊不同,服務消費者需要在服務目錄中對需開通的服務進行申請,由管理中心進行審核,審核通過后向服務消費者下發對應需要開通服務的授權碼(AppId和SecretKey),服務消費者調用服務時需要向服務提供者提供服務授權碼,提供者接收到消費者的請求后先對授權碼進行驗證,由提供者向授權認證中心發起身份驗證請求,驗證通過后再對請求進行服務響應,每成功響應一次,需要向授權認證中心反饋調用結果,對服務調用次數加1。服務過程如下:

圖3 服務消費授權認證流程
(1)服務提供者接收到服務消費者的消費請求,從消費請求中獲取消費授權碼,并向授權認證中心發起消費認證請求;
(2)授權認證中心接收到消費認證請求,首先對發起請求的服務提供者狀態進行驗證,如果服務提供者已被管理中心禁用,則返回failed信息,錯誤描述信息為“服務提供者已被禁用”,如果服務提供者狀態正常,則繼續下一步認證;
(3)根據AppId查詢授權碼是否存在,若不存在,返回failed信息,錯誤描述信息為“授權碼信息不存在,請向管理中心申請消費授權碼”;
(4)驗證授權碼SecretKey,SecretKey不匹配時返回failed信息,錯誤描述信息為“授權碼錯誤”,SecretKey驗證匹配則繼續下一步認證;
(5)檢查授權碼狀態,當狀態為“禁用”時返回failed信息,錯誤描述信息為“授權碼已被禁用”,當狀態為“啟用”時繼續下一步認證;
(6)驗證授權碼有效時間,若超出有效時間則返回failed信息,錯誤描述信息為“授權碼已超出有效時間”,若在有效期內,則繼續下一步認證;
(7)驗證授權碼調用次數,若達到指定的調用次數時返回failed信息,錯誤描述信息為“授權碼調用次數已達到上限”,若未達到指定的調用次數,則返回success信息,成功描述信息為“身份認證通過”;
(8)服務提供者根據授權認證中心的反饋進行服務響應,若認證失敗,直接返回認證失敗信息,若認證通過,則執行對應的服務代碼進行服務響應;
(9)服務響應完成后,向授權認證中心發起消費者調用次數更新請求,將調用次數加1。
通過對服務注冊和服務消費兩個過程的授權碼生成并下發和授權碼認證進行實驗,先通過管理中心向授權認證中心為服務提供者請求生成一對注冊授權碼,由服務提供者攜帶注冊授權碼向注冊中心進行服務注冊。注冊過程會對授權碼進行三個階段驗證,驗證參數與結果如下:
生成的注冊授權碼:
AppId:
32a04c86f200480396a0d5a9b0257714
SecretKey:
14f6a61132134de2b210801a5ef6e
驗證1參數條件,AppId錯誤,SecretKey正確,狀態啟用。
AppId:
5ceaad9bba9143afad9f4b2450a30d52
SecretKey:
14f6a61132134de2b210801a5ef6e
返回值:{“status”:“failed”,“message”:“授權碼信息不存在,請向管理中心申請注冊授權碼”}。
驗證2參數條件,AppId正確,SecretKey錯誤,狀態啟用。
AppId:
32a04c86f200480396a0d5a9b0257714
SecretKey:
779eb55b9a154442bba8b0d8f87e7
返回值:{“status”:“failed”,“message”:“授權碼錯誤”}。
驗證3參數條件,AppId正確,SecretKey正確,狀態禁用。
AppId:
5ceaad9bba9143afad9f4b2450a30d52
SecretKey:
14f6a61132134de2b210801a5ef6e
返回值:{“status”:“failed”,“message”:“授權碼已被禁用”}。
驗證4參數條件,AppId正確,SecretKey正確,狀態啟用。
AppId:
5ceaad9bba9143afad9f4b2450a30d52
SecretKey:
14f6a61132134de2b210801a5ef6e
返回值:{“status”:“success”,“message”:“身份認證通過”}。
服務提供者注冊成功后,服務消費者在服務目錄中對已上線的服務進行申請開通,由管理中心向授權認證中心請求消費授權碼并下發給服務消費者,服務消費者攜帶消費授權碼向服務提供者進行服務請求。服務消費過程會對授權碼進行六個階段驗證,驗證結果如下:
生成的消費授權碼:
AppId:
f9c4cc018be648d2a68247dfcc3a1de0
SecretKey:
da2647f54c04aeb8244bc5333b29e1b
驗證1參數條件,服務提供者被禁用,AppId正確,SecretKey正確,狀態啟用,調用次數未達到限制,未過期。
AppId:
f9c4cc018be648d2a68247dfcc3a1de0
SecretKey:
da2647f54c04aeb8244bc5333b29e1b
返回值:{“status”:“failed”,“message”:“服務提供者已被禁用”}。
驗證2參數條件,服務提供者被啟用,AppId錯誤,SecretKey正確,狀態啟用,調用次數未達到限制,未過期。
AppId:
3b7375625daa47d6a609413b29f1328d
SecretKey:
da2647f54c04aeb8244bc5333b29e1b
返回值:{“status”:“failed”,“message”:“授權碼信息不存在,請向管理中心申請注冊授權碼”}。
驗證3參數條件,服務提供者被啟用,AppId正確,SecretKey錯誤,狀態啟用,未過期,調用次數未達到限制。
AppId:
f9c4cc018be648d2a68247dfcc3a1de0
SecretKey:
a3191d1c17bd4bba8fad8f5452917
返回值:{“status”:“failed”,“message”:“授權碼錯誤”}。
驗證4參數條件,服務提供者被啟用,AppId正確,SecretKey正確,狀態禁用,未過期,調用次數未達到限制。
AppId:
f9c4cc018be648d2a68247dfcc3a1de0
SecretKey:
da2647f54c04aeb8244bc5333b29e1b
返回值:{“status”:“failed”,“message”:“授權碼已被禁用”}。
驗證5參數條件,服務提供者被啟用,AppId正確,SecretKey正確,狀態啟用,已過期,調用次數未達到限制。
AppId:
f9c4cc018be648d2a68247dfcc3a1de0
SecretKey:
da2647f54c04aeb8244bc5333b29e1b
返回值:{“status”:“failed”,“message”:“授權碼已超出有效時間”}。
驗證6參數條件,服務提供者被啟用,AppId正確,SecretKey正確,狀態啟用,未過期,調用次數達到限制。
AppId:
f9c4cc018be648d2a68247dfcc3a1de0
SecretKey:
da2647f54c04aeb8244bc5333b29e1b
返回值:{“status”:“failed”,“message”:“授權碼調用次數已達到上限”}。
驗證7參數條件,服務提供者被啟用,AppId正確,SecretKey正確,狀態啟用,未過期,調用次數未達到限制。
AppId:
f9c4cc018be648d2a68247dfcc3a1de0
SecretKey:
da2647f54c04aeb8244bc5333b29e1b
返回值:{“status”:“success”,“message”:”“身份認證通過”}。
授權認證中心能夠對服務注冊和服務消費生成對應的授權碼,并在授權碼驗證過程中對可能出現的各種情況進行正確的判斷并返回準確的驗證信息。
在Dubbo中引入授權認證中心,能夠對服務提供者在分布式應用中進行接入控制,同時對服務消費過程進行權限控制,有效保護服務提供者的資源并對消費者行為進行合理的統計和控制。
[1] Yanjun.Dubbo架構設計詳解[EB/OL].(2013-09-03)[2016-11-03].http://shiyanjun.cn/archives/325.html.
[2] 丁振凡.Spring REST風格Web服務的Json消息封裝及解析研究[J].智能計算機與應用,2012,2(2):9-10.
[3] 王元卓,靳小龍,程學旗.網絡大數據:現狀與展望[J].計算機學報,2013,36(6):1125-1138.
[4] 王 濤.數據共享與數據交換系統的設計與實現[D].大連:大連理工大學,2015.
[5] 曾 一,袁 綱,張元平,等.基于Web服務的電子政務數據交換中心的設計和實現[J].計算機科學,2007,34(11):98-102.
[6] Sheu R K,Yuan S M,Lo W T.MEDEA-a model for the event-based data exchange architecture[C]//Proceedings of the seventh international conference on parallel and distributed systems.Washington,DC:IEEE,2000:88.
[7] 時子慶,劉金蘭,譚曉華.基于OAuth2.0的認證授權技術[J].計算機系統應用,2012,21(3):260-264.
[8] 王力猛,陳 鵬,楊小軍.OAuth2.0協議認證授權實現方案研究[J].電腦編程技巧與維護,2015(10):21-22.
[9] Sprott D,Wilkes L.Understanding service-oriented architecture,CBDI[EB/OL].2004.http://www.microsoft.com/china/MSDN/library/architecture/.
[10] Carey P F,Gleason B W.Solving the integration issue-service-oriented architecture[EB/OL].2006.http://www.zdnet.co.uk/tsearch/Service-Oriented+Architecture.htm.
[11] 史 新,喬曉東,張志平,等.漢語科技詞系統的Web服務研究與實現[J].現代圖書情報技術,2008(12):37-42.
[12] Barry D K.Service-oriented architecture (SOA) definition[EB/OL].2011-01-28.http://www.service-architecture.com/web-services/articles/service-oriented_architecture_soa_definition.html.
AnAuthorizationAuthenticationSchemeforDubboFramework
FAN Di,ZHU Zhi-xiang
(Institute of IOT & IT-based Industrialization,Xi’an University of Posts and Telecommunications,Xi’an 710061,China)
In order to enhance the access security of Dubbo distributed service framework and avoid the circumstances of consumption confusion or data to be stolen in service consumption,the security authorization code is applies to service registration and service consumption and a new scheme of access control is proposed.Through the introduction of the authorized authentication center in Dubbo,the service provider and the consumer side can be issued security authorization code.According to that,service provider is authenticated in service registration and service consumer is authenticated by service provider in service consumption,which make sure the safety of data access in the process of data exchange,efficient access control of service registration and service consumption.In the meantime,the authorized authentication center establishes the distributed service by Dubbo and highly combines with Dubbo,which can support authentication request of authorization code with high concurrency.It adds the authorized authentication center in Dubbo to send and manage the authorization code which can conduct flexible control for registration authorization and consumption authorization,providing the safer access control for Dubbo registration center and service provider and reaching the purpose of data protection.
Dubbo;authorization authentication;distributed service framework;access control
2016-11-20
2017-03-15 < class="emphasis_bold">網絡出版時間
時間:2017-07-19
基于大數據的陜西省政府和社會信息資源開放共享策略研究項目(2016KRM047);陜西省科技統籌創新工程計劃項目(2016KTTSGY01-01)。
范 迪(1993-),女,碩士,研究方向為大數據處理與高性能計算;朱志祥,教授,博士,研究方向為信息安全。
http://kns.cnki.net/kcms/detail/61.1450.TP.20170719.1112.078.html
TP311.1
A
1673-629X(2017)11-0115-04
10.3969/j.issn.1673-629X.2017.11.025