權限數據的驗證方法、裝置及系統的制作方法
【專利摘要】本申請公開了一種權限數據的驗證方法、裝置及系統。其中,該方法包括:應用服務器接收客戶端的權限數據訪問信息;根據關鍵字生成規則對權限數據訪問信息進行處理,以生成權限驗證關鍵字;將權限驗證關鍵字發送至公共緩存服務器進行驗證,以獲取權限驗證關鍵字所對應的驗證結果,其中,在公共緩存服務器成功返回驗證結果的情況下,將驗證結果返回至客戶端;在公共緩存服務器未成功返回驗證結果的情況下,通過遠程調用接口訪問權限服務器,權限服務器根據接收到的權限驗證關鍵字來查詢得到對應的驗證結果。通過本申請,能夠實現了在權限服務器發生故障時,依舊可以保證應用服務器上的權限服務可用,不影響供應鏈系統集群可用性。
【專利說明】權限數據的驗證方法、裝置及系統
【技術領域】
[0001]本申請涉及權限驗證領域,具體而言,涉及一種權限數據的驗證方法、裝置及系統。
【背景技術】
[0002]目前的供應鏈系統業務比較復雜,在多個業務系統之間進行協作的過程中需要統一的權限控制,如圖1所示的系統架構,現有技術通常利用分布式的權限服務器系統,權限服務器以服務化的方式為其他系統提供統一的權限校驗服務。
[0003]具體的,圖1描述了供應鏈系統集群使用公共權限服務的場景,該場景使用了分布式架構,權限服務器提供權限驗證的遠程服務,其他應用服務器都會通過遠程服務接口調用該權限服務器提供的服務,使得系統集群的整體架構更加服務化,但分布式本身會受到網絡等因素影響,難以保證服務的完全可用性,如果是權限服務器發生故障,就會導致整個系統集群的其他應用系統也變得不可用,故障范圍會擴大,損失也會增加。因此,一旦權限服務器發生故障不可用,所有接入權限服務器中心的應用服務器都將受到影響,會直接導致應用服務器上的應用頁面不可訪問,以及權限控制失效等嚴重問題。
[0004]由此可知,目前針對相關技術的由于權限服務器發生故障不可用,導致使用該權限服務器的應用服務器上的權限驗證不可用,從而應用界面無法訪問的問題,目前尚未提出有效的解決方案。
【發明內容】
[0005]針對相關技術的由于權限服務器發生故障不可用,導致使用該權限服務器的應用服務器上的權限驗證不可用,從而應用界面無法訪問的問題,目前尚未提出有效的解決方案,為此,本申請的主要目的在于提供一種權限數據的驗證方法、裝置及系統,以解決上述問題。
[0006]為了實現上述目的,根據本申請的一個方面,提供了一種權限數據的驗證方法,該方法包括:應用服務器接收客戶端的權限數據訪問信息;應用服務器根據關鍵字生成規則對權限數據訪問信息進行處理,以生成權限驗證關鍵字;應用服務器將權限驗證關鍵字發送至公共緩存服務器進行驗證,以獲取權限驗證關鍵字所對應的驗證結果,其中,當公共緩存服務器成功返回驗證結果的情況下,應用服務器將驗證結果返回至客戶端;當公共緩存服務器未成功返回驗證結果的情況下,應用服務器通過遠程調用接口訪問權限服務器,權限服務器根據接收到的權限驗證關鍵字來查詢得到對應的驗證結果。
[0007]進一步地,在應用服務器將權限驗證關鍵字發送至公共緩存服務器進行驗證之前,方法還包括:應用服務器攔截用于連接權限服務器的遠程調用接口,并與公共緩存服務器建立通訊連接。
[0008]進一步地,在權限服務器根據接收到的權限驗證關鍵字來查詢得到對應的驗證結果之后,方法還包括:權限服務器將權限驗證關鍵字和驗證結果進行結合,得到權限驗證緩存記錄;權限服務器將權限驗證緩存記錄同步到公共緩存服務器。
[0009]進一步地,權限驗證關鍵字包括用戶標識、應用標識和請求標識,其中,在權限服務器將權限驗證緩存記錄同步到公共緩存服務器之后,方法還包括:權限服務器創建關鍵字緩存表,用于保存已經同步到公共緩存服務器的權限驗證關鍵字;在通過權限配置來修改關鍵字緩存表中的一個或多個數據之后,獲取一組關鍵字修改信息;根據關鍵字修改信息在關鍵字緩存表中進行關聯數據查詢,以獲取清除緩存記錄,其中清除緩存記錄包括關鍵字修改信息對應的一個或多個已經同步的權限驗證關鍵字;公共緩存服務器清除該清除緩存記錄所對應的權限驗證緩存記錄。
[0010]進一步地,在權限服務器根據接收到的權限驗證關鍵字來查詢得到對應的驗證結果之前,方法還包括:權限服務器創建用于保存用戶信息與用戶權限之間的映射關系的權限配置數據表,其中,用戶信息為使用相同的關鍵字生成規則處理而生成的權限驗證關鍵字;通過權限配置來修改權限配置數據表中的一個或多個用戶數據,以獲取一組修改信息;根據修改信息在權限數據表中進行關聯數據查詢,以獲取清除緩存記錄,其中清除緩存記錄包括修改信息關聯的一個或多個緩存的權限驗證關鍵字;公共緩存服務器清除該清除緩存記錄所對應的權限驗證緩存記錄。
[0011]進一步地,應用服務器根據關鍵字生成規則對權限數據訪問信息進行處理,以生成權限驗證關鍵字的步驟包括:提取權限數據訪問信息中的用戶標識和訪問標識;將用戶標識和訪問標識與應用服務器上運行的應用服務的應用標識進行組合,以生成權限驗證關鍵字。
[0012]為了實現上述目的,根據本申請的另一方面,提供了一種權限數據的驗證裝置,該裝置包括:接收模塊,用于接收客戶端的權限數據訪問信息;生成模塊,用于根據關鍵字生成規則對權限數據訪問信息進行處理,以生成權限驗證關鍵字;驗證模塊,用于將權限驗證關鍵字發送至公共緩存服務器進行驗證,以獲取權限驗證關鍵字所對應的驗證結果;返回模塊,用于當公共緩存服務器成功返回驗證結果的情況下,將驗證結果返回至客戶端;調用處理模塊,用于當公共緩存服務器未成功返回驗證結果的情況下,通過遠程調用接口訪問權限服務器,權限服務器根據接收到的權限驗證關鍵字來查詢得到對應的驗證結果。
[0013]進一步地,生成模塊包括:提取模塊,用于提取權限數據訪問信息中的用戶標識和訪問標識;組合模塊,用于將用戶標識和訪問標識與應用服務器上運行的應用服務的應用標識進行組合,以生成權限驗證關鍵字。
[0014]進一步地,裝置還包括:攔截模塊,用于應用服務器攔截遠程調用接口,并與公共緩存服務器建立通訊連接。
[0015]為了實現上述目的,根據本申請的另一方面,提供了一種權限數據的驗證系統,該系統包括:權限服務器;應用服務器,用于接收客戶端的權限數據訪問信息,并根據關鍵字生成規則對權限數據訪問信息進行處理,以生成權限驗證關鍵字;一個或多個公共緩存服務器,連接于應用服務器和權限服務器之間,用于接收應用服務器發送的權限驗證關鍵字,并對權限驗證關鍵字進行驗證,以獲取權限驗證關鍵字所對應的驗證結果;其中,當公共緩存服務器成功返回驗證結果的情況下,應用服務器將驗證結果返回至客戶端;當公共緩存服務器未成功返回驗證結果的情況下,應用服務器通過遠程調用接口訪問權限服務器,權限服務器根據接收到的權限驗證關鍵字來查詢得到對應的驗證結果。[0016]通過本申請,采用應用服務器接收客戶端的權限數據訪問信息;應用服務器根據關鍵字生成規則對權限數據訪問信息進行處理,以生成權限驗證關鍵字;應用服務器將權限驗證關鍵字發送至公共緩存服務器進行驗證,以獲取權限驗證關鍵字所對應的驗證結果,其中,當公共緩存服務器成功返回驗證結果的情況下,應用服務器將驗證結果返回至客戶端;當公共緩存服務器未成功返回驗證結果的情況下,應用服務器通過遠程調用接口訪問權限服務器,權限服務器根據接收到的權限驗證關鍵字來查詢得到對應的驗證結果,本申請上述實施例提供了一個應用服務器和權限服務器配置共用的分布式緩存系統,實現了當基于服務化的權限服務器因突發性故障導致不可用情況下,應用服務器可以通過訪問公共緩存服務器來完成權限驗證流程,并獲取對應的驗證結果,從而在權限服務器不可用時,依然保證各個應用服務器上權限驗證服務的可用性,解決了相關現有技術的由于權限服務器發生故障不可用,導致使用該權限服務器的應用服務器上的權限驗證不可用,從而應用界面無法訪問的問題,進而實現了在權限服務器發生故障時,依舊可以保證應用服務器上的權限服務可用,不影響供應鏈系統集群可用性的效果。
【專利附圖】
【附圖說明】
[0017]此處所說明的附圖用來提供對本申請的進一步理解,構成本申請的一部分,本申請的示意性實施例及其說明用于解釋本申請,并不構成對本申請的不當限定。在附圖中:
[0018]圖1是根據相關現有技術的權限數據的驗證系統的結構示意圖;
[0019]圖2是根據本申請實施例的權限數據的驗證系統的結構示意圖;
[0020]圖3是根據圖2所示實施例的權限數據的驗證系統的詳細結構示意圖;
[0021]圖4是根據圖2和圖3所示實施例的遠程攔截功能的架構示意圖;
[0022]圖5是根據圖2和圖3所示實施例的公共緩存配置功能的架構示意圖;
[0023]圖6是根據本申請實施例的權限數據的驗證方法的流程圖;
[0024]圖7是根據圖6所示實施例的權限數據的驗證方法的詳細流程圖;
[0025]圖8是根據圖6和圖7所示實施例的獲取權限驗證關鍵字及查詢策略的流程示意圖;
[0026]圖9是根據本申請實施例的權限數據的驗證裝置的結構示意圖。
【具體實施方式】
[0027]需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互組合。下面將參考附圖并結合實施例來詳細說明本申請。
[0028]圖2是根據本申請實施例的權限數據的驗證系統的結構示意圖;圖3是根據圖2所示實施例的權限數據的驗證系統的詳細結構示意圖。
[0029]如圖2所示,該權限數據的驗證系統包括:權限服務器10 ;應用服務器30,用于接收客戶端的權限數據訪問信息,并根據關鍵字生成規則對權限數據訪問信息進行處理,以生成權限驗證關鍵字;一個或多個公共緩存服務器50,連接于應用服務器30和權限服務器10之間,用于接收應用服務器30發送的權限驗證關鍵字,并對權限驗證關鍵字進行驗證,以獲取權限驗證關鍵字所對應的驗證結果;其中,當公共緩存服務器50成功返回驗證結果的情況下,應用服務器30將驗證結果返回至客戶端;當公共緩存服務器50未成功返回驗證結果的情況下,應用服務器30通過遠程調用接口訪問權限服務器10,權限服務器10根據接收到的權限驗證關鍵字來查詢得到對應的驗證結果。
[0030]本申請上述實施例提供了一種由應用服務器30系統和權限服務器10系統連接公共的分布式緩存服務器系統,比較現有技術,當應用服務器30獲取到由客戶端發出的權限數據訪問信息(例如URL請求)之后,不會直接訪問權限服務器10進行權限服務功能,而是先從公共緩存服務器50中實施權限驗證服務,從而獲取到權限驗證結果,因此,當基于服務化的權限服務器10因突發性故障導致不可用情況下,應用服務器30可以通過訪問公共緩存服務器50來完成權限驗證流程,并獲取對應的驗證結果,從而在權限服務器10不可用時,依然保證各個應用服務器30上權限驗證服務的可用性,即保證客戶端對業務應用系統的正常訪問,解決了由于權限服務器10發生故障不可用,導致使用該權限服務器10的應用服務器30上的權限驗證不可用,從而應用界面無法訪問的問題,進而實現了在權限服務器10發生故障時,依舊可以保證應用服務器30上的權限服務可用,不影響供應鏈系統集群可用性的效果。
[0031]本申請上述實施例可以實現在各個公共緩存服務器50彼此之間實現負載均衡,從而降低每臺公共緩存服務器50的工作負擔和成本,提高了整體驗證系統的效率。
[0032]本申請各個實施例所涉及到的權限服務器10特指在供應鏈系統集群中用于提供公共權限服務的服務器;應用服務器30特指在供應鏈系統集群中使用公共權限服務器10完成權限驗證的服務器;公共緩存服務器50是特指權限服務器10和其他應用服務器30共同配置的,用于保存權限驗證服務數據的專用的緩存服務器。由于同步到公共緩存服務器50中的用于進行權限驗證的緩存數據是權限服務器10系統配置的權限驗證關鍵字及其驗證結果的組合,比較原始的在應用服務器30中基于數據庫形式的權限驗證(可以包括功能權限驗證和數據權限驗證)過程,應用服務器30從公共緩存服務器50上進行權限驗證具有速度快、效率高的優點,因此,上述原因也是本申請實施例中的應用服務器30優選從公共緩存服務器50上進行權限驗證,在公共緩存服務器50驗證失敗之后,再去權限服務器10進行權限驗證的理由。
[0033]另外,本申請涉及到的應用服務器30對權限服務器10的遠程服務調用,具體可以實現由http, webservice、RPC等多種方式,目前內部網絡系統間多用RPC的方式,優選采用通用的基于Netty的dubbo服務調用。而公共緩存服務器50中提供的公共服務,是指在功能復雜的系統集群中,有些比較通用的功能被封裝成服務,為系統的其他功能所使用,服務的使用方通過接口調用的方式訪問服務,并且獨立的部署,有利于系統的擴展,如用戶、權限、郵件等服務。
[0034]優選地,本申請上述實施例中的應用服務器30采用了遠程服務攔截技術,即在將權限驗證關鍵字發送至公共緩存服務器50進行驗證之前,應用服務器30首先攔截用于與權限服務器10建立訪問的遠程調用接口,直接與公共緩存服務器50建立通訊連接來實施權限驗證服務的功能。
[0035]具體的,如圖3所示,本申請上述實施例中使用了分布式緩存策略,應用服務器30和權限服務器10配置共用的分布式緩存服務器,在客戶端向應用服務器30發送權限數據訪問信息(URL請求)之后,應用服務器30通過提供的公共類庫(權限二方庫)來實現遠程服務攔截技術,用于攔截應用服務器30直接訪問權限服務器10的服務,而訪問公共緩存服務器50上的權限驗證工具。其中,本申請中應用服務器30中的權限二方庫用于封裝訪問公共緩存服務器50的策略,該策略攔截了應用服務器30系統對遠程權限服務器10的直接調用,而是轉向訪問公共緩存服務器50的權限驗證工具。同時權限二方圖也實現根據驗證參數(即權限數據訪問信息,例如客戶端發出的URL請求和用戶標識)來生成權限驗證關鍵字(緩存key)的工具。
[0036]當公共緩存服務器50并未記錄當前權限數據訪問信息所對應的驗證結果,即應用服務器30并沒有成功獲取到驗證結果的情況下,應用服務器30再對權限服務器10進行權限驗證服務調用,當權限服務器10的系統接收到權限驗證服務遠程調用后,會在將驗證結果返回給應用服務器30的同時,將驗證結果和權限驗證關鍵字及它們之間的對應關系打包之后同步到公共緩存服務器50,從而在公共緩存服務器50中建立一個由權限服務器10系統配置的權限驗證關鍵字key及其驗證結果組成的緩存副本。由此當公用權限服務因故障而不可用或者下一次客戶端向應用服務器30發出權限數據訪問時,應用服務器30可以根據生成的權限驗證關鍵字(緩存key)直接從公共緩存服務器50獲取到權限驗證結果,這就實現了公用權限服務系統短期不可用時,保證了應用系統可用性,減少了由于權限服務器10發生故障而帶來的損失。
[0037]優選地,本申請上述實施例中的公共緩存服務器50可以是多個相互同步數據的服務器,一方面可以實現服務器的負載均衡,降低了每個服務器的負擔,提高了整個系統的安全性。
[0038]由此,結合圖2和圖3可知,實現本申請上述實施例中系統架構的核心業務包括如下三部分:遠程服務攔截,公共緩存策略,緩存同步策略。
[0039]具體的,如圖4所示,本申請實施例中應用服務器30端實現的遠程服務攔截主要通過應用服務器30的應用系統提供的權限二方庫來實現,該二方庫包含了用于實現權限驗證功能的遠程調用接口(即用于訪問權限服務器10中權限系統的權限驗證服務接口),而該接口的實現在權限系統中,在目前通常使用的遠程調用過程中,應用服務器30端在配置遠程服務后(可以通過基于Netty的dubbo服務調用框架),可以通過直接調用遠程調用接口來訪問權限服務器的權限系統的權限驗證服務。
[0040]在本申請中,權限二方庫提供了權限驗證服務,對遠程調用接口進行了封裝,當應用服務器30使用該權限驗證服務來驗證權限時,會在訪問遠程調用接口之間先讀取分布式的公共緩存服務器50上的權限驗證工具來進行權限驗證,這樣實現了攔截對遠程調用接口的調用,而直接在公共緩存服務器中獲取驗證結果。正是通過這種形式,實現了當權限系統由于各種原因導致權限驗證工具故障時,保障了應用服務器30上權限驗證服務的可用性,進而保障應用服務的可用性。
[0041]如圖5所示,本申請緩存服務器上實現的公共緩存配置是本申請的核心,需要為權限服務器10和應用服務器30上的系統配置權限驗證服務一致的分布式緩存服務器,具體的,可以在權限服務器10和應用服務器30上的權限二方庫中設置相同的關鍵字生成規則來獲取統一的權限驗證關鍵字(緩存key),使得兩邊可以依據權限驗證關鍵字讀取到的一致的緩存記錄。
[0042]由此可知,當權限二方庫中的權限驗證工具在攔截遠程調用接口的調用而直接對公共緩存服務器50進行權限驗證訪問時,可以使用統一的關鍵字生成規則將權限驗證的一個或多個請求參數(可以包括:用戶標識信息和應用服務器30接收到用戶的請求標識信息)進行組合,來生成與權限服務器10系統上一致的權限驗證關鍵字,由于公共緩存服務器50已經同步了由權限服務器10系統配置的權限驗證關鍵字及其驗證結果,因此,在權限服務器10不可用時,應用服務器30可以通過讀取公共緩存服務器50中同步的緩存信息,而得到與調用權限服務器10相同的權限驗證結果。
[0043]由上述實施例可知,本申請權限服務器10和公共緩存服務器50之間的緩存同步策略具體如下:
[0044]首先,應用服務器30的應用系統在第一次接收到請求參數,即請求權限驗證時,此時,公共緩存服務器50是沒有緩存的,應用系統只能通過遠程調用接口來調用權限服務器10的遠程服務,而權限服務器10在獲取到驗證結果之后,會利用與應用服務器30上相同的關鍵字生成規則,將請求參數組成權限驗證關鍵字key,驗證結果作為value,將它們以key-value的組合形式作為權限驗證緩存記錄同步到公共緩存服務器50中。
[0045]然后,應用服務器30的應用系統在第二次發出相同的請求參數進行權限驗證時,用于訪問權限服務器10的遠程服務接口就會被攔截,應用服務器30通過訪問緩存服務器來取得驗證結果。
[0046]而當權限服務器10的系統對應用服務器30的權限進行管理和修改時,應用服務器30系統的一些用戶的權限會發生變化,此時緩存服務器中存儲的權限驗證結果是錯誤的,本申請可以對緩存服務器上保存的權限驗證緩存記錄設置失效時間,即對公共緩存服務器50上緩存的權限驗證緩存記錄進行緩存時效性的管理,即根據權限服務的可用率,設置權限驗證緩存記錄的失效時間,同時權限系統修改時能主動的更新緩存。
[0047]優選地,本申請上述實施例中的權限驗證關鍵字可以包括用戶標識、應用標識和請求標識,其中,在權限服務器10將緩存記錄同步到公共緩存服務器50之后,權限服務器10可以創建關鍵字緩存表,用于保存已經同步到公共緩存服務器50的權限驗證關鍵字;在通過權限配置來修改關鍵字緩存表中的一個或多個數據之后,獲取一組關鍵字修改信息;根據關鍵字修改信息在關鍵字緩存表中進行關聯數據查詢,以獲取清除緩存記錄,其中清除緩存記錄包括關鍵字修改信息對應的一個或多個已經同步的權限驗證關鍵字;公共緩存服務器50清除清除緩存記錄所對應的權限驗證緩存記錄。另外,也可以采用在將清除標記加載在清除緩存記錄之后,將攜帶有清除標記的清除緩存記錄同步到公共緩存服務器50 ;公共緩存服務器50清除攜帶有清除標記的清除緩存記錄所對應的緩存記錄。
[0048]具體的,如果失效時間未到時權限服務器10上的權限內容發生了變化,此時,應用服務器30進行權限驗證就會發生錯誤。針對該情況,本申請可以實現當權限服務器10系統對權限信息和內容進行修改時,將公共緩存服務器50上對應在權限服務器10上的權限驗證緩存記錄進行清理,從而保證了公共緩存服務器50的可用性,在應用服務器30進行下次權限驗證時,權限服務器10會將修改后的內容同步到公共緩存服務器50上。如果公共緩存服務器50上的清理過程發生故障而導致清理失敗,權限服務器10將發出報警提示,并循環執行對在權限服務器10上的權限驗證緩存記錄進行清理,直至清理成功。另外,本申請公共緩存服務器50不能輕易的清除所有緩存,需要根據權限系統配置的改動,計算需要清理的緩存。
[0049]圖6是根據本申請實施例的權限數據的驗證方法的流程圖;圖7是根據圖6所示實施例的權限數據的驗證方法的詳細流程圖。
[0050]如圖6所示該方法包括如下步驟:
[0051]步驟S102,通過圖2和圖3中的應用服務器30接收客戶端的權限數據訪問信息。
[0052]步驟S104,圖2和圖3中的應用服務器30根據關鍵字生成規則對權限數據訪問信息進行處理,以生成權限驗證關鍵字。
[0053]步驟S106,通過圖2和圖3中的應用服務器30將權限驗證關鍵字發送至公共緩存服務器50進行驗證,以獲取權限驗證關鍵字所對應的驗證結果,其中。當公共緩存服務器50成功返回驗證結果的情況下,應用服務器30將驗證結果返回至客戶端;當公共緩存服務器50未成功返回驗證結果的情況下,應用服務器30通過遠程調用接口訪問權限服務器10,權限服務器10根據接收到的權限驗證關鍵字來查詢得到對應的驗證結果。
[0054]本申請上述實施例實現了當應用服務器30獲取到由客戶端發出的權限數據訪問信息(例如URL請求)之后,不會直接訪問權限服務器10進行權限服務功能,而是先從公共緩存服務器50中實施權限驗證服務,從而獲取到權限驗證結果,因此,當基于服務化的權限服務器10因突發性故障導致不可用情況下,應用服務器30可以通過訪問公共緩存服務器50來完成權限驗證流程,并獲取對應的驗證結果,從而在權限服務器10不可用時,依然保證各個應用服務器30上權限驗證服務的可用性,即保證客戶端對業務應用系統的正常訪問,解決了由于權限服務器10發生故障不可用,導致使用該權限服務器10的應用服務器30上的權限驗證不可用,從而應用界面無法訪問的問題,進而實現了在權限服務器10發生故障時,依舊可以保證應用服務器30上的權限服務可用,不影響供應鏈系統集群可用性的效果。
[0055]優選地,在應用服務器30將權限驗證關鍵字發送至公共緩存服務器50進行驗證之前,方法還可以包括:應用服務器30攔截用于連接權限服務器10的遠程調用接口,并與公共緩存服務器50建立通訊連接。
[0056]本申請上述實施例中,在權限服務器10根據接收到的權限驗證關鍵字來查詢得到對應的驗證結果之后,方法還可以包括如下步驟:權限服務器10將權限驗證關鍵字和驗證結果進行結合,得到權限驗證緩存記錄;權限服務器10將權限驗證緩存記錄同步到公共緩存服務器50。
[0057]本申請上述實施例中,在權限服務器10根據接收到的權限驗證關鍵字來查詢得到對應的驗證結果之前,方法還包括:權限服務器10創建用于保存用戶信息與用戶權限之間的映射關系的權限配置數據表,其中,用戶信息為使用相同的關鍵字生成規則處理而生成的權限驗證關鍵字;通過權限配置來修改權限配置數據表中的一個或多個用戶數據,以獲取一組修改信息;根據修改信息在權限數據表中進行關聯數據查詢,以獲取清除緩存記錄,其中清除緩存記錄包括修改信息關聯的一個或多個緩存的權限驗證關鍵字;公共緩存服務器50直接清除該清除緩存記錄所對應的權限驗證緩存記錄。另外,也可以在將清除標記加載在清除緩存記錄之后,將攜帶有清除標記的清除緩存記錄同步到公共緩存服務器50,然后公共緩存服務器50清除攜帶有清除標記的清除緩存記錄所對應的權限驗證緩存記錄。
[0058]具體的,如圖7所示,上述實施例中權限服務器10和公共緩存服務器50之間進行權限驗證緩存記錄的同步過程如下步驟:[0059]首先,權限服務器10的權限系統通過創建權限配置數據表對應用服務器30系統的權限進行統一配置和管理,具體的,可以通過在權限配置數據表創建“用戶-角色-權限”的映射關系來實現,當應用服務器30的系統需要對一些用戶的權限做修改時,只需要在權限系統中修改配置即可。其中,該權限數據表包括權限驗證關鍵字key (可以包括用戶標識、應用標識和請求標識)以及該權限驗證關鍵字key所對應的驗證結果。
[0060]然后,當權限服務器10發生對“用戶-角色-權限”中的數據以及映射關系進行修改后,會采用管理數據查詢算法,即根據修改的數據在權限數據表中進行關聯數據查詢,計算得到修改的數據所影響到的權限驗證關鍵字key的集合,權限服務器10根據這些key集合清除公共緩存服務器50上所對應的權限驗證緩存記錄。
[0061]接著,如果應用服務器30的系統在使用二方庫中的權限驗證工具對已經發生變化的權限驗證關鍵字進行權限驗證時,優先需要在公共緩存服務器50上對已經發生變化的權限驗證關鍵字進行驗證,由于此時公共緩存服務器50上該權限驗證關鍵字所對應的權限驗證緩存記錄已經被清除,所以不會得到驗證結果。
[0062]此時,在訪問公共緩存服務器50無法得到驗證結果之后,應用服務器30系統會調用遠程的權限服務器10進行權限驗證,權限服務器10系統會根據訪問請求查詢本地數據庫,得到修改后的驗證結果,同時,權限服務器10也會將當前的驗證請求參數生成緩存新的權限驗證關鍵字key,新的驗證結果作為緩存值,將二者結合之后同步到公共緩存服務器50中,得到新的權限驗證緩存記錄。
[0063]最后,權限服務器10系統會將新得到的驗證結果返回給應用服務器30系統,此時權限服務器10上同步完成新的權限驗證緩存記錄的保存,之后應用服務器30系統再對該新的驗證權限請求驗證,就會正常的從公共緩存中得到正確的驗證結果。
[0064]優選地,本申請上述實施例中,權限驗證關鍵字包括用戶標識、應用標識和請求標識,在權限服務器10將權限驗證緩存記錄同步到公共緩存服務器50之后,方法還可以包括如下步驟:權限服務器10創建關鍵字緩存表,用于保存已經同步到公共緩存服務器50的權限驗證關鍵字;在通過權限配置來修改關鍵字緩存表中的一個或多個數據之后,獲取一組關鍵字修改信息;根據關鍵字修改信息在關鍵字緩存表中進行關聯數據查詢,以獲取清除緩存記錄,其中清除緩存記錄包括關鍵字修改信息對應的一個或多個已經同步的權限驗證關鍵字;公共緩存服務器50直接清除該清除緩存記錄所對應的權限驗證緩存記錄。另外,也可以在將清除標記加載在清除緩存記錄之后,將攜帶有清除標記的清除緩存記錄同步到公共緩存服務器50,然后公共緩存服務器50清除攜帶有清除標記的清除緩存記錄所對應的權限驗證緩存記錄。
[0065]上述實施例實現了在權限服務器10中創建一個關鍵字緩存表,在應用服務器30利用權限驗證關鍵字key在權限服務器10中獲取到對應的驗證結果value之后,將它們以key-value的組合形式作為權限驗證緩存記錄同步到公共緩存服務器50中,此時,權限服務器10將每次同步到公共緩存服務器50中的權限驗證關鍵字key記錄在關鍵字緩存表中,該關鍵字緩存表主要用于獲取清除緩存記錄,即當記錄在該表中的權限驗證關鍵字key所相關的內容發生修改時,將清除權該限驗證關鍵字key在公共緩存服務器50中已經記錄的權限驗證緩存記錄。
[0066]具體的,如圖8所示,當權限服務器10利用SynCacheUtil根據需要修改權限配置之后,可以計算得到修改的配置信息所影響到的權限驗證關鍵字key的集合,從而獲取得到緩存服務器上對應受影響的權限驗證緩存記錄,并將受影響到權限驗證緩存記錄刪除。上述過程中,可以在權限服務器IO系統中增加關鍵字緩存表(CacheKey表),該關鍵字緩存表用于記錄已記入公共緩存服務器50中的權限驗證關鍵字key,此時,關鍵字緩存表將key中的各個組成部分(包括用戶標識、應用標識和請求標識)分別作為一個字段進行存儲,例如,當權限服務器10修改一條用戶的權限信息時,會按照用戶標識這個字段查詢CacheKey表,就得到修改該用戶權限后該權限驗證關鍵字與新的驗證結果的組合,并發出清除命令,用于清除該權限驗證關鍵字key在緩存數據庫記錄原來記錄的權限驗證緩存記錄(此時不更新緩存服務器中的記錄而是直接清除,是因為下一次接受到遠程方法驗證并返回結果前,會將新的驗證結果寫入緩存),因此,當應用服務器30使用該權限驗證關鍵字從公共緩存服務器50中進行驗證時,無法得到驗證結果,此時應用服務器30便訪問權限服務器10,成功獲取到對應的驗證結果,在每次應用服務器30在接收到權限服務器10遠程驗證并返回驗證結果前,可以利用CacheKeyUtil將這些更新記錄的各個字段加上分隔符組成新的權限驗證關鍵字key,權限服務器10會將該新的權限驗證關鍵字與新的驗證結果的組合同步到緩存服務器中作為新的權限驗證緩存記錄,使得應用服務器30就不會從公共緩存服務器50中得到未修改的錯誤而得到的錯誤的驗證結果。使用上述方案避免了通過復雜算法分析受影響記錄,效率很高。
[0067]本申請上述實施例中通過緩存同步策略,在提高服務可用性的同時也保證了數據的一致性,即服務的正確性。
[0068]優選地,本申請上述實施例中,應用服務器30根據關鍵字生成規則對權限數據訪問信息進行處理,以生成權限驗證關鍵字的步驟可以包括:應用服務器30提取權限數據訪問信息中的用戶標識和訪問標識;將用戶標識和訪問標識與應用服務器30上運行的應用服務的應用標識進行組合,以生成權限驗證關鍵字。
[0069]具體的,本申請上述各個實施例中的權限驗證關鍵字key的生成過程具體如下:
[0070]如圖8所示,權限驗證服務遠程方法(RPC METHOD)的參數包含用戶標識(userid)、應用標識(appSite)、請求標識(identity),緩存的key也是這相同的3部分加上分隔符組成,圖8中的CacheKeyUtil就是組合和解析緩存key的工具。其中,當權限配置被修改時,權限系統首先會修改本地數據庫的權限配置記錄。
[0071]圖9是根據本申請實施例的權限數據的驗證裝置的結構示意圖。
[0072]如圖9所示,本申請提供了一種權限數據的驗證裝置,該裝置可以包括:接收模塊201,用于接收客戶端的權限數據訪問信息;生成模塊203,用于根據關鍵字生成規則對權限數據訪問信息進行處理,以生成權限驗證關鍵字;驗證模塊205,用于將權限驗證關鍵字發送至公共緩存服務器50進行驗證,以獲取權限驗證關鍵字所對應的驗證結果;返回模塊207,用于當公共緩存服務器50成功返回驗證結果的情況下,將驗證結果返回至客戶端;調用處理模塊209,用于當公共緩存服務器50未成功返回驗證結果的情況下,通過遠程調用接口訪問權限服務器10,權限服務器10根據接收到的權限驗證關鍵字來查詢得到對應的驗證結果。優選地,該裝置還可以包括:攔截模塊211,用于應用服務器30攔截遠程調用接口,并與公共緩存服務器50建立通訊連接。
[0073]本申請上述實施例提供比較現有技術,應用服務器30通過接收模塊獲取到由客戶端發出的權限數據訪問信息(例如URL請求)之后,不會直接訪問權限服務器10進行權限服務功能,而是通過驗證模塊先從公共緩存服務器50中實施權限驗證服務,從而獲取到權限驗證結果,因此,當基于服務化的權限服務器10因突發性故障導致不可用情況下,應用服務器30可以通過訪問公共權限服務器10來完成權限驗證流程,并獲取對應的驗證結果,從而在應用服務器30不可用時,依然保證各個應用服務器30上權限驗證服務的可用性,即保證客戶端對業務應用系統的正常訪問,解決了由于權限服務器10發生故障不可用,導致使用該權限服務器10的應用服務器30上的權限驗證不可用,從而應用界面無法訪問的問題,進而實現了在權限服務器10發生故障時,依舊可以保證應用服務器30上的權限服務可用,不影響供應鏈系統集群可用性的效果。
[0074]優選地,該生成模塊可以包括:提取模塊,用于提取權限數據訪問信息中的用戶標識和訪問標識;組合模塊,用于將用戶標識和訪問標識與應用服務器30上運行的應用服務的應用標識進行組合,以生成權限驗證關鍵字。
[0075]需要說明的是,在附圖的流程圖示出的步驟可以在諸如一組計算機可執行指令的計算機系統中執行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執行所示出或描述的步驟。
[0076]本申請可使用任意計算機語言和對該語言支持的分布式緩存系統,本申請的實例中優選使用Java語言和Memcached可以達到最佳的實施效果。
[0077]從以上的描述中,可以看出,本申請實現了如下技術效果:解決了相關現有技術的由于權限服務器10發生故障不可用,導致使用該權限服務器10的應用服務器30上的權限驗證不可用,從而應用界面無法訪問的問題,進而實現了在權限服務器10發生故障時,依舊可以保證應用服務器30上的權限服務可用,不影響供應鏈系統集群可用性的效果。
[0078]顯然,本領域的技術人員應該明白,上述的本申請的各模塊或各步驟可以用通用的計算裝置來實現,它們可以集中在單個的計算裝置上,或者分布在多個計算裝置所組成的網絡上,可選地,它們可以用計算裝置可執行的程序代碼來實現,從而,可以將它們存儲在存儲裝置中由計算裝置來執行,或者將它們分別制作成各個集成電路模塊,或者將它們中的多個模塊或步驟制作成單個集成電路模塊來實現。這樣,本申請不限制于任何特定的硬件和軟件結合。
[0079]以上所述僅為本申請的優選實施例而已,并不用于限制本申請,對于本領域的技術人員來說,本申請可以有各種更改和變化。凡在本申請的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本申請的保護范圍之內。
【權利要求】
1.一種權限數據的驗證方法,其特征在于,包括: 應用服務器接收客戶端的權限數據訪問信息; 所述應用服務器根據關鍵字生成規則對所述權限數據訪問信息進行處理,以生成權限驗證關鍵字; 所述應用服務器將所述權限驗證關鍵字發送至公共緩存服務器進行驗證,以獲取所述權限驗證關鍵字所對應的驗證結果,其中, 在所述公共緩存服務器成功返回驗證結果的情況下,所述應用服務器將所述驗證結果返回至所述客戶端; 在所述公共緩存服務器未成功返回驗證結果的情況下,所述應用服務器通過遠程調用接口訪問權限服務器,所述權限服務器根據接收到的權限驗證關鍵字來查詢得到對應的驗證結果。
2.根據權利要求1所述的方法,其特征在于,在所述應用服務器將所述權限驗證關鍵字發送至公共緩存服務器進行驗證之前,所述方法還包括:所述應用服務器攔截用于連接所述權限服務器的所述遠程調用接口,并與所述公共緩存服務器建立通訊連接。
3.根據權利要求1所述的方法,其特征在于,在所述權限服務器根據接收到的權限驗證關鍵字來查詢得到對應的驗證結果之后,所述方法還包括: 所述權限服務器將所述權限驗證關鍵字和所述驗證結果進行結合,得到權限驗證緩存記錄; 所述權限服務器將所述權限驗證緩存記錄同步到所述公共緩存服務器。
4.根據權利要求3所述的方法,其特征在于,所述權限驗證關鍵字包括用戶標識、應用標識和請求標識,其中,在所述權限服務器將所述權限驗證緩存記錄同步到所述公共緩存服務器之后,所述方法還包括: 所述權限服務器創建關鍵字緩存表,用于保存已經同步到所述公共緩存服務器的權限驗證關鍵字; 在通過權限配置來修改所述關鍵字緩存表中的一個或多個數據之后,獲取一組關鍵字修改信息; 根據所述關鍵字修改信息在所述關鍵字緩存表中進行關聯數據查詢,以獲取清除緩存記錄,其中所述清除緩存記錄包括所述關鍵字修改信息對應的一個或多個已經同步的權限驗證關鍵字; 所述公共緩存服務器清除所述清除緩存記錄所對應的權限驗證緩存記錄。
5.根據權利要求1所述的方法,其特征在于,在所述權限服務器根據接收到的權限驗證關鍵字來查詢得到對應的驗證結果之前,所述方法還包括: 所述權限服務器創建用于保存用戶信息與用戶權限之間的映射關系的權限配置數據表,其中,所述用戶信息為使用相同的關鍵字生成規則處理而生成的權限驗證關鍵字; 通過權限配置來修改權限配置數據表中的一個或多個用戶數據,以獲取一組修改信息; 根據所述修改信息在所述權限數據表中進行關聯數據查詢,以獲取清除緩存記錄,其中所述清除緩存記錄包括所述修改信息關聯的一個或多個緩存的權限驗證關鍵字; 所述公共緩存服務器清除所述清除緩存記錄所對應的權限驗證緩存記錄。
6.根據權利要求1至5中任意一項所述的方法,其特征在于,所述應用服務器根據關鍵字生成規則對所述權限數據訪問信息進行處理,以生成權限驗證關鍵字的步驟包括: 提取所述權限數據訪問信息中的用戶標識和訪問標識; 將所述用戶標識和訪問標識與所述應用服務器上運行的應用服務的應用標識進行組合,以生成所述權限驗證關鍵字。
7.一種權限數據的驗證裝置,其特征在于,包括: 接收模塊,用于接收客戶端的權限數據訪問信息; 生成模塊,用于根據關鍵字生成規則對所述權限數據訪問信息進行處理,以生成權限驗證關鍵字; 驗證模塊,用于將所述權限驗證關鍵字發送至公共緩存服務器進行驗證,以獲取所述權限驗證關鍵字所對應的驗證結果; 返回模塊,用于在所述公共緩存服務器成功返回驗證結果的情況下,將所述驗證結果返回至所述客戶端; 調用處理模塊,用于在所述公共緩存服務器未成功返回驗證結果的情況下,通過遠程調用接口訪問權限服務器,所述權限服務器根據接收到的權限驗證關鍵字來查詢得到對應的驗證結果。
8.根據權利要求7所述的裝置,其特征在于,所述生成模塊包括: 提取模塊,用于提取所述權限數據訪問信息中的用戶標識和訪問標識; 組合模塊,用于將所述用戶 標識和訪問標識與所述應用服務器上運行的應用服務的應用標識進行組合,以生成所述權限驗證關鍵字。
9.根據權利要求7所述的裝置,其特征在于,所述裝置還包括:攔截模塊,用于所述應用服務器攔截所述遠程調用接口,并與所述公共緩存服務器建立通訊連接。
10.一種權限數據的驗證系統,其特征在于,包括: 權限服務器; 應用服務器,用于接收客戶端的權限數據訪問信息,并根據關鍵字生成規則對所述權限數據訪問信息進行處理,以生成權限驗證關鍵字; 一個或多個公共緩存服務器,連接于所述應用服務器和所述權限服務器之間,用于接收所述應用服務器發送的所述權限驗證關鍵字,并對所述權限驗證關鍵字進行驗證,以獲取所述權限驗證關鍵字所對應的驗證結果; 其中,在所述公共緩存服務器成功返回驗證結果的情況下,所述應用服務器將所述驗證結果返回至所述客戶端;在所述公共緩存服務器未成功返回驗證結果的情況下,所述應用服務器通過遠程調用接口訪問權限服務器,所述權限服務器根據接收到的權限驗證關鍵字來查詢得到對應的驗證結果。
【文檔編號】H04L9/32GK103490886SQ201210193760
【公開日】2014年1月1日 申請日期:2012年6月12日 優先權日:2012年6月12日
【發明者】郎中鋒, 周春雷 申請人:阿里巴巴集團控股有限公司