本申請涉及通信技術領域,尤其涉及一種鑒權實現方法和裝置。
背景技術:
通常,系統可以為使用方提供業務接口,使用方通過調用業務接口,可以實現相應的業務功能。為了保證系統數據的安全性,系統通常會對使用方發送的訪問請求進行鑒權,以驗證該使用方是否擁有訪問本系統的權限。鑒權機制的種類繁多,系統針對不同的業務接口、不同的調用方式都可能采用不同的鑒權機制,例如:針對基于rpc(remoteprocedurecallprotocol,遠程過程調用協議)等的遠程調用,系統可以采用密鑰加解密校驗、數據防篡改校驗等鑒權機制;針對web調用,系統可以采用會話完整性校驗、token令牌校驗等鑒權機制。
相關技術中,可以針對每一個類名配置一套鑒權機制,每一套鑒權機制中可以包括有一種或多種鑒權機制。對于接收到的訪問請求,系統可以根據該訪問請求的類名確定其對應的一套鑒權機制,并基于這套鑒權機制對該訪問請求進行鑒權。但采用這種方式,極易出現類名過多的問題,不便于系統的維護和擴展。
技術實現要素:
有鑒于此,本申請提供一種鑒權實現方法和裝置,以解決相關技術中類名過多的問題。
具體地,本申請是通過如下技術方案實現的:
第一方面,本申請提供一種鑒權實現方法,所述方法包括:
在接收到訪問請求后,獲取所述訪問請求中攜帶的標識符;
查找所述標識符對應的鑒權機制,并基于查找到的鑒權機制對所述訪問請求進行鑒權;
在所述訪問請求通過鑒權后,基于所述訪問請求執行對應的業務功能。
第二方面,本申請提供一種鑒權實現裝置,所述裝置包括:
獲取單元,用于在接收到訪問請求后,獲取所述訪問請求中攜帶的標識符;
鑒權單元,用于查找所述標識符對應的鑒權機制,并基于查找到的鑒權機制對所述訪問請求進行鑒權;
執行單元,用于在所述訪問請求通過鑒權后,基于所述訪問請求執行對應的業務功能。
分析上述技術方案可知,由于系統在接收到訪問請求時,可以根據該訪問請求中攜帶的標識符查找對應的鑒權機制,而無需利用該訪問請求中攜帶的類名查找對應的鑒權機制,即類名與鑒權機制之間可以不再有對應關系,因此如果有一個或多個使用方需要采用不同的調用方式調用系統中的同一個業務接口,則針對每一種調用方式配置的類名可以是相同的,而僅需為對應不同鑒權機制的訪問請求配置不同的標識符即可,這樣可以顯著減少類名的數量,從而為系統的維護和擴展提供便利。
附圖說明
圖1是本申請一示例性實施例示出的一種鑒權實現方法的流程圖;
圖2是本申請一示例性實施例示出的一種鑒權實現裝置所在設備的硬件結構圖;
圖3是本申請一示例性實施例示出的一種鑒權實現裝置的框圖。
具體實施方式
這里將詳細地對示例性實施例進行說明,其示例表示在附圖中。下面的描述涉及附圖時,除非另有表示,不同附圖中的相同數字表示相同或相似的要素。以下示例性實施例中所描述的實施方式并不代表與本申請相一致的所有實施方式。相反,它們僅是與如所附權利要求書中所詳述的、本申請的一些方面相一致的裝置和方法的例子。
在本申請使用的術語是僅僅出于描述特定實施例的目的,而非旨在限制本申請。在本申請和所附權利要求書中所使用的單數形式的“一種”、“所述”和“該”也旨在包括多數形式,除非上下文清楚地表示其他含義。還應當理解,本文中使用的術語“和/或”是指并包含一個或多個相關聯的列出項目的任何或所有可能組合。
應當理解,盡管在本申請可能采用術語第一、第二、第三等來描述各種信息,但這些信息不應限于這些術語。這些術語僅用來將同一類型的信息彼此區分開。例如,在不脫離本申請范圍的情況下,第一信息也可以被稱為第二信息,類似地,第二信息也可以被稱為第一信息。取決于語境,如在此所使用的詞語“如果”可以被解釋成為“在……時”或“當……時”或“響應于確定”。
通常,使用方發送給系統的訪問請求中攜帶有類名。類名可以用于指定使用方需要調用系統業務接口,系統在根據訪問請求中攜帶的類名確定對應的業務接口后,可以調用該業務接口,以基于該訪問請求執行對應的業務功能。
相關技術中,可以針對每一個類名配置一套鑒權機制,每一套鑒權機制中可以包括有一種或多種鑒權機制。系統在接收到來自使用方的訪問請求時,可以根據該訪問請求中攜帶的類名確定對應的一套鑒權機制和業務接口。系統可以基于這套鑒權機制對該訪問請求進行鑒權。如果該訪問請求通過鑒權,則可以認為該使用方擁有訪問本系統的權限,因此系統可以調用確定的業務接口,以基于該訪問請求執行對應的業務功能;如果該訪問請求未通過鑒權,則可以認為該使用方未擁有訪問本系統的權限,因此系統可以將該訪問請求丟棄。
在上述情況下,如果有一個或多個使用方需要采用不同的調用方式調用系統中的同一個業務接口,則針對每一種調用方式都需要配置一個類名,從而使系統可以采用不同的鑒權機制對不同的調用方式下的訪問請求進行鑒權,因此極易出現類名過多的問題,不便于系統的維護和擴展。
本申請提供一種鑒權實現方法和裝置,以解決現有技術中的類名過多問題。請參考圖1,為本申請一示例性實施例示出的一種鑒權實現方法的流程圖。該鑒權實現方法可以應用于為使用方提供業務接口的系統中,所述系統的物理載體可以是各種網絡設備。該鑒權實現方法可以包括以下步驟:
步驟101:在接收到訪問請求后,獲取所述訪問請求中攜帶的標識符。
步驟102:查找所述標識符對應的鑒權機制,并基于查找到的鑒權機制對所述訪問請求進行鑒權。
步驟103:在所述訪問請求通過鑒權后,基于所述訪問請求執行對應的業務功能。
在本實施例中,系統在接收到來自使用方的訪問請求時,可以先獲取該訪問請求中攜帶的標識符。標識符可以用于指定系統對訪問請求進行鑒權時所采用的鑒權機制,即系統在獲取到該訪問請求中攜帶的標識符后,可以查找所述標識符所對應的鑒權機制,并基于查找到的鑒權機制對該訪問請求進行鑒權。其中,所述鑒權機制可以包括各種常用的鑒權機制,如密鑰加解密校驗、token令牌校驗等,也可以包括用戶或開發人員自行開發的鑒權機制,本申請不作特殊限制。
具體地,系統可以根據獲取到的標識符,在本地保存的標識符與鑒權機制的映射關系中查找所述標識符對應的鑒權機制,并基于查找到的鑒權機制對所述訪問請求進行鑒權。
在實際應用中,將標識符與鑒權機制的映射關系保存在系統中的方式可以有多種。比如較易想到的是,可以將標識符與鑒權機制的映射關系寫入映射關系表中,并將該映射關系表保存在系統中,系統可以根據獲取到的標識符查找該映射關系表,以查找對對應的訪問請求進行鑒權所采用的鑒權機制。此外,還可以將標識符與鑒權機制的映射關系寫入xml(extensiblemarkuplanguage,可擴展標記語言)配置文件或properties配置文件等中,并將該配置文件保存在系統中,系統在獲取到標識符后,可以解析該配置文件,以查找所述標識符對應的鑒權機制,并根據查找到的鑒權機制對對應的訪問請求進行鑒權。再者,也可以將標識符與鑒權機制的映射關系保存至數據庫中,系統可以通過sql(structuredquerylanguage,結構化查詢語言)語句在該數據庫中查找獲取到的標識符對應的鑒權機制,并根據查找到的鑒權機制對對應的訪問請求進行鑒權。
通常,訪問請求中攜帶的標識符以及所述標識符與鑒權機制的映射關系可以由用戶自行配置。但在另一個例子中,訪問請求中攜帶的標識符以及所述標識符與鑒權機制的映射關系也可以由開發人員預先配置,以作為本系統的默認配置,用戶無法對這類標識符和映射關系進行修改。將由開發人員設定的映射關系稱為約定映射關系,由用戶配置的映射關系稱為配置映射關系,系統在查找接收到的訪問請求中攜帶的標識符對應的鑒權機制時,可以先在標識符與鑒權機制的約定映射關系中查找所述標識符對應的鑒權機制,如果未在所述約定映射關系中查找到所述標識符對應的鑒權機制,則系統可以再在標識符與鑒權機制的配置映射關系中查找所述標識符對應的鑒權機制。
用戶或開發人員在進行標識符的配置時,可以將標識符配置在訪問請求的預留字段中,也可以在訪問請求中新增一個或多個字段,并將標識符配置在這些字段中。
需要說明的是,標識符與鑒權機制的映射關系可以是一一對應的,即一個標識符對應一種鑒權機制,系統可以針對接收到的訪問請求中攜帶的每一個標識符,查找到對應的一種鑒權機制。但為了簡化系統的鑒權機制查找過程,提高系統的查找效率,也可以將標識符與鑒權機制的映射關系配置為一個標識符對應多種鑒權機制,這樣系統即可根據接收到的訪問請求中攜帶的一個標識符,查找到對應的多種鑒權機制。
舉例來說,假設在標識符與鑒權機制的映射關系中,標識符a與鑒權機制a對應,標識符b與鑒權機制b對應,標識符c與鑒權機制c對應,則系統在接收到攜帶有標識符a和標識符b的第一訪問請求時,可以通過兩次查找,查找到對應的鑒權機制為鑒權機制a和鑒權機制b;而在接收到攜帶有標識符a、標識符b和標識符c的第二訪問請求時,則可以通過三次查找,查找到對應的鑒權機制為鑒權機制a、鑒權機制b和鑒權機制c。假設在標識符與鑒權機制的映射關系中,標識符1與鑒權機制a和鑒權機制b對應,標識符2與鑒權機制a、鑒權機制b和鑒權機制c對應,則系統在接收到攜帶有標識符a和標識符b的第一訪問請求或攜帶有標識符a、標識符b和標識符c的第二訪問請求時,都可以僅通過一次查找,查找到對應的鑒權機制,減少了系統查找鑒權機制的次數,提高了系統的查找效率。
在本實施例中,系統在根據接收到的訪問請求中攜帶的標識符,查找到對應的鑒權機制后,可以基于查找到的鑒權機制對該訪問進行鑒權。為了盡可能地減少對所述訪問請求進行的鑒權次數,提高的鑒權效率,系統可以采用責任鏈處理機制對所述訪問請求進行鑒權。
具體地,用戶可以配置各種鑒權機制之間的執行次序,例如:將鑒權機制a、鑒權機制b和鑒權機制c的執行次序依次配置為第一位、第二位和第三位,即鑒權機制a在鑒權機制b之前執行,鑒權機制b在鑒權機制c之前執行等。系統在根據接收到的訪問請求中攜帶的標識符,查找到對應的鑒權機制后,可以按照用戶配置的各種鑒權機制之間的執行次序,從查找到的鑒權機制中,將執行次序排列在第一位的鑒權機制選取為當前鑒權機制。系統在選取出當前鑒權機制后,可以基于所述當前鑒權機制對所述訪問請求進行鑒權,并在本次鑒權通過時,繼續選取執行次序排列在第二位的鑒權機制作為當前鑒權機制,以繼續對所述訪問請求進行鑒權;而在本次鑒權未通過時,則可以確定所述訪問請求未通過鑒權,系統可以將該訪問請求丟棄。
除此之外,也可以將系統查找到與接收到的訪問請求對應的鑒權機制的先后順序,作為系統對該訪問請求進行鑒權時鑒權機制的執行次序。舉例來說,假設系統在接收到某訪問請求中,先后依次查找到對應的鑒權機制為鑒權機制d、鑒權機制e和鑒權機制f,則系統在對該訪問請求進行鑒權時,可以先選取鑒權機制d作為當前鑒權機制對訪問請求進行鑒權,并在本次鑒權通過后,繼續選取鑒權機制e作為下一次鑒權的當前鑒權機制對該訪問請求進行;以此類推。當然,如果系統基于鑒權機制d對該訪問請求進行的鑒權未通過,則系統無需再對該訪問請求進行后續鑒權,而可以將該訪問請求丟棄,以減少系統對該訪問請求進行的鑒權次數,提高系統的鑒權效率。
與相關技術類似的是,系統在確定接收到的訪問請求通過鑒權后,可以根據該訪問請求中攜帶的類名,調用對應的業務接口,以基于該訪問請求執行對應的業務功能。
在本申請技術方案中,由于系統在接收到訪問請求時,可以根據該訪問請求中攜帶的標識符查找對應的鑒權機制,而無需利用該訪問請求中攜帶的類名查找對應的鑒權機制,即類名與鑒權機制之間可以不再有對應關系,因此如果有一個或多個使用方需要采用不同的調用方式調用系統中的同一個業務接口,則針對每一種調用方式配置的類名可以是相同的,而僅需為對應不同鑒權機制的訪問請求配置不同的標識符即可,這樣可以顯著減少類名的數量,從而為系統的維護和擴展提供便利。
與前述鑒權實現方法的實施例相對應,本申請還提供了鑒權實現裝置的實施例。
本申請鑒權實現裝置的實施例可以應用在網絡設備上。裝置實施例可以通過軟件實現,也可以通過硬件或者軟硬件結合的方式實現。以軟件實現為例,作為一個邏輯意義上的裝置,是通過其所在網絡設備的處理器將非易失性存儲器中對應的計算機程序指令讀取到內存中運行形成的。從硬件層面而言,如圖2所示,為本申請鑒權實現裝置所在網絡設備的一種硬件結構圖,除了圖2所示的處理器、內存、網絡接口、以及非易失性存儲器之外,實施例中裝置所在的網絡設備通常根據該鑒權實現的實際功能,還可以包括其他硬件,對此不再贅述。
請參考圖3,為本申請一示例性實施例示出的一種鑒權實現裝置的框圖。該鑒權實現裝置300可以應用于圖2所示的網絡設備中,包括:
獲取單元301,用于在接收到訪問請求后,獲取所述訪問請求中攜帶的標識符;
鑒權單元302,用于查找所述標識符對應的鑒權機制,并基于查找到的鑒權機制對所述訪問請求進行鑒權;
執行單元303,用于在所述訪問請求通過鑒權后,基于所述訪問請求執行對應的業務功能。
在一個可選的實施例中,所述鑒權單元302可以包括:
查找子單元3021,用于根據所述訪問請求中攜帶的標識符,在本地保存的標識符與鑒權機制的映射關系中查找所述標識符對應的鑒權機制。
在另一個可選的實施例中,所述查找子單元3021可以包括:
約定查找子模塊3121,用于在標識符與鑒權機制的約定映射關系中查找所述標識符對應的鑒權機制;其中,所述約定映射關系不可被用戶修改;
配置查找子模塊3122,用于當在所述約定映射關系中未查找到所述標識符對應的鑒權機制時,在標識符與鑒權機制的配置映射關系中查找所述標識符對應的鑒權機制。
在另一個可選的實施例中,所述查找子單元3021具體可以用于:
在預設的配置文件中查找所述標識符對應的鑒權機制;或者,
在預設的數據庫中查找所述標識符對應的鑒權機制。
在另一個可選的實施例中,所述鑒權單元302可以包括:
選取子單元3022,用于按照各種鑒權機制之間的執行次序,從查找到的鑒權機制中選取一種鑒權機制作為當前鑒權機制;
鑒權子單元3023,用于基于所述當前鑒權機制對所述訪問請求進行鑒權;
所述選取子單元3022還用于當本次鑒權通過時,繼續選取一種鑒權機制作為當前鑒權機制;
丟棄子單元3024,用于當本次鑒權未通過時,確定所述訪問請求未通過鑒權,并丟棄所述訪問請求。
上述裝置中各個單元的功能和作用的實現過程具體詳見上述方法中對應步驟的實現過程,在此不再贅述。
對于裝置實施例而言,由于其基本對應于方法實施例,所以相關之處參見方法實施例的部分說明即可。以上所描述的裝置實施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網絡單元上。可以根據實際的需要選擇其中的部分或者全部模塊來實現本申請方案的目的。本領域普通技術人員在不付出創造性勞動的情況下,即可以理解并實施。
以上所述僅為本申請的較佳實施例而已,并不用以限制本申請,凡在本申請的精神和原則之內,所做的任何修改、等同替換、改進等,均應包含在本申請保護的范圍之內。