淺談Shibboleth和SAML的系統(tǒng)如何跨校統(tǒng)一身份
出處:孫思緯,夏洪山 發(fā)布于:2011-08-31 10:38:46
隨著技術(shù)的發(fā)展,越來越多的大學(xué)、公司以及政府機(jī)構(gòu)都通過網(wǎng)絡(luò)對(duì)外提供資源、服務(wù),并且彼此協(xié)作日益緊密、信息共享日益頻繁。例如,大學(xué)之間的“跨校選課”、“共享圖書資源”等。因此簡(jiǎn)化這些業(yè)務(wù)中身份的流程,同時(shí)做到安全高效成為迫切需要解決的問題。
1 Shibboleth簡(jiǎn)介
Shibboleth是一個(gè)針對(duì)SSO的開源項(xiàng)目。Shibboleth項(xiàng)目主要應(yīng)用在校園內(nèi)Web資源共享,以及校園間的應(yīng)用系統(tǒng)的用戶身份聯(lián)合。
Shibboleth主要針對(duì)分布式資源如何有效訪問的問題。與其他系統(tǒng)的區(qū)別在于Shibboleth將模塊放在客戶端,資源提供者只需進(jìn)行少量的驗(yàn)證工作,極大地減輕了資源提供者的負(fù)擔(dān),簡(jiǎn)化了訪問程序、提高了訪問資源的效率、安全性得到了保證。在系統(tǒng)擴(kuò)展方面,Shibboleth采用了SAML規(guī)范,同時(shí)也在SAML上作了改進(jìn),保證了系統(tǒng)的可擴(kuò)展性。
Shibboleth主要由3個(gè)部分組成:
(1)Origin
對(duì)應(yīng)Identity Provider(IdP),身份提供端。主要作用是向資源提供者提供用戶的屬性,以便使資源服務(wù)器根據(jù)其屬性對(duì)操作進(jìn)行判決響應(yīng)。
(2)Target
對(duì)應(yīng)Resource/Service Provider,資源/服務(wù)提供端。主要作用是響應(yīng)用戶的資源請(qǐng)求,并向該用戶所在的Origin查詢用戶的屬性,然后根據(jù)屬性做出允許或拒絕訪問資源的決策。
(3)WAYF
WAYF是Where Are You From的首字母簡(jiǎn)稱。SHIRE使用WAYF來進(jìn)行大部分初始化工作。WAYF組件知道每一個(gè)Origin端句柄服務(wù)器的名稱和位置。其主要功能是將Origin端站點(diǎn)名稱映射到HS信息上。WAYF的另一個(gè)作用是為用戶查詢HS并將句柄發(fā)送給SHIRE。WAYF通過與用戶打交道,詢問“你從哪來”,用戶輸入組織名稱,WAYF便在用戶組織的名稱與HS的URL之間進(jìn)行映射。
2 SAML簡(jiǎn)介
SAML即安全斷言標(biāo)記語(yǔ)言,英文全稱是Security Assertion Markup Language。它是一個(gè)基于XML的標(biāo)準(zhǔn),用于在不同的安全域(security domain)之間交換和授權(quán)數(shù)據(jù)。在SAML標(biāo)準(zhǔn)定義了身份提供者(identity provider)和服務(wù)提供者(service provider),這兩者構(gòu)成了前面所說的不同的安全域。 SAML是OASIS組織安全服務(wù)技術(shù)委員會(huì)(Security Services Technical Committee)的產(chǎn)品。SAML將所有與檢索、傳輸和共享安全信息相關(guān)的功能標(biāo)準(zhǔn)轉(zhuǎn)化為以下形式[2]:
(1)為用戶提供XML安全信息格式,請(qǐng)求、傳輸信息的格式。
(2)定義這些消息與SOAP(Simple Object Access Protocol)等協(xié)議協(xié)作的方式。
(3)為像Web SSO(Single Sign-On)類似的常見用例定義的消息交換。
(4)支持多種隱私保護(hù)機(jī)制,包括在不披露用戶身份的情況下確定用戶屬性的功能。
(5)詳述在Unix、Microsoft Windows、X509、LDAP、DCE和XCML技術(shù)所提供的格式中處理身份信息的方法。
(6)提供系統(tǒng)的元數(shù)據(jù)機(jī)制,使得所有參與的系統(tǒng)能就所支持的SAML選項(xiàng)進(jìn)行通信。
SAML的設(shè)計(jì)特別關(guān)注了靈活性,當(dāng)遇到標(biāo)準(zhǔn)尚未涵蓋的需求時(shí),可以擴(kuò)展。其所描述的環(huán)境包括3個(gè)角色,如圖1所示,即信任方(Service Provider)、斷言方(Identity Provider)和主題(與身份信息相關(guān)的用戶)。

SAML(Security Assertion Markup Language)是一個(gè)XML框架,也就是一組協(xié)議,可以用來傳輸安全聲明。比如,兩臺(tái)遠(yuǎn)程機(jī)器之間要通訊,為了保證安全,我們可以采用加密等措施,也可以采用SAML來傳輸,傳輸?shù)臄?shù)據(jù)以XML形式,符合SAML規(guī)范,這樣我們就可以不要求兩臺(tái)機(jī)器采用什么樣的系統(tǒng),只要求能理解SAML規(guī)范即可,顯然比傳統(tǒng)的方式更好。SAML 規(guī)范是一組Schema 定義。可以這么說,在Web Service 領(lǐng)域,schema就是規(guī)范,在Java領(lǐng)域,API就是規(guī)范。
IdP與SP通過SAML消息傳送用戶的身份和屬性等信息。SAML消息定義了2種重要的語(yǔ)句:(1)身份驗(yàn)證語(yǔ)句,關(guān)于該主題在何時(shí)何地、使用何種身份進(jìn)行過驗(yàn)證的。SAML提供了超過20種不同身份驗(yàn)證方法的詳細(xì)定義。身份驗(yàn)證語(yǔ)句支持SSO,其中IdP代表SP進(jìn)行登錄。(2)屬性語(yǔ)句,包含了與主題有關(guān)的屬性。屬性語(yǔ)句中典型的屬性是組和角色。
安全是所有Web項(xiàng)目在設(shè)計(jì)時(shí)都要考慮的一個(gè)重要因素。無論是選擇短口令,決定何時(shí)使用SSL加密HTTP會(huì)話,還是通過自動(dòng)登錄cookie來識(shí)別用戶,都經(jīng)常要付出重大的設(shè)計(jì)努力,以保護(hù)用戶的身份信息和他們可能存放于Web站點(diǎn)的其他資料。糟糕的安全性可能帶來公關(guān)災(zāi)難。當(dāng)終用戶努力保持對(duì)其個(gè)人信息的控制時(shí),他們要面臨令人迷惑的隱私政策,需要牢記眾多站點(diǎn)的不同口令,以及遭遇“釣魚式攻擊”事件。在宏觀層次上,數(shù)字身份引起了許多復(fù)雜的技術(shù)和社會(huì)問題,業(yè)界一些團(tuán)體如Liberty Alliance和IdentityGang都正試圖通過開發(fā)新的技術(shù)標(biāo)準(zhǔn)來解決它們。在較小的規(guī)模上,可以使用一些工具來為用戶提供更好的安全性。請(qǐng)考慮口令管理問題。用戶訪問他們保存?zhèn)€人資料的Web站點(diǎn),在可以存取他們的資料之前必須經(jīng)過驗(yàn)證。通過驗(yàn)證來鑒別用戶,確保他們是所聲稱的用戶。進(jìn)行驗(yàn)證簡(jiǎn)單方式是使用口令。然而,若每個(gè)站點(diǎn)都需要各自的一套口令,用戶將有難以控制的大量口令。
1998年微軟首先嘗試通過其Passport network提供該問題的解決方案。Passport使得任意Web站點(diǎn)使用用戶提交給Passport的個(gè)人資料(如用戶名、地址、信用卡號(hào))成為可能。Passport是單點(diǎn)登錄(single sign-on,SSO)的次電子商務(wù)嘗試。它沒有流行起來,部分原因是由于人們對(duì)系統(tǒng)封閉性的擔(dān)心。然而,SSO的理念非常引人注目,許多開放標(biāo)準(zhǔn)和商業(yè)計(jì)劃都追隨Passport其后。通過SSO,某個(gè)Web站點(diǎn)可以與其他站點(diǎn)共享用戶身份信息。 SSO對(duì)于使用應(yīng)用服務(wù)提供商(Application Service Provider,ASP)軟件服務(wù)的企業(yè)特別有用。ASP在自己的服務(wù)器上宿主應(yīng)用程序,出售其訪問權(quán)作為服務(wù)。公司可以在它的標(biāo)準(zhǔn)目錄服務(wù)器里管理自己的用戶和口令,然后通過SSO授予用戶訪問ASP應(yīng)用程序的權(quán)限。SSO允許公司管理自己用戶的信息,不必為每一員工維護(hù)多個(gè)用戶賬號(hào)。對(duì)用戶來說,SSO的好處在于他們可以在多個(gè)應(yīng)用程序中使用一個(gè)用戶名和口令,并且在應(yīng)用程序之間切換時(shí)無需重新驗(yàn)證。SSO不僅僅用于Web應(yīng)用程序,它可用于任何類型的應(yīng)用程序,只要有安全地傳送身份信息的協(xié)議。這種通信方式的開放標(biāo)準(zhǔn)就是安全性斷言標(biāo)記語(yǔ)言(SAML)。
3 Shibboleth在本系統(tǒng)中的作用
(1)系統(tǒng)將基于Shibboleth的框架進(jìn)行開發(fā),但不完全使用Shibboleth,需要根據(jù)用戶的實(shí)際需求對(duì)其進(jìn)行改造。
(2)Shibboleth構(gòu)成跨域統(tǒng)一身份系統(tǒng)的部分,包括IdP、SP和WAYF組成的整個(gè)跨域統(tǒng)一身份系統(tǒng)的架構(gòu)。
(3)通過將Shibboleth的IdP組件與各個(gè)學(xué)校的統(tǒng)一身份系統(tǒng)集成,將身份數(shù)據(jù)的管理和身份憑據(jù)的交給各個(gè)學(xué)校自身的統(tǒng)一身份系統(tǒng)??缬蛑行闹皇亲鳛榭缬虻乃饕?,并不維護(hù)任何身份數(shù)據(jù)。
4 跨校統(tǒng)一身份系統(tǒng)的實(shí)現(xiàn)
4.1 跨校統(tǒng)一身份系統(tǒng)設(shè)計(jì)
該身份系統(tǒng)可分為3個(gè)子系統(tǒng),身份提供方IdP(Identity Provider)、服務(wù)提供方SP(Service Provider)和身份聯(lián)盟中心FC(Federation Centre)。這3個(gè)子系統(tǒng)在實(shí)現(xiàn)聯(lián)盟時(shí),工作原理與Shibboleth基本相同。下面從實(shí)現(xiàn)用戶身份聯(lián)盟的角度介紹這3個(gè)子系統(tǒng)的結(jié)構(gòu)、工作機(jī)制以及交互方式。
4.1.1 身份提供方(IdP)
IdP是負(fù)責(zé)用戶身份和提供用戶、屬性信息的實(shí)體,它需要維護(hù)3個(gè)模塊,即單點(diǎn)登錄系統(tǒng)、數(shù)據(jù)庫(kù)系統(tǒng)和Shibboleth的IdP組件。
4.1.1.1 單點(diǎn)登錄系統(tǒng)
單點(diǎn)登錄系統(tǒng)(Single Sign-On Authentication System)是源組織的SSO系統(tǒng),負(fù)責(zé)響應(yīng)用戶的身份請(qǐng)求并生成SSO Token[4]。加入身份聯(lián)盟的先決條件就是源組織已經(jīng)可以實(shí)現(xiàn)統(tǒng)一身份,在此基礎(chǔ)上,源組織無須對(duì)SSO系統(tǒng)做出變動(dòng)。目前使用較多SSO系統(tǒng)有SUN、Oracle、IBM、Microsoft等廠商推出的統(tǒng)一身份系統(tǒng),身份聯(lián)盟系統(tǒng)都將提供很好的兼容。
4.1.1.2 數(shù)據(jù)庫(kù)和用戶屬性數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)(Authentication DB)是源組織SSO系統(tǒng)的一部分,為SSO提供數(shù)據(jù)并直接服務(wù)于單點(diǎn)登錄系統(tǒng)。
用戶屬性數(shù)據(jù)庫(kù)(User DB)主要為Shibboleth的IdP組件服務(wù),它存儲(chǔ)了身份聯(lián)盟系統(tǒng)所需要的用戶屬性信息。
4.1.1.3 Shibboleth的IdP組件
Shibooleth的IdP組件主要工作單元分為句柄服務(wù)器HS(Handle Server)和屬性中心AA(Attribute Authority)2個(gè)部分。
(1)句柄服務(wù)器(HS)
用戶通過源組織的SSO后,HS根據(jù)用戶瀏覽器中cookie值頒發(fā)身份聯(lián)盟的句柄作為用戶在聯(lián)盟中的身份憑據(jù)。獲得句柄的過程既可以通過用戶瀏覽器的Browser/POST和Browser/Artifact方式來實(shí)現(xiàn),也可以通過SAML中的身份驗(yàn)證斷言(Authentication Assertion)來實(shí)現(xiàn)。SAML定義了<samlp:AuthenticationQuery或<samlp:AssertionIDReference>字段的<samlp:Request>消息,通過它可以得到用戶身份的斷言(Assertion),從中獲取句柄信息。用戶獲得句柄后就獲得了訪問聯(lián)盟中服務(wù)提供方的合法身份。
(2)屬性中心(AA)
AA為服務(wù)提供方(SP)提供用戶相關(guān)的屬性信息,這些信息又可分類為用戶固有屬性信息和用戶訪問策略信息。用戶固有屬性信息存儲(chǔ)在用戶屬性數(shù)據(jù)庫(kù)(User DB)的數(shù)據(jù)中;用戶訪問策略信息則是由屬性中心的屬性釋放策略ARP(Attribute Release Policy)提供的XML配置文件,包含了指定用戶是否可以訪問指定資源的決策信息。ARP文件定義了一系列的默認(rèn)策略,同時(shí)也支持用戶配置策略,用戶配置策略的制定工作將統(tǒng)一交由身份聯(lián)盟中心(FC)負(fù)責(zé)。
4.1.2 服務(wù)提供方(SP)
SP是提供基于Web的服務(wù)、應(yīng)用或資源的實(shí)體,通過安全的途徑實(shí)現(xiàn)資源的授權(quán)訪問和個(gè)性化服務(wù)。主要包含2個(gè)模塊:mod_shib模塊和SHAR模塊。
4.1.2.1 mod_shib模塊
mod_shib是Shibboleth用于集成到SP Apache服務(wù)器的一個(gè)擴(kuò)展模塊,負(fù)責(zé)根據(jù)IdP提供的用戶訪問策略和本地訪問控制策略對(duì)資源進(jìn)行訪問控制。
4.1.2.2 SHAR模塊
SHAR(Shibboleth Attribute Requester)是運(yùn)行在服務(wù)提供方服務(wù)器上的一個(gè)后臺(tái)程序,負(fù)責(zé)向IdP請(qǐng)求用戶屬性相關(guān)的信息并處理響應(yīng)消息。實(shí)際上SHAR是與IdP的屬性中心AA配合工作的,當(dāng)SP需要用戶屬性信息時(shí),SHAR將以通過后獲得的句柄(Handle)為憑據(jù),向AA發(fā)送屬性請(qǐng)求的SAML消息,AA返回屬性查詢結(jié)果,交由SHAR解析作為mod_shib模塊實(shí)現(xiàn)訪問控制的依據(jù)。
4.1.3 身份聯(lián)盟中心(FC)
FC的主要功能是用于用戶的源組織選擇,即當(dāng)用戶訪問非源組織資源需要時(shí),將由FC提供源組織定位服務(wù)。該功能主要基于Shibboleth的Service Discovery組件,也可稱為WAYF服務(wù)。另外,本項(xiàng)目中的FC還根據(jù)需求提出了資源注冊(cè)、計(jì)費(fèi)、審計(jì)等輔助功能。
WAYF服務(wù)在Shibboleth結(jié)構(gòu)中是一個(gè)可選組件,采用集中的方式讓用戶選擇自己所在的源組織。
WAYF服務(wù)必須支持Shibboleth的請(qǐng)求方式,即瀏覽器Browser/POST和Browser/Artifact請(qǐng)求方式或者SAML請(qǐng)求方式,目的是為了協(xié)調(diào)源組織的SSO服務(wù)和身份聯(lián)盟系統(tǒng)中的SSO服務(wù)。WAYF實(shí)際上充當(dāng)了各源組織SSO服務(wù)的中介,使各源組織的SSO在整個(gè)身份聯(lián)盟系統(tǒng)中都具有有效性。
4.2 跨校統(tǒng)一身份系統(tǒng)框架
4.2.1 全局架構(gòu)設(shè)計(jì)
(1)每個(gè)高校都具有雙重身份:既是服務(wù)提供者(SP),又是身份提供者(IdP)。
(2)存在一個(gè)Discovery服務(wù)(即WAYF服務(wù)),當(dāng)用戶沒有經(jīng)過而訪問SP時(shí),由Discovery確定用戶應(yīng)該到哪個(gè)IdP去進(jìn)行身份驗(yàn)證。
整體邏輯架構(gòu)[5]說明如圖2所示。

4.2.2 單一高校內(nèi)部的系統(tǒng)架構(gòu)設(shè)計(jì)
為了更清楚地說明整個(gè)邏輯架構(gòu),圖3所示為各個(gè)高校的內(nèi)部邏輯架構(gòu)圖。

高校內(nèi)部邏輯架構(gòu)[6]說明:
(1)高校中的IdP基于原有的身份系統(tǒng),在原有系統(tǒng)基礎(chǔ)上加入2個(gè)IdP組件:憑據(jù)和屬性憑據(jù)。
(2)高校的SP提供并保護(hù)高校的受控資源,在受控資源之上增加3個(gè)SP組件:斷言接受器、屬性請(qǐng)求器和訪問控制器。1個(gè)SP可以保護(hù)多個(gè)受控資源。
4.2.3 聯(lián)盟過程
4.2.3.1 用戶未登錄時(shí)訪問高校A的資源(系統(tǒng)視角)
場(chǎng)景:用戶次訪問高校A的受控資源如圖4、圖5、圖6所示。

用戶訪問某一高校受控資源步驟如下:
(1)用戶向高校A提出訪問請(qǐng)求。
(2)高校A的斷言接受器發(fā)現(xiàn)該用戶未,將請(qǐng)求重定向給聯(lián)盟中心的WAYF服務(wù)器。
(3)WAYF服務(wù)器將學(xué)校選擇界面發(fā)送給用戶,讓用戶選擇所能的IdP。
用戶訪問某一高交的Jdp步驟如下:
(1)用戶選擇高校A后,提交給WAYF。
(2)WAYF重定向到高校A的服務(wù)。
(3)高校A的服務(wù)發(fā)現(xiàn)用戶尚未登錄,將請(qǐng)求定向到SSO服務(wù)。
(4)SSO服務(wù)向用戶發(fā)出高校A的登錄界面。
用戶進(jìn)行身份的過程步驟如下:
(1)用戶輸入用戶名口令,向高校A的IdP登錄。
(2)高校A的SSO服務(wù)對(duì)用戶,通過后生成Ticket(用戶A通過后的證明),交給瀏覽器。
(3)請(qǐng)求重定向到高校A的服務(wù),該服務(wù)到SSO服務(wù)上去驗(yàn)證之前生成的Ticket。
(4)SSO服務(wù)驗(yàn)證Ticket,通過后將用戶的userId交給服務(wù)。
(5)服務(wù)將userId交給憑據(jù)。
(6)憑據(jù)為該用戶產(chǎn)生一個(gè)nameId,這是整個(gè)聯(lián)盟過程中用戶的標(biāo)識(shí),并將該nameId返回給服務(wù)。
(7)服務(wù)將nameId發(fā)還給瀏覽器,瀏覽器再次訪問高校A的SP。
(8)高校A的斷言接受器接受后用戶的請(qǐng)求,傳給屬性請(qǐng)求器。
(9)屬性請(qǐng)求器根據(jù)來訪用戶的nameId,向該用戶的IdP的屬性憑據(jù)請(qǐng)求用戶的屬性。
(10)高校A的屬性憑據(jù)根據(jù)該nameId從憑據(jù)處獲得用戶真實(shí)的userId。
(11)屬性憑據(jù)根據(jù)獲得的userId從用戶數(shù)據(jù)庫(kù)中獲得用戶身份信息的屬性值,將屬性值返回給高校A的屬性請(qǐng)求器。
(12)高校A的屬性請(qǐng)求器將屬性值發(fā)送給訪問控制器。
(13)訪問控制器根據(jù)用戶的屬性決定用戶可訪問的受控資源,并將結(jié)果返回給用戶。
4.2.3.2 用戶未登錄時(shí)訪問高校A資源(用戶視角)
用戶可視過程如圖7所示。

訪問高校A資源的整個(gè)過程如下:
(1)用戶向高校A訪問受控資源。
(2)用戶收到回復(fù),要求其選擇所在的高校。
(3)用戶選擇其所在的高校。
(4)用戶收到其所在高校的登錄頁(yè)面。
(5)用戶填入用戶名密碼,并提交。
(6)用戶獲得所需要的受控資源。
本文參考Shibboleth的架構(gòu),完成了跨校身份聯(lián)盟系統(tǒng)的設(shè)計(jì)方案,實(shí)現(xiàn)用戶“異地訪問—本地”的功能,避免了異地的繁瑣,簡(jiǎn)化了業(yè)務(wù)流程。身份聯(lián)盟各子系統(tǒng)交互采用SAML標(biāo)準(zhǔn),有效地保證了系統(tǒng)通信的安全,保障了用戶的隱私,很好地滿足了應(yīng)用管理的需求,為高校間的合作和信息交流提供了一個(gè)良好的平臺(tái)。
版權(quán)與免責(zé)聲明
凡本網(wǎng)注明“出處:維庫(kù)電子市場(chǎng)網(wǎng)”的所有作品,版權(quán)均屬于維庫(kù)電子市場(chǎng)網(wǎng),轉(zhuǎn)載請(qǐng)必須注明維庫(kù)電子市場(chǎng)網(wǎng),http://m.58mhw.cn,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。
如涉及作品內(nèi)容、版權(quán)等問題,請(qǐng)?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
- 什么是氫氧燃料電池,氫氧燃料電池的知識(shí)介紹2025/8/29 16:58:56
- SQL核心知識(shí)點(diǎn)總結(jié)2025/8/11 16:51:36
- 等電位端子箱是什么_等電位端子箱的作用2025/8/1 11:36:41
- 基于PID控制和重復(fù)控制的復(fù)合控制策略2025/7/29 16:58:24
- 什么是樹莓派?一文快速了解樹莓派基礎(chǔ)知識(shí)2025/6/18 16:30:52
- PCB散熱設(shè)計(jì)與熱管理核心實(shí)操規(guī)范
- 太陽(yáng)能逆變器技術(shù)核心:MPPT算法詳解
- 開關(guān)電源的工作原理與基本結(jié)構(gòu)
- MOSFET并聯(lián)應(yīng)用的設(shè)計(jì)注意事項(xiàng)
- 高濕、鹽霧環(huán)境對(duì)連接器的影響
- PCB基材選型與性能適配核心技術(shù)規(guī)范
- 過采樣技術(shù)與數(shù)字濾波如何共同提升 ADC 的有效位數(shù)
- MOSFET寄生參數(shù)對(duì)電路性能的影響
- 集成與分立方案:電機(jī)驅(qū)動(dòng)電源設(shè)計(jì)如何選?
- 汽車電子連接器應(yīng)用與要求









