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