本申請涉及網絡通信技術領域,特別涉及一種單點登錄實現方法及裝置。
背景技術:
單點登錄(Single Sign On,SSO)是目前比較流行的企業業務整合的解決方案之一。單點登錄的定義是在多個應用系統中,客戶端只需要登錄一次就可以訪問多個相互信任的應用系統。
為了實現單點登錄,可以將一個或多個系統(為了描述方便,稱為子系統)集成到一個系統(為了描述方便,稱為父系統)中,登錄父系統即可訪問這些子系統。具體的,將登錄子系統所需的諸如URL(Uniform Resource Locator,統一資源定位符)、請求方式、消息頭和消息體等參數的具體內容,采用編碼的方式寫入父系統的程序代碼中,例如,將URL的具體內容http://192.168.0.1:8080/index寫入父系統的程序代碼中。客戶端登錄進入父系統后,客戶端將上述參數的具體內容發送給服務器端,即可登錄該子系統。
但是,在上述的方法中,由于登錄子系統所需的參數的具體內容是固定的編寫在父系統的程序代碼中的,因此,當需要將新的子系統集成到父系統中時,就需要在父系統的程序代碼中增加對應的參數具體內容的代碼,帶來了較大的編碼工作量,擴展性較差。
技術實現要素:
有鑒于此,本申請提供一種單點登錄實現方法及裝置。
具體地,本申請是通過如下技術方案實現的:
一方面,提供了一種單點登錄實現方法,該方法應用于服務器端,該方法包括:
在需要向父系統中集成子系統時,調用單點登錄所需參數的通用模板,對該通用模板中的各個參數進行賦值,保存各個參數的參數值;
在父系統中設置該子系統的登錄入口,建立該登錄入口與上述參數值的鏈接關系,以使客戶端在檢測到該登錄入口被觸發時,從服務器端獲取這些參數值,使用獲取到的參數值登錄該子系統。
另一方面,還提供了一種單點登錄實現裝置,該裝置應用于服務器端,該裝置包括:
配置單元,用于在需要向父系統中集成子系統時,調用單點登錄所需參數的通用模板,對該通用模板中的各個參數進行賦值,保存各個參數的參數值;
設置單元,用于在父系統中設置該子系統的登錄入口;
建立單元,用于建立設置單元設置的登錄入口與配置單元保存的參數值的鏈接關系,以使客戶端在檢測到該登錄入口被觸發時,從服務器端獲取這些參數值,使用獲取到的參數值登錄該子系統。
通過本申請的以上技術方案,服務器端提供了一種單點登錄所需參數的通用模板,向父系統中集成一個子系統時,只需調用該通用模板,對通用模板中的各個參數進行賦值,即可得到登錄該子系統所需參數的具體內容,設置該子系統的登錄入口,建立該登錄入口與這些具體內容的鏈接關系,后續,客戶端登錄進入父系統,并檢測到該子系統的登錄入口被觸發時,會從服務器端獲取這些具體內容,并使用這些具體內容登錄該子系統,從而實現了登錄父系統即可訪問子系統的目的。而且,由于提供了一種通用模板,可以利用通用模板,不斷的配置更多子系統的登錄所需參數的具體內容,無需增加代碼,減少了編碼工作量,提高了系統的靈活性、可擴展性和易用性。
附圖說明
圖1是本申請一示例性實施例示出的服務器端執行的配置登錄子系統所需的參數的具體內容的方法流程圖;
圖2是本申請一示例性實施例示出的客戶端執行的單點登錄方法流程圖;
圖3是本申請一示例性實施例示出的當采用一步請求認證方式時,客戶端執行的單點登錄方法流程圖;
圖4是本申請一示例性實施例示出的當采用兩步請求認證方式時,客戶端執行的單點登錄方法流程圖;
圖5是本申請一示例性實施例示出的單點登錄實現裝置的結構示意圖。
具體實施方式
這里將詳細地對示例性實施例進行說明,其示例表示在附圖中。下面的描述涉及附圖時,除非另有表示,不同附圖中的相同數字表示相同或相似的要素。以下示例性實施例中所描述的實施方式并不代表與本申請相一致的所有實施方式。相反,它們僅是與如所附權利要求書中所詳述的、本申請的一些方面相一致的裝置和方法的例子。
在本申請使用的術語是僅僅出于描述特定實施例的目的,而非旨在限制本申請。在本申請和所附權利要求書中所使用的單數形式的“一種”、“所述”和“該”也旨在包括多數形式,除非上下文清楚地表示其他含義。還應當理解,本文中使用的術語“和/或”是指并包含一個或多個相關聯的列出項目的任何或所有可能組合。
應當理解,盡管在本申請可能采用術語第一、第二、第三等來描述各種信息,但這些信息不應限于這些術語。這些術語僅用來將同一類型的信息彼此區分開。例如,在不脫離本申請范圍的情況下,第一信息也可以被稱為第二信息,類似地,第二信息也可以被稱為第一信息。取決于語境,如在此所使用的詞語“如果”可以被解釋成為“在……時”或“當……時”或“響應于確定”。
為了解決現有技術中存在的擴展性較差的問題,本申請實施例中提供了一種單點登錄實現方法,以及一種可以應用該方法的裝置。
在本申請實施例的方法中,在服務器端設置了一個通用模板,該通用模板中包含有單點登錄所需的所有參數,在該通用模板中體現了各個參數的參數名和格式。基于此,在需要向父系統中集成一個子系統時,配置登錄該子系統所需的參數的具體內容的方法由服務器端執行,如圖1所示,該方法包括以下步驟:
步驟S101,在需要向父系統中集成子系統時,調用單點登錄所需參數的通用模板,對通用模板中的各個參數進行賦值,保存各個參數的參數值;
其中,為了方便操作,可以使用web(網頁)頁面等界面形式顯示通用模板,以方便用戶通過該界面對各個參數進行賦值,這樣,步驟S101中,調用通用模板,對通用模板中包含的各個參數進行賦值的方式可以是:調用通用模板并通過界面進行顯示;通過界面接收用戶輸入的各個參數的參數值。這樣,通過該界面獲得了登錄該子系統所需的參數的具體內容,即,參數值。
另外,保存各個參數的參數值時,可以將這些參數值保存到數據庫或者文件中,本申請實施例對此不做限定。
步驟S102,在父系統中設置該子系統的登錄入口,建立該登錄入口與保存的參數值的鏈接關系,其中,該登錄入口具體可以是鏈接或者按鈕。
這樣,如圖2所示,客戶端執行的單點登錄方法包括以下步驟:
步驟S201,登錄進入父系統;
在進入父系統中后,在父系統的界面中會顯示出該子系統的登錄入口,用戶可以通過點擊操作來觸發該登錄入口。
步驟S202,在檢測到該子系統的登錄入口被觸發時,從服務器端獲取該登錄入口所鏈接的參數值;
步驟S203,使用獲取到的參數值登錄該子系統。
本申請實施例的方法中,服務器端提供了一種單點登錄所需參數的通用模板,向父系統中集成一個子系統時,只需調用該通用模板,對通用模板中的各個參數進行賦值,即可得到登錄該子系統所需參數的具體內容,設置該子系統的登錄入口,建立該登錄入口與這些具體內容的鏈接關系,后續,客戶端登錄進入父系統,并檢測到該子系統的登錄入口被觸發時,會從服務器端獲取這些具體內容,并使用這些具體內容登錄該子系統,從而實現了登錄父系統即可訪問子系統的目的。而且,由于提供了一種通用模板,可以利用通用模板,不斷的配置更多子系統的登錄所需參數的具體內容,無需增加代碼,減少了編碼工作量,提高了系統的靈活性、可擴展性和易用性。
在實際實施過程中,由于單點登錄的方式主要有兩種:一步請求認證方式和兩步請求認證方式,采用不同方式時,單點登錄所需參數不同,并且,登錄子系統的流程也不同,分別介紹如下。
1、一步請求認證方式:
當采用一步請求認證方式時,通用模板中包括需要攜帶在登錄請求消息中URL、請求方式、消息頭和消息體等參數,其中,URL、消息頭、消息體中的任一參數用于攜帶子系統的認證信息,例如,該認證信息可以為用戶名和密碼。在通用模板中,URL的格式例如可以為:協議://域名或者IP:端口號/path。
上述請求方式的參數值可以是GET(獲取)、POST(提交)、PUT(添加)、DELETE(刪除)等方式中的任一種。
另外,通用模板中還可以包括子系統的ID。
服務器端執行如圖1所示的方法。后續,客戶端執行的單點登錄方法如圖3所示,包括以下步驟:
步驟S301,登錄進入父系統;
在進入父系統中后,在父系統的界面中會顯示出該子系統的登錄入口,用戶可以通過點擊操作來觸發該登錄入口。
步驟S302,在檢測到該子系統的登錄入口被觸發時,從服務器端獲取該登錄入口所鏈接的需要攜帶在登錄請求消息中的URL、請求方式、消息頭和消息體等參數的參數值;
上述URL、消息頭、消息體中的任一參數的參數值中攜帶有該子系統的認證信息。
步驟S303,將獲取到的參數值封裝成登錄請求消息后發送給服務器端,以便登錄該子系統。
服務器端可以從該登錄請求消息中獲取該子系統的認證信息,對獲取到的認證信息進行驗證,驗證通過后,客戶端即可登錄進入該子系統。
2、兩步請求認證方式
當采用兩步請求認證方式時,通用模板中包括如下參數:
(1)需要攜帶在令牌獲取請求消息中的參數,其中包括:URL、請求方式、消息頭和消息體。其中,上述請求方式的參數值可以是GET、POST、PUT、DELETE等方式中的任一種。
(2)需要攜帶在登錄請求消息中的參數,其中包括:URL、請求方式、消息頭和消息體,其中,URL、消息頭、消息體中的任一參數用于攜帶令牌。其中,上述請求方式的參數值可以是GET、POST、PUT、DELETE等方式中的任一種。
在通用模板中,URL的格式例如可以為:協議://域名或者IP:端口號/path。
(3)令牌提取參數,令牌提取參數為客戶端從服務器端發來的攜帶令牌的消息(該消息可以是令牌獲取響應消息)中提取令牌所需的參數。令牌提取參數中可以包括:令牌名稱、令牌提取位置、以及令牌提取方式。其中,令牌提取位置用于指示從令牌獲取響應消息的哪個位置提取令牌,令牌提取位置的參數值可以是消息頭或消息體;令牌提取方式用于指示提取令牌的方式。其中,令牌提取方式中具體可以包括:令牌呈現語言和令牌定位方式等,例如,當令牌呈現語言的參數值為XML(Extensible Markup Language,可擴展標記語言)時,令牌定位方式的參數值為XPath(XML路徑語言),當令牌呈現語言的參數值為JSON(JavaScript Object Notation,JavaScript對象表示法)時,令牌定位方式的參數值為JSONPath(JSON路徑語言),當令牌呈現語言的參數值為文本時,令牌定位方式的參數值為正則表達式。
另外,通用模板中還可以包括子系統的ID。
服務器端執行如圖1所示的方法。后續,客戶端執行的單點登錄方法如圖4所示,包括以下步驟:
步驟S401,登錄進入父系統;
在進入父系統中后,在父系統的界面中會顯示出該子系統的登錄入口,用戶可以通過點擊操作來觸發該登錄入口。
步驟S402,在檢測到該子系統的登錄入口被觸發時,從服務器端獲取該登錄入口所鏈接的需要攜帶在令牌獲取請求消息中的參數的參數值、需要攜帶在登錄請求消息中的參數的參數值、以及令牌提取參數的參數值;
步驟S403,將獲取到的需要攜帶在令牌獲取請求消息中的參數的參數值,封裝成令牌獲取請求消息發送給服務器端;
服務器端接收到該令牌獲取請求消息后,將為客戶端分配的令牌攜帶在令牌獲取響應消息中發送給客戶端。
步驟S404,在接收到服務器端回應的令牌獲取響應消息后,按照獲取到的令牌提取參數的參數值,從該令牌獲取響應消息中提取令牌;
具體的,令牌提取參數中包括:令牌名稱、令牌提取位置、以及令牌提取方式,則步驟S404中從該令牌獲取響應消息中提取令牌的方法可以是:按照令牌提取方式的參數值,從令牌獲取響應消息中的指定位置中,提取出對應于指定名稱的數值作為令牌,其中,該指定位置為令牌提取位置的參數值所指示的位置,該指定名稱為令牌名稱的參數值。
步驟S405,將提取到的令牌攜帶在獲取到的需要攜帶在登錄請求消息中的URL、消息頭、消息體中的任一參數的參數值中,之后將獲取到的需要攜帶在登錄請求消息中的參數的參數值,封裝成登錄請求消息發送給服務器端,以便登錄子系統。
服務器端接收到該登錄請求消息之后,從該登錄請求消息中獲取令牌,對獲取到的令牌進行驗證,驗證通過后,客戶端即可登錄進入該子系統。
與前述單點登錄實現方法的實施例相對應,本申請還提供了單點登錄實現裝置的實施例,該裝置可以應用于服務器端中。如圖5所示,本申請實施例的單點登錄實現裝置中包括以下單元:配置單元501、設置單元502和建立單元503,其中:
配置單元501,用于在需要向父系統中集成子系統時,調用單點登錄所需參數的通用模板,對該通用模板中的各個參數進行賦值,保存各個參數的參數值;
設置單元502,用于在父系統中設置該子系統的登錄入口;
建立單元503,用于建立設置單元502設置的登錄入口與配置單元501保存的參數值的鏈接關系,以使客戶端在檢測到該登錄入口被觸發時,從服務器端獲取這些參數值,使用獲取到的參數值登錄該子系統。
其中,配置單元501具體用于通過以下方式調用通用模板,對該通用模板中包含的各個參數進行賦值:
調用該通用模板并通過界面進行顯示;
通過該界面接收用戶輸入的各個參數的參數值。
其中,該通用模板中的參數包括:需要攜帶在登錄請求消息中的URL、請求方式、消息頭和消息體,其中,URL、消息頭、消息體中的任一參數用于攜帶該子系統的認證信息。
其中,該通用模板中的參數包括:需要攜帶在令牌獲取請求消息中的參數,以及需要攜帶在登錄請求消息中的參數;
需要攜帶在令牌獲取請求消息中的參數包括:URL、請求方式、消息頭和消息體;
需要攜帶在登錄請求消息中的參數包括:URL、請求方式、消息頭和消息體,其中,URL、消息頭、消息體中的任一參數用于攜帶令牌。
其中,該通用模板中的參數還包括:令牌提取參數,該令牌提取參數為客戶端從服務器端發來的攜帶令牌的消息中提取令牌所需的參數。
上述裝置中各個單元的功能和作用的實現過程具體詳見上述方法中對應步驟的實現過程,在此不再贅述。
對于裝置實施例而言,由于其基本對應于方法實施例,所以相關之處參見方法實施例的部分說明即可。以上所描述的裝置實施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網絡單元上。可以根據實際的需要選擇其中的部分或者全部模塊來實現本申請方案的目的。本領域普通技術人員在不付出創造性勞動的情況下,即可以理解并實施。
以上所述僅為本申請的較佳實施例而已,并不用以限制本申請,凡在本申請的精神和原則之內,所做的任何修改、等同替換、改進等,均應包含在本申請保護的范圍之內。