[0040]所述第一實體類的第一屬性使用線程安全的原子類型作為數(shù)據(jù)類型,用于存放該用戶前一次接口訪問請求的時間戳,第二屬性用于存放系統(tǒng)中預設(shè)的訪問間隔時間閾值;
[0041]所述第二實體類的第一屬性使用線程安全的原子類型作為數(shù)據(jù)類型,用于存放該用戶當前剩余的訪問次數(shù)配額值,第二屬性用于存放系統(tǒng)中預設(shè)的訪問次數(shù)配額,并通過定時器定時將第一屬性的值置為第二屬性的值。
[0042]本發(fā)明從用戶組及用戶兩個級別上,使用訪問間隔時間及訪問頻率兩種控制方式,結(jié)合用戶身份認證及安全地址列表多種安全機制,通過可動態(tài)更新的控制參數(shù),實現(xiàn)動態(tài)的細粒度的分布式接口訪問控制,從而增強了分布式接口的安全性,減輕了分布式接口服務(wù)器的負載,多種可配置的接口訪問控制方式的提高了系統(tǒng)安全控制的靈活性。
【附圖說明】
[0043]圖1為本發(fā)明一實施例提供的細粒度分布式接口訪問控制方法步驟流程;
[0044]圖2為本發(fā)明一實施例提供的細粒度分布式接口訪問控制裝置所處設(shè)備的結(jié)構(gòu)示意圖。
【具體實施方式】
[0045]為了滿足開放、融合的需求,現(xiàn)有的WEB服務(wù)平臺通常會向第三方軟件平臺開放分布式標準協(xié)議接口,大型的應(yīng)用系統(tǒng)的不同業(yè)務(wù)子系統(tǒng)之間也需要頻繁的通過內(nèi)部的WEB接口進行業(yè)務(wù)數(shù)據(jù)的共享交互,然而接口的開放意味著WEB服務(wù)更容易受到安全方面的威脅。為了防止Web服務(wù)被非法地訪問以及惡意的調(diào)用,會對訪問的用戶進行用戶認證,以及針對訪問者的源地址進行防Dos攻擊處理,然而,這些解決手段都是粗粒度的防范控制手段,不能對不同用戶的訪問行為進行細粒度的控制,特殊情況下,例如對于通過認證的“惡意”用戶不能進行有效的防范。
[0046]為了解決這樣的問題,本發(fā)明提出了一種細粒度分布式接口訪問控制方法,該方法通過訪問間隔時間、周期內(nèi)訪問次數(shù)、安全地址列表等多種手段,基于用戶組及用戶兩個層次對用戶的分布式接口訪問請求進行控制,以實現(xiàn)細粒度的分布式接口訪問控制。
[0047]圖1示例了采用本發(fā)明一實施例提供的細粒度分布式接口訪問控制方法進行用戶訪問控制的步驟流程,在執(zhí)行本發(fā)明提供的方法之前,需要首先在分布式接口所屬的業(yè)務(wù)系統(tǒng)的數(shù)據(jù)庫中設(shè)置用戶及用戶組的訪問間隔時間閾值、周期內(nèi)訪問次數(shù)配額等配置參數(shù),該實施例具體包括如下步驟:
[0048]步驟100、接收到用戶發(fā)送的接口訪問請求后,判斷該用戶的本次接口訪問請求與前一次接口訪問請求的時間間隔是否小于預設(shè)的訪問間隔時間閾值,若小于則執(zhí)行步驟180,否則執(zhí)行步驟120。
[0049]本發(fā)明實施例設(shè)置訪問間隔時間閾值的目的是控制由同一用戶發(fā)起的接口訪問請求的頻率,當接收到兩次接口訪問請求的時間間隔小于預設(shè)的訪問間隔時間閾值時,則攔截后一次的訪問請求,只有當相鄰兩次的接口訪問請求發(fā)起間隔時間大于等于該閾值時,后一次的訪問請求才被允許。管理人員可根據(jù)用戶與接口之間交互的實際需求,接口的負載情況等因素對該預設(shè)參數(shù)進行調(diào)整。
[0050]為進一步保證安全性,本發(fā)明一實施例在執(zhí)行該步驟之前,還包括對用戶進行認證的步驟,即在接收到用戶發(fā)送的接口訪問請求時,首先從請求中獲取用于用戶身份認證的信息,對用戶身份進行合法性驗證,只有通過用戶身份認證的接口訪問請求才可以進一步執(zhí)行后續(xù)步驟,未通過用戶身份認證的接口訪問請求會被攔截,并向用戶返回認證失敗信息。
[0051]為進一步保證安全性,本發(fā)明一實施例在執(zhí)行該步驟之前,還結(jié)合安全地址列表對接口訪問請求的源地址進行訪問控制,當請求報文的源地址為安全地址列表中的地址時直接放行,若不在安全地址列表內(nèi),則執(zhí)行后續(xù)步驟,對接口訪問請求進行訪問控制。
[0052]為了從更細的粒度上對接口訪問請求進行控制,本發(fā)明一具體實施例將所述訪問間隔時間閾值進一步分為用戶組訪問間隔時間閾值和單用戶訪問間隔時間閾值,并分成兩級進行判斷,首先判斷該用戶本次請求與前一次的請求的時間間隔是否小于該用戶所屬用戶組的訪問間隔時間閾值,若不小于再判斷該用戶本次請求與前一次的請求的時間間隔是否小于該用戶對應(yīng)的單用戶訪問間隔時間閾值,若不小于則執(zhí)行后續(xù)控制步驟,若兩次請求的間隔時間小于用戶組訪問間隔時間閾值或小于用戶訪問間隔時間閾值,則攔截后一次的接口訪問請求。
[0053]通過上述的兩級訪問間隔時間閾值的判斷步驟,可以實現(xiàn)針對用戶組及用戶的細粒度的接口訪問控制,使接口訪問控制可以精確到用戶組和單個的用戶,例如,創(chuàng)建用戶的時,可將用戶分配到指定的用戶組,并針對用戶組設(shè)定接口訪問間隔時間閾值,用戶默認自動繼承用戶組的接口訪問控制策略,若未設(shè)定針對單用戶的訪問間隔時間閾值,則只需要執(zhí)行針對用戶組的訪問間隔時間閾值的控制策略,若設(shè)定了針對單用戶的訪問間隔時間閾值,則需要執(zhí)行針對用戶組及針對單用戶的兩級訪問間隔時間閾值的控制策略。
[0054]步驟120、判斷在預設(shè)的周期內(nèi)與該用戶相關(guān)的接口訪問次數(shù)配額是否使用完,若使用完則執(zhí)彳丁步驟180,右未使用完則執(zhí)彳丁步驟130 ;
[0055]本發(fā)明實施例設(shè)置與用戶相關(guān)的接口訪問次數(shù)配額的目的是控制預設(shè)周期時間內(nèi)與同一用戶相關(guān)的接口訪問次數(shù),當在當前的周期內(nèi)與同一用戶相關(guān)的接口訪問次數(shù)配額被用完后,則該周期內(nèi)剩余時間內(nèi)接收到的接口訪問請求將被攔截。通過周期內(nèi)次數(shù)配額控制可以防止接口受到飽和攻擊。
[0056]為了更進一步,從更細的粒度上對接口訪問請求進行控制,本發(fā)明一具體實施例將所述與用戶相關(guān)的接口訪問次數(shù)配額分為用戶組訪問次數(shù)配額和單用戶訪問次數(shù)配額,并分成兩級進行判斷。首先判斷在當前周期內(nèi)用戶組訪問次數(shù)配額是否用完,若未用完再判斷在當前周期內(nèi)單用戶訪問次數(shù)配額是否用完,當用戶組訪問次數(shù)配額或單用戶訪問次數(shù)配額用完時,攔截本次接口訪問請求。用戶組訪問次數(shù)配額是指預設(shè)周期內(nèi)發(fā)送接口訪問請求的用戶所屬用戶組的接口訪問次數(shù)配額,單用戶訪問次數(shù)配額指預設(shè)周期內(nèi)針對單個用戶設(shè)置的接口訪問次數(shù)配額。通過用戶組訪問次數(shù)配額可實現(xiàn)對一組用戶進行周期內(nèi)訪問次數(shù)的控制,通過單用戶訪問次數(shù)配額可實現(xiàn)對單個用戶進行周期內(nèi)訪問次數(shù)的控制。
[0057]本發(fā)明一具體實施例中,通過設(shè)定定時器的方式在每個用戶組和每個用戶的周期時間到時,根據(jù)相應(yīng)預設(shè)的訪問次數(shù)配額重置用戶組訪問次數(shù)配額及單用戶訪問次數(shù)配額。
[0058]步驟130、對該接口訪問請求進行處理,記錄接收到該用戶本次接口訪問請求的時間戳,執(zhí)行與該用戶相關(guān)的接口訪問次數(shù)配額的遞減操作,對接口的訪問控制流程結(jié)束。
[0059]步驟180、攔截該用戶本次對接口的訪問請求,向發(fā)送接口訪問請求的用戶反饋錯誤提示消息,并在返回消息頭和消息體中給出相應(yīng)的錯誤碼和錯誤提示信息,對接口的訪問控制流程結(jié)束。
[0060]本發(fā)明一具體實施例中,訪問間隔時間閾值及訪問次數(shù)配額存放于數(shù)據(jù)庫中,可通過數(shù)據(jù)庫接口即時更改用戶和用戶組的訪問間隔時間閾值及訪問次數(shù)配額??紤]到實際應(yīng)用時會出現(xiàn)大量用戶并發(fā)訪問的場景,如果在執(zhí)行訪問控制操作時從