国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于SAML的單點(diǎn)登錄技術(shù)在校園網(wǎng)中的應(yīng)用研究及實(shí)現(xiàn)*

2013-09-13 04:08楊艷明
關(guān)鍵詞:斷言權(quán)威消息

楊艷明

(楚雄師范學(xué)院計(jì)算機(jī)信息管理中心,云南 楚雄 675000)

1.引言

隨著計(jì)算機(jī)技術(shù)和通信技術(shù)的發(fā)展,單點(diǎn)登錄 (SSO)技術(shù)也得到了越來越廣泛的使用,在各種應(yīng)用系統(tǒng)中提高安全性和方便性,通過相互之間交換安全信息,單點(diǎn)登錄可以實(shí)現(xiàn)同一用戶對不同系統(tǒng)的訪問,而不需要對用戶進(jìn)行多次認(rèn)證,這不僅提高了應(yīng)用程序的安全性,也方便了用戶,提高了工作效率。針對我校校園網(wǎng)的實(shí)際情況,本文提出了一種.NET平臺(tái)下基于SAML的單點(diǎn)登錄系統(tǒng),并實(shí)現(xiàn)其主要部分,以期在校園網(wǎng)中得到應(yīng)用。

2.系統(tǒng)結(jié)構(gòu)

2.1 主要組成部分

根據(jù)SAML規(guī)范進(jìn)行設(shè)計(jì),可以將基于SAML的單點(diǎn)登錄系統(tǒng)劃分為SAML權(quán)威、應(yīng)用系統(tǒng)和用戶代理三個(gè)部分:SAML權(quán)威是安全信息的提供方,也稱為認(rèn)證服務(wù)器,是單點(diǎn)登錄系統(tǒng)的核心,是服務(wù)的提供者;應(yīng)用系統(tǒng)向用戶提供某種資源或服務(wù),它由兩個(gè)部分組成:負(fù)責(zé)提供服務(wù)的應(yīng)用程序和用來實(shí)現(xiàn)單點(diǎn)登錄功能的單點(diǎn)登錄客戶端程序;用戶代理一般是指瀏覽器,在本系統(tǒng)中可以使用各種常見的瀏覽器,但要求瀏覽器支持TLS1.0或者SSL3.0,可以保證信息傳輸過程中的安全。根據(jù)設(shè)計(jì),本系統(tǒng)共使用了SAML規(guī)范中的SAML認(rèn)證請求協(xié)議、HTTP POST、HTTP重定向 (即Redirect)和HTTP輔件綁定等技術(shù)。

2.2 處理流程

在該系統(tǒng)中,用戶可以首先訪問SAML權(quán)威來認(rèn)證自己的身份,也可以不認(rèn)證就直接訪問Web應(yīng)用程序。Web應(yīng)用程序會(huì)對接受到的所有訪問請求進(jìn)行檢查,對于尚未通過認(rèn)證的用戶,就把請求重新定向給SAML權(quán)威,要求它對該用戶進(jìn)行認(rèn)證。詳細(xì)處理流程如下:

(1)用戶代理向應(yīng)用系統(tǒng)發(fā)送HTTP請求消息,請求訪問相關(guān)資源;

(2)為了對請求進(jìn)行響應(yīng),收到請求的應(yīng)用系統(tǒng)會(huì)返回一個(gè)含有輔件或者<AuthnRequest>消息的HTTP應(yīng)答消息,而用戶代理則會(huì)將該消息轉(zhuǎn)發(fā)到SAML權(quán)威處。該消息或應(yīng)答會(huì)被用戶代理轉(zhuǎn)發(fā)給SAML權(quán)威;

(3)按照SAML規(guī)范所定義的規(guī)則,SAML權(quán)威應(yīng)處理所收到的<AuthnRequest>消息;

(4)SAML權(quán)威可以使用某種特定方法來識別用戶的身份。為了正確識別用戶,SAML權(quán)威還需要建立用戶的身份標(biāo)識,如果建立失敗則需要返回錯(cuò)誤信息給發(fā)送請求的應(yīng)用程序;

(5)認(rèn)證完成后,SAML權(quán)威會(huì)給用戶代理發(fā)回一個(gè)<Response>消息,用戶代理再將該消息轉(zhuǎn)發(fā)到應(yīng)用程序處。在此過程中,消息的傳輸可以使用HTTP POST或者HTTP輔件綁定來實(shí)現(xiàn)。不管<AuthnRequest>消息處理結(jié)果是成功還是失敗,SAML權(quán)威都應(yīng)該生成含有輔件或者<Response>消息的HTTP應(yīng)答消息并將其發(fā)回給用戶代理,而該消息最終會(huì)被轉(zhuǎn)發(fā)到需要對用戶身份進(jìn)行識別的應(yīng)用系統(tǒng)處;

(6)最后,應(yīng)用系統(tǒng)將會(huì)對所收到的來自SAML權(quán)威的應(yīng)答消息進(jìn)行處理,檢查<Response>中所包含的各個(gè)斷言元素,并根據(jù)其包含的信息來判定是否應(yīng)該同意或拒絕用戶對系統(tǒng)中資源的訪問請求。

2.3 SAML斷言及認(rèn)證請求

在SAML規(guī)范中,斷言是一個(gè)重要的內(nèi)容,它封裝了描述用戶的安全信息,除了作為其主要成分的聲明 (分為認(rèn)證聲明和屬性聲明兩種)外,斷言還包含有相關(guān)約束條件和其他內(nèi)容。斷言包含有ID、IssueInstant和Version三個(gè)屬性:ID是斷言的標(biāo)識符,可以在引用某個(gè)斷言的時(shí)候使用它,屬于XML模型中定義的ID類型;IssueInstant是SAML斷言發(fā)布的時(shí)間,采用CCYY-MM-DDThh:mm:ss的格式,字符T是日期和時(shí)間之間的分隔符;屬性Version則指明該斷言所遵循的SAML規(guī)范的版本。

在本系統(tǒng)中還使用了SAML規(guī)范定義的認(rèn)證請求協(xié)議。作為請求者和依賴方,需要對用戶進(jìn)行認(rèn)證的應(yīng)用系統(tǒng)首先向SAML權(quán)威發(fā)送請求認(rèn)證消息<AuthnRequest>;而作為應(yīng)答者和斷言方,SAML權(quán)威在收到請求認(rèn)證消息后對用戶身份進(jìn)行認(rèn)證,并在認(rèn)證結(jié)束后根據(jù)結(jié)果返回<Response>消息。

(1)請求認(rèn)證消息<AuthnRequest>

在請求認(rèn)證消息<AuthnRequest>中,應(yīng)用系統(tǒng)可以根據(jù)需要加入SAML規(guī)范中允許的任何信息。在SAML權(quán)威對其中所包含的信息進(jìn)行處理過程中,必須遵循SAML規(guī)范的規(guī)則。若SAML權(quán)威未能正確回復(fù)請求認(rèn)證消息,則必須返回一個(gè)包含合適狀態(tài)信息的<Response>消息。另外,<AuthnRequest>消息還可能包含數(shù)字簽名,如果雙方使用HTTP輔件綁定的方式,則可以自由選擇是否進(jìn)行認(rèn)證,如果要認(rèn)證也可以使用HTTP輔件綁定所允許的任何一種方法。

(2)認(rèn)證應(yīng)答消息<Response>

若<AuthnRequest>消息請求成功,則SAML權(quán)威必須返回一個(gè)應(yīng)答消息<Response>,該消息至少要包含一個(gè)斷言元素<Assertion>和一個(gè)認(rèn)證聲明元素<AuthnStatement>,而且在斷言中的<Issuer>部分必須包含能唯一標(biāo)識發(fā)布斷言的SAML權(quán)威的信息。如果SAML權(quán)威的目的只是返回一個(gè)錯(cuò)誤信息,則不能將任何斷言放在<Response>消息中。

3.SAML權(quán)威

SAML權(quán)威是本系統(tǒng)的核心部分,它主要完成兩個(gè)功能:一是采用合適的方法確認(rèn)用戶的身份,并向用戶提供訪問各個(gè)Web應(yīng)用系統(tǒng)的入口;二是向各個(gè)Web應(yīng)用系統(tǒng)提供所需的SAML斷言,使得這些Web應(yīng)用系統(tǒng)能夠?qū)τ脩舻脑L問進(jìn)行有效地控制。

3.1 認(rèn)證用戶身份

本模塊的主要功能是認(rèn)證用戶身份,根據(jù)需要還可能會(huì)使用到其他模塊提供的服務(wù)。在本系統(tǒng)中,使用了用戶名和密碼的方式來認(rèn)證用戶,為了進(jìn)一步提高認(rèn)證功能的安全性,還要求瀏覽器和認(rèn)證服務(wù)程序都支持SSL3.0或者TLS1.0,這樣就可以減少用戶安全信息在傳輸過程中泄露的可能性,降低了系統(tǒng)遭受惡意攻擊的概率。同時(shí),為了在以后的擴(kuò)展中使用其他的強(qiáng)認(rèn)證機(jī)制來提高系統(tǒng)的安全性,如PKI、Kerberos等,系統(tǒng)也留下了相關(guān)的編程接口。為了對用戶的身份進(jìn)行驗(yàn)證,系統(tǒng)還需要使用數(shù)據(jù)庫來保存各個(gè)用戶的安全信息和具有的屬性。另一方面,各個(gè)Web應(yīng)用系統(tǒng)則在收到SAML斷言后,會(huì)根據(jù)用戶所具有的屬性來決定是否允許其對站內(nèi)服務(wù)和資源的訪問。

3.2 生成SAML斷言

本模塊的主要功能是根據(jù)請求生成相應(yīng)的SAML斷言。為了生成正確的斷言,需要同時(shí)使用數(shù)據(jù)庫中保存的用戶信息和系統(tǒng)相關(guān)信息。在斷言生成操作中,首先要按照用戶的標(biāo)識符從數(shù)據(jù)庫中獲取用戶信息,并結(jié)合用戶信息和系統(tǒng)級信息生成合適的能夠描述用戶屬性的斷言,然后就要使用SAML斷言管理模塊提供的程序?qū)⑿律傻臄嘌宰缘较到y(tǒng)中,接下來就由該模塊對斷言進(jìn)行管理了。

3.3 管理SAML斷言

本模塊的主要功能是管理SAML斷言及和它一起配合使用的輔件數(shù)據(jù),具體包括注冊斷言和輔件數(shù)據(jù)、查詢或者刪除它們。SAML斷言是具有有效期的,在有效期內(nèi)斷言可以被Web應(yīng)用系統(tǒng)使用任意次,但超出有效期就不能使用了。在本系統(tǒng)中,使用了數(shù)據(jù)庫來存儲(chǔ)斷言和輔件數(shù)據(jù)artifact,這樣可以獲得更好的效率。

3.4 處理SAML協(xié)議消息

在SAML規(guī)范中,對于如何在SAML權(quán)威和Web應(yīng)用系統(tǒng)之間交換SAML斷言提供了詳細(xì)的協(xié)議,而且還定義了協(xié)議的消息結(jié)構(gòu)和完備的處理規(guī)則。這些斷言交換協(xié)議都是采用請求-應(yīng)答的方式,客戶端先發(fā)送一條請求消息,服務(wù)器端收到請求消息后,會(huì)按照預(yù)先定義的規(guī)則來處理請求,并根據(jù)處理結(jié)果返回相應(yīng)的SAML斷言 (處理成功)或者錯(cuò)誤信息 (處理失敗)。為了共享描述用戶的安全信息,作為服務(wù)器端的SAML權(quán)威和作為客戶端的Web應(yīng)用系統(tǒng)需要使用這些協(xié)議。本系統(tǒng)中,SAML權(quán)威和Web應(yīng)用系統(tǒng)使用了SAML規(guī)范中定義的兩個(gè)協(xié)議:輔件artifact處理協(xié)議和斷言獲取協(xié)議。

該模塊通過消息傳輸模塊接收客戶端發(fā)送來的ArtifactResolve消息和AssertionIDRequest消息,進(jìn)行合適的處理后,生成相應(yīng)的ArtifactResponse消息或者Response消息返回給客戶端。收到請求消息后,如果是加密過的則要進(jìn)行解密操作,然后對其有效性進(jìn)行驗(yàn)證,如驗(yàn)證簽名、驗(yàn)證有效期和執(zhí)行SAML規(guī)范中定義的其他需要的驗(yàn)證工作。成功通過驗(yàn)證的請求消息才能進(jìn)入下一個(gè)處理環(huán)節(jié),否則就會(huì)被當(dāng)作無效消息而丟棄掉。完成請求消息的驗(yàn)證工作后,本模塊會(huì)使用請求消息中的參數(shù)到SAML斷言管理模塊處獲取客戶端需要的SAML斷言。如果獲取成功,正確的斷言就會(huì)被作為ArtifactResponse或者Response消息的一部分經(jīng)由消息傳輸模塊返回給客戶端。

SAML協(xié)議消息是按照XML格式編寫的,但在消息傳輸模塊處就被轉(zhuǎn)換成了具體編程語言能夠操作的數(shù)據(jù)結(jié)構(gòu),這樣就減輕了消息處理模塊的工作負(fù)擔(dān)。反之,消息處理模塊生成的應(yīng)答消息也會(huì)被消息傳輸模塊轉(zhuǎn)換成XML格式。

3.5 通過SOAP進(jìn)行消息傳輸

消息傳輸模塊負(fù)責(zé)與具體的傳輸協(xié)議如SOAP、HTTP等的綁定操作,并通過建立好的綁定傳輸以XML格式組織的SAML協(xié)議消息。消息傳輸模塊從SAML協(xié)議消息處理模塊處得到以編程語言可處理的數(shù)據(jù)結(jié)構(gòu)封裝的SAML協(xié)議消息,進(jìn)行相應(yīng)處理轉(zhuǎn)換成XML格式后,通過所綁定的傳輸協(xié)議發(fā)送出去。同時(shí),消息傳輸模塊通過綁定的傳輸協(xié)議接收客戶端發(fā)送來的信息,然后解析轉(zhuǎn)換成編程語言可處理的數(shù)據(jù)結(jié)構(gòu),并把它交給SAML協(xié)議消息處理模塊。

在本系統(tǒng)中,通過SOAP over HTTP的綁定方式,使用Web Service的模式來實(shí)現(xiàn)SAML協(xié)議消息的交換。Web應(yīng)用系統(tǒng)向SAML權(quán)威提出請求,使用其提供的服務(wù),并根據(jù)請求處理結(jié)果得到不同的信息。

4.SSO客戶端

SSO客戶端程序包含在需要使用單點(diǎn)登錄服務(wù)的每一個(gè)Web應(yīng)用系統(tǒng)中,它代表Web應(yīng)用系統(tǒng)向SAML權(quán)威提出服務(wù)請求,并將封裝在返回消息中的SAML斷言取出來交Web應(yīng)用系統(tǒng)。SSO客戶端包含三個(gè)組成部分:SAML斷言處理模塊、SAML協(xié)議消息處理模塊和消息傳輸模塊,三個(gè)模塊之間分工協(xié)作,共同完成連接SAML權(quán)威和Web應(yīng)用系統(tǒng)、實(shí)現(xiàn)用戶在多個(gè)系統(tǒng)之間只登錄一次就可以隨意訪問的目的。

SSO客戶端所實(shí)現(xiàn)的主要功能是向SAML權(quán)威請求SAML斷言,并進(jìn)行初步處理后將其交給Web應(yīng)用系統(tǒng)。為了實(shí)現(xiàn)這一目的,SSO客戶端需要和SAML權(quán)威進(jìn)行通信,它首先向服務(wù)器發(fā)送包含ArtifactResolve或AssertionIDRequest消息的訪問請求,該請求中的參數(shù)指明了所需的SAML斷言;收到客戶端的請求消息后,服務(wù)器進(jìn)行相應(yīng)的處理,并將處理結(jié)果發(fā)回給客戶端。SSO客戶端會(huì)對收到的信息進(jìn)行解析處理,并將其中包含的斷言信息傳遞給Web應(yīng)用系統(tǒng)。

4.1 通過SOAP進(jìn)行消息傳輸

客戶端消息傳輸模塊的功能和實(shí)現(xiàn)機(jī)制與服務(wù)器端消息傳輸模塊一致,此處不再贅述,相關(guān)內(nèi)容請查閱本文3.5節(jié)。

4.2 處理SAML協(xié)議消息

本模塊的主要功能包括以下兩個(gè)方面:1)按照提供的輔件信息生成對應(yīng)的ArtifactResolve或AssertionIDRequest消息,并將其交給消息傳輸模塊;2)接收消息傳輸模塊轉(zhuǎn)交來的ArtifactResponse或Response消息,解析出封裝在其中的SAML斷言并將其交給后面的SAML斷言處理模塊。如果收到的消息是加密過的,則先進(jìn)行解密操作,然后執(zhí)行簽名驗(yàn)證、有效期驗(yàn)證及其他SAML規(guī)范支持的驗(yàn)證操作。成功通過驗(yàn)證操作的消息才會(huì)被交個(gè)斷言處理模塊,沒有通過驗(yàn)證的則視為無效信息被丟棄。

4.3 處理SAML斷言

SAML斷言處理模塊的功能是從接收到的斷言信息中解析出封裝的用戶安全信息,并將其傳遞給需要對用戶進(jìn)行驗(yàn)證的Web應(yīng)用系統(tǒng)。有些斷言可能具有數(shù)字簽名或有效性限制條件,還可能是經(jīng)過加密的,本模塊需要根據(jù)不同的情況執(zhí)行合適的操作:帶有數(shù)字簽名的,需要對數(shù)字簽名的有效性進(jìn)行驗(yàn)證,確定簽名者的可信任度;帶有有效性限制的,需要根據(jù)SAML規(guī)范執(zhí)行驗(yàn)證操作,只有處理結(jié)果為有效的斷言才能被Web應(yīng)用系統(tǒng)使用;對于加過密的斷言,需要根據(jù)加密技術(shù)進(jìn)行解密。處理完成后,本模塊還需要將斷言轉(zhuǎn)換成Web應(yīng)用系統(tǒng)可以直接使用的格式。

5.SAML權(quán)威的實(shí)現(xiàn)

SAML權(quán)威有多個(gè)組成部分,分別完成不同的任務(wù),通過協(xié)作來實(shí)現(xiàn)系統(tǒng)的總體功能,根據(jù)各個(gè)模塊任務(wù)的特點(diǎn)應(yīng)該使用不同的技術(shù)來實(shí)現(xiàn)。

(1)用戶認(rèn)證模塊的任務(wù)是確認(rèn)用戶的真實(shí)身份,是整個(gè)應(yīng)用程序邏輯的入口,可以使用ASP.NET WEB應(yīng)用程序來實(shí)現(xiàn);

(2)生成、管理及處理SAML斷言和處理SAML協(xié)議消息這幾個(gè)模塊會(huì)被其他模塊調(diào)用,所以可以實(shí)現(xiàn)為動(dòng)態(tài)連接庫,并在部署應(yīng)用程序時(shí)將其包含在內(nèi)。這幾個(gè)模塊可以將其實(shí)現(xiàn)為類庫,打包部署在.NET框架中;

(3)由于WEB服務(wù)中使用了SOAP技術(shù),可以在相互之間傳遞XML格式的斷言信息。因此,消息傳輸模塊也可以實(shí)現(xiàn)為ASP.NET WEB服務(wù)的形式;

(4)所有數(shù)據(jù)均存儲(chǔ)在數(shù)據(jù)庫中,方便執(zhí)行保存、查詢、更新和刪除操作,同時(shí)也能提高管理效率和方便性。在本系統(tǒng)中,有用戶基本信息、用戶屬性信息和SAML斷言需要保存。

5.1 用戶認(rèn)證模塊的實(shí)現(xiàn)

本模塊是整個(gè)系統(tǒng)的入口,需要和用戶進(jìn)行交互以獲取用戶的身份信息并進(jìn)行驗(yàn)證。根據(jù)前面的分析,本模塊將使用ASP.NET Web技術(shù)來實(shí)現(xiàn),包含系統(tǒng)流程控制、登錄驗(yàn)證和Web應(yīng)用程序入口三個(gè)部分。

(1)系統(tǒng)流程控制

本組件首先接收來自用戶的訪問請求,并根據(jù)請求中攜帶的信息和用戶會(huì)話判斷請求所屬的類別。在這里,我們把用戶的請求分為五類:1)用戶已經(jīng)輸入名稱和密碼,請求登錄,可以直接將請求轉(zhuǎn)發(fā)給登錄驗(yàn)證組件;2)用戶已經(jīng)成功登錄,請求訪問某個(gè)Web應(yīng)用系統(tǒng),可以直接將請求轉(zhuǎn)發(fā)給Web應(yīng)用程序入口組件;3)用戶已經(jīng)成功登錄,請求注銷登錄狀態(tài),需要結(jié)束用戶會(huì)話并將關(guān)聯(lián)的日志信息保存到數(shù)據(jù)庫中,然后將用戶重定向到登錄頁面;4)用戶是首次訪問,請求中也沒有攜帶其他任何數(shù)據(jù),則直接將用戶定向到登錄頁面;5)用戶是首次訪問,但訪問請求是由Web應(yīng)用系統(tǒng)轉(zhuǎn)發(fā)來的,其中包含了轉(zhuǎn)發(fā)者的標(biāo)識信息 (URI),可以先將Web應(yīng)用系統(tǒng)的標(biāo)識信息存儲(chǔ)在會(huì)話中,然后再將用戶定向到登錄頁面。

(2)登錄驗(yàn)證

本組件負(fù)責(zé)對用戶的身份進(jìn)行確認(rèn),驗(yàn)證過程中使用的是用戶名和密碼信息。如果數(shù)據(jù)庫中不存在該用戶名或者用戶存在但密碼不對,則驗(yàn)證失敗,需要向用戶返回錯(cuò)誤頁面;反之則登錄成功。用戶登錄成功后,系統(tǒng)就會(huì)生成描述用戶安全信息的SAML斷言及輔助信息,然后將用戶請求傳遞給Web應(yīng)用程序入口。

(3)Web應(yīng)用程序入口

本組件向成功登錄的用戶顯示所有集成到系統(tǒng)中的Web應(yīng)用程序列表,提供訪問入口。如果用戶請求是由登錄組件發(fā)送過來的,則需要將數(shù)據(jù)庫中存儲(chǔ)的用戶可以訪問的所有Web應(yīng)用程序信息查詢出來,和用戶請求一起顯示給用戶。如果用戶請求是由某個(gè)Web應(yīng)用程序轉(zhuǎn)發(fā)過來的,則需要調(diào)用SAML斷言管理模塊來生成本次請求的輔件,并將其隨訪問請求一起發(fā)送給Web應(yīng)用程序。

5.2 生成和管理SAML斷言

(1)生成斷言

為了描述SAML斷言及其各種組成部分,系統(tǒng)中設(shè)計(jì)了一系列的類,如Assertion類、AuthnStatement類、AttributeStatement類、Conditions類、Issuer類、Subject類、AuthnContext類、Attribute類、AudienceRestriction類、ProxyRestriction類和NameID類等。各類的關(guān)系見下圖:

所有的類都有各自的方法和屬性,包含了對應(yīng)XML元素的子元素和屬性等信息,而其方法則提供了一種訪問屬性的手段。在每個(gè)類中,都提供了一個(gè)名為toXML()的方法,它可以將類中包含的信息轉(zhuǎn)換成對應(yīng)的XML文檔。另外,還有一個(gè)名為AssertionFactory的類,專門負(fù)責(zé)生成所需的SAML斷言。

(2)管理斷言

為了對斷言進(jìn)行管理,需要提供插入新斷言、刪除斷言和查找斷言等功能。另外,客戶登錄過程中用來獲取斷言的輔件,也需要在本模塊中生成。

AssertionManager類負(fù)責(zé)對斷言進(jìn)行管理,它提供了相應(yīng)的方法來完成各種操作:openConnection()方法可以連接數(shù)據(jù)庫、closeConnect()方法可以斷開已經(jīng)連接的數(shù)據(jù)庫、saveAssertion()方法可以把斷言保存到數(shù)據(jù)庫中、GetArtifact()方法可以生成并保存輔件。另外,該類還有一些方法可以對用戶事件是否有效、斷言是否超出有效期等方面進(jìn)行驗(yàn)證。其中,斷言管理工作的重點(diǎn)是查詢,SAML協(xié)議消息處理模塊會(huì)經(jīng)常調(diào)用此功能來獲取所需的斷言。

5.3 處理SAML協(xié)議消息

本模塊的任務(wù)是接收由傳輸模塊轉(zhuǎn)發(fā)來的SAML協(xié)議消息,并根據(jù)需要從數(shù)據(jù)庫中取出斷言,然后生成對應(yīng)的應(yīng)答消息交給傳輸模塊。

本模塊的功能主要由MessageParser類來實(shí)現(xiàn),它負(fù)責(zé)將XML格式的協(xié)議消息轉(zhuǎn)換成對應(yīng)的C#類對象。轉(zhuǎn)換工作的結(jié)果是一個(gè)ArtifactResolve類對象,里面包含了請求信息。然后,由MessageFactory類對轉(zhuǎn)換后的協(xié)議消息進(jìn)行有效性驗(yàn)證,驗(yàn)證通過則繼續(xù)進(jìn)行處理,否則直接向傳輸模塊發(fā)送不包含任何斷言信息的ArtifactResponse消息。

5.4 傳輸模塊

SAML協(xié)議信息的傳輸由AssertionService類完成,是一個(gè)Web服務(wù)程序。該類屬于Sbsso.Protocol名稱空間,超類是System.Web.Service名稱空間下的WebService類。由于其繼承關(guān)系,此Web服務(wù)可以使用任何地方定義的ASP.NET標(biāo)準(zhǔn)對象。

6.SSO客戶端的實(shí)現(xiàn)

6.1 數(shù)據(jù)傳輸

Web應(yīng)用程序中的SSO客戶端程序負(fù)責(zé)接收來自協(xié)議消息處理模塊的SAML協(xié)議數(shù)據(jù),將其封裝在SOAP協(xié)議數(shù)據(jù)單元中,然后調(diào)用對應(yīng)的Web服務(wù)進(jìn)行傳輸,并接收對方返回的應(yīng)答消息,轉(zhuǎn)交給協(xié)議數(shù)據(jù)處理模塊。

6.2 SAML協(xié)議消息處理

SAML協(xié)議消息處理模塊完成兩個(gè)方面的工作:生成請求消息和解析應(yīng)答消息。為了向SAML權(quán)威請求描述用戶安全信息的SAML斷言,SSO客戶端會(huì)先生成一個(gè)SAML協(xié)議消息。反之,收到SAML權(quán)威返回的應(yīng)答消息后,也需要進(jìn)行相應(yīng)的解析處理,取出封裝在里面的協(xié)議消息。

SSO客戶端給SAML權(quán)威發(fā)送的信息封裝在AssertionIDRequest類和類ArtifactResolve對象中,指明了所請求斷言的輔件信息或者斷言ID引用。與此對應(yīng),SAML權(quán)威返回的Response或者ArtifactResponse應(yīng)答消息會(huì)由ResponseParser類的方法將其轉(zhuǎn)換成相應(yīng)的C#類對象。

6.3 處理SAML斷言

需要對斷言進(jìn)行兩個(gè)方面的處理:1)對于加了密或者使用了數(shù)字簽名的斷言,可以按照XML加密規(guī)范和XML簽名規(guī)則進(jìn)行對應(yīng)的處理;2)如果SAML斷言封裝在C#類對象中,則要進(jìn)行有效性嚴(yán)整,驗(yàn)證通過則返回其中包含的信息,驗(yàn)證失敗則返回空的斷言。有效性驗(yàn)證的內(nèi)容包括三個(gè)方面:1)驗(yàn)證斷言的有效期;2)作為斷言接收方的SSO客戶端是否位于有效的接收者名單中;3)斷言的使用次數(shù)是一次還是多次,有沒有超出次數(shù)限制。

AssertionValidate類負(fù)責(zé)對斷言進(jìn)行有效性驗(yàn)證,它提供了對應(yīng)的方法來執(zhí)行這些操作。

7.系統(tǒng)部署

根據(jù)上以的設(shè)計(jì)及實(shí)現(xiàn)方法,結(jié)合我校實(shí)際,可做如下部署:

(1)SAML權(quán)威的部署

作為聯(lián)合身份認(rèn)證的關(guān)鍵部分,SAML權(quán)威應(yīng)部署于校園網(wǎng)內(nèi)獨(dú)立服務(wù)器中,并最大限度地保證服務(wù)器的安全。用戶信息和斷言的存儲(chǔ)采用數(shù)據(jù)庫技術(shù),可選用適合的數(shù)據(jù)庫產(chǎn)品進(jìn)行存儲(chǔ),如SQL Server等。由于本系統(tǒng)采用C#作為開發(fā)語言,因此,SAML權(quán)威服務(wù)器上應(yīng)安裝.NET Framework平臺(tái)和IIS軟件,并部署相應(yīng)ASP.NET Web應(yīng)用程序和ASP.NET Web服務(wù)。

(2)單點(diǎn)登錄客戶端的部署

單點(diǎn)登錄客戶端應(yīng)分別安裝于各個(gè)Web應(yīng)用系統(tǒng)中。由于目前只實(shí)現(xiàn)了.NET版本,所以只支持ASP.NET應(yīng)用程序的單點(diǎn)登錄。如果要支持其他技術(shù)實(shí)現(xiàn)的應(yīng)用系統(tǒng),則必須先開發(fā)單點(diǎn)登錄客戶端的相應(yīng)語言版本。

[1]Scott Cantor,John Kemp,Rob Philpott,Eve Maler.Assertions and Protocols for the OASIS Security Assertion Markup Language(SAML)V2.0[EB/OL].http://doc.oasis-open.org/security/saml/V2.0/saml-core-2.0-os.pdf.

[2]Scott Cantor,F(xiàn)rederick Hirsch,John Kemp,Rob Philpot.Env Maler,Bindings for the OASIS Security Assertion Markup Language(SAML)V2.0[EB/OL].http://doc.oasis-open.org/security/saml/V2.0/saml-bindings-2.0-os.pdf.

[3]John Hughes,Scott Cantor,Jeff Hodges,F(xiàn)rederick Hirsch,Prateek Mishra,Rob Philpott,Eve Maler.Profiles for the OASIS Security Assertion Markup Language(SAML)V2.0[EB/OL].http://doc.oasis-open.org/seeurity/saml/V2.0/saml-profiles-2.0-os.pdf.

[4]John Kemp,Prateek Mishra,Rob Philpott,Eve Maler.Authentication Context for the OASIS Security Assertion Markup Language(SAML)V2.0[EB/OL].http://www.oasis- open.org/committees/documents.php?wg_abbrev=security.

[5]Frederick Hirsch,Rob Philpott,Eve Maler.Security and Privacy Considerations for the OASIS Security Assertion Markup Language(SAML)V2.0[EB/OL].http://www.oasis-open.org/committees/documents.php?wg_abbrev=security.

[6]Prateek Mishra,Rob Philpott,Eve Maler.Conformance Requirements for the OASIS Security Assertion Markup Language(SAML)V2.0[EB/OL].http://www.oasis-open.org/committees/documents.php?wg_abbrev=security.

[7]Jeff Hodges,Rob Philpott,Eve Maler.Glossary for the OASIS Security Assertion Markup Language(SAML)V2.0[EB/OL].http://www.oasis-open.org/commi ttees/documents.php?wg_abbrev=security.

猜你喜歡
斷言權(quán)威消息
von Neumann 代數(shù)上保持混合三重η-*-積的非線性映射
C3-和C4-臨界連通圖的結(jié)構(gòu)
各大權(quán)威媒體聚焦流翔高鈣
一張圖看5G消息
Top Republic of Korea's animal rights group slammed for destroying dogs
跟蹤督察:工作干得實(shí) 權(quán)威立得起
權(quán)威發(fā)布
路、圈的Mycielskian圖的反魔術(shù)標(biāo)號
權(quán)威的影子
消息