摘 要: 結(jié)合跨域統(tǒng)一身份認(rèn)證的基礎(chǔ)技術(shù)平臺(tái)Shibboleth和跨域統(tǒng)一身份認(rèn)證的技術(shù)標(biāo)準(zhǔn)SAML,設(shè)計(jì)出跨校統(tǒng)一身份認(rèn)證系統(tǒng),。該系統(tǒng)可實(shí)現(xiàn)用戶“異地訪問(wèn)—本地認(rèn)證”功能,,避免了異地認(rèn)證的繁瑣,簡(jiǎn)化了業(yè)務(wù)流程,;身份聯(lián)盟各子系統(tǒng)交互采用SAML標(biāo)準(zhǔn),,有效地保證了系統(tǒng)通信的安全,保障了用戶的隱私,,滿足了應(yīng)用管理的需求,。
關(guān)鍵詞: 身份認(rèn)證;單點(diǎn)登錄,;統(tǒng)一身份認(rèn)證,;身份聯(lián)盟
隨著技術(shù)的發(fā)展,越來(lái)越多的大學(xué),、公司以及政府機(jī)構(gòu)都通過(guò)網(wǎng)絡(luò)對(duì)外提供資源、服務(wù),,并且彼此協(xié)作日益緊密,、信息共享日益頻繁。例如,,大學(xué)之間的“跨校選課”,、“共享圖書(shū)資源”等。因此簡(jiǎn)化這些業(yè)務(wù)中身份認(rèn)證的流程,,同時(shí)做到安全高效成為迫切需要解決的問(wèn)題,。
1 Shibboleth簡(jiǎn)介
Shibboleth是Internet2/MACE項(xiàng)目之一,得到了IBM的技術(shù)和資金支持,。Shibboleth是一個(gè)使用標(biāo)準(zhǔn)語(yǔ)言描述的體系結(jié)構(gòu)和策略框架,,支持安全Web資源和服務(wù)共享[1]。
Shibboleth主要針對(duì)分布式資源如何有效訪問(wèn)的問(wèn)題,。與其他系統(tǒng)的區(qū)別在于Shibboleth將認(rèn)證模塊放在客戶端,,資源提供者只需進(jìn)行少量的驗(yàn)證工作,極大地減輕了資源提供者的負(fù)擔(dān),簡(jiǎn)化了訪問(wèn)程序,、提高了訪問(wè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ù)屬性做出允許或拒絕訪問(wèn)資源的決策,。
(3)WAYF
WAYF是Where Are You From的首字母簡(jiǎn)稱,。SHIRE使用WAYF來(lái)進(jìn)行大部分初始化工作。WAYF組件知道每一個(gè)Origin端句柄服務(wù)器的名稱和位置,。其主要功能是將Origin端站點(diǎn)名稱映射到HS信息上,。WAYF的另一個(gè)作用是為用戶查詢HS并將句柄發(fā)送給SHIRE。WAYF通過(guò)與用戶打交道,,詢問(wèn)“你從哪來(lái)”,,用戶輸入組織名稱,WAYF便在用戶組織的名稱與HS的URL之間進(jìn)行映射,。
2 SAML簡(jiǎn)介
安全斷言標(biāo)記語(yǔ)言SAML(Security Assertion Markup Language)提供了一個(gè)健壯的,、可擴(kuò)展的數(shù)據(jù)格式集,在各種環(huán)境下交換數(shù)據(jù)和身份識(shí)別信息,。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)類似的常見(jiàn)用例定義精確的消息交換,。
(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)的用戶),。
IdP與SP通過(guò)SAML消息傳送用戶的身份認(rèn)證和屬性等信息,。SAML消息定義了2種重要的語(yǔ)句:(1)身份驗(yàn)證語(yǔ)句,關(guān)于該主題在何時(shí)何地,、使用何種身份進(jìn)行過(guò)驗(yàn)證的報(bào)告,。SAML提供了超過(guò)20種不同身份驗(yàn)證方法的詳細(xì)定義。身份驗(yàn)證語(yǔ)句支持SSO,,其中IdP代表SP進(jìn)行登錄,。(2)屬性語(yǔ)句,包含了與主題有關(guān)的屬性,。屬性語(yǔ)句中典型的屬性是組和角色,。
SAML定義了一組XML格式的請(qǐng)求和應(yīng)答消息,SP可使用這些消息直接獲取斷言[3],。請(qǐng)求會(huì)指定SP需要的信息,,例如“所有張曉明的屬性”,應(yīng)答消息返回1個(gè)或多個(gè)匹配請(qǐng)求的斷言,。為使不同的產(chǎn)品能夠交互操作,,SAML的SOAP綁定詳細(xì)說(shuō)明了怎樣在SOAP消息體中傳送信息。SAML還為支持聯(lián)盟身份環(huán)境提供了其他許多有用的機(jī)制:(1)協(xié)議允許SP確定通過(guò)將來(lái)自幾個(gè)可能IdP的特定用戶請(qǐng)求指示到何處,;(2)協(xié)議允許2個(gè)IdP將他們各自擁有的同一個(gè)用戶賬戶關(guān)聯(lián)在一起(需用戶許可)。另外,,SAML還支持加密全部斷言(也可選擇加密其敏感部分),、指定一個(gè)斷言的目標(biāo)用戶等功能。
3 Shibboleth在本系統(tǒng)中的作用
(1)系統(tǒng)將基于Shibboleth的框架進(jìn)行開(kāi)發(fā),,但不完全使用Shibboleth,,需要根據(jù)用戶的實(shí)際需求對(duì)其進(jìn)行改造。
(2)Shibboleth構(gòu)成跨域統(tǒng)一身份認(rèn)證系統(tǒng)的核心部分,,包括IdP,、SP和WAYF組成的整個(gè)跨域統(tǒng)一身份認(rèn)證系統(tǒng)的架構(gòu)。
(3)通過(guò)將Shibboleth的IdP組件與各個(gè)學(xué)校的統(tǒng)一身份認(rèn)證系統(tǒng)集成,將身份數(shù)據(jù)的管理和身份憑據(jù)的認(rèn)證交給各個(gè)學(xué)校自身的統(tǒng)一身份認(rèn)證系統(tǒng),??缬蛘J(rèn)證中心只是作為跨域認(rèn)證的索引,并不維護(hù)任何身份數(shù)據(jù),。
4 跨校統(tǒng)一身份認(rèn)證系統(tǒng)的實(shí)現(xiàn)
4.1 跨校統(tǒng)一身份認(rèn)證系統(tǒng)設(shè)計(jì)
該身份認(rèn)證系統(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)盟認(rèn)證時(shí),,工作原理與Shibboleth基本相同。下面從實(shí)現(xiàn)用戶身份聯(lián)盟認(rèn)證的角度介紹這3個(gè)子系統(tǒng)的結(jié)構(gòu),、工作機(jī)制以及交互方式,。
4.1.1 身份提供方(IdP)
IdP是負(fù)責(zé)認(rèn)證用戶身份和提供用戶認(rèn)證、屬性信息的實(shí)體,,它需要維護(hù)3個(gè)模塊,,即單點(diǎn)登錄認(rèn)證系統(tǒng)、數(shù)據(jù)庫(kù)系統(tǒng)和Shibboleth的IdP組件,。
4.1.1.1 單點(diǎn)登錄認(rèn)證系統(tǒng)
單點(diǎn)登錄認(rèn)證系統(tǒng)(Single Sign-On Authentication System)是源組織的SSO認(rèn)證系統(tǒng),,負(fù)責(zé)響應(yīng)用戶的身份認(rèn)證請(qǐng)求并生成SSO Token[4]。加入身份聯(lián)盟的先決條件就是源組織已經(jīng)可以實(shí)現(xiàn)統(tǒng)一身份認(rèn)證,,在此基礎(chǔ)上,,源組織無(wú)須對(duì)SSO認(rèn)證系統(tǒng)做出變動(dòng)。目前使用較多SSO系統(tǒng)有SUN,、Oracle,、IBM、Microsoft等廠商推出的統(tǒng)一身份認(rèn)證系統(tǒng),,身份聯(lián)盟系統(tǒng)都將提供很好的兼容,。
4.1.1.2 認(rèn)證數(shù)據(jù)庫(kù)和用戶屬性數(shù)據(jù)庫(kù)
認(rèn)證數(shù)據(jù)庫(kù)(Authentication DB)是源組織SSO認(rèn)證系統(tǒng)的一部分,為SSO提供認(rèn)證數(shù)據(jù)并直接服務(wù)于單點(diǎn)登錄認(rè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)
用戶通過(guò)源組織的SSO認(rèn)證后,,HS根據(jù)用戶瀏覽器中cookie值頒發(fā)身份聯(lián)盟的認(rèn)證句柄作為用戶在聯(lián)盟中的身份憑據(jù)。獲得認(rèn)證句柄的過(guò)程既可以通過(guò)用戶瀏覽器的Browser/POST和Browser/Artifact方式來(lái)實(shí)現(xiàn),,也可以通過(guò)SAML中的身份驗(yàn)證斷言(Authentication Assertion)來(lái)實(shí)現(xiàn),。SAML定義了<samlp:AuthenticationQuery或<samlp:AssertionIDReference>字段的<samlp:Request>消息,通過(guò)它可以得到用戶身份認(rèn)證的斷言(Assertion),,從中獲取句柄信息,。用戶獲得句柄后就獲得了訪問(wèn)聯(lián)盟中服務(wù)提供方的合法身份,。
(2)屬性中心(AA)
AA為服務(wù)提供方(SP)提供用戶相關(guān)的屬性信息,這些信息又可分類為用戶固有屬性信息和用戶訪問(wèn)策略信息,。用戶固有屬性信息存儲(chǔ)在用戶屬性數(shù)據(jù)庫(kù)(User DB)的數(shù)據(jù)中,;用戶訪問(wèn)策略信息則是由屬性中心的屬性釋放策略ARP(Attribute Release Policy)提供的XML配置文件,包含了指定用戶是否可以訪問(wèn)指定資源的決策信息,。ARP文件定義了一系列的默認(rèn)策略,,同時(shí)也支持用戶配置策略,用戶配置策略的制定工作將統(tǒng)一交由身份聯(lián)盟中心(FC)負(fù)責(zé),。
AA與SP通信也是基于SAML系統(tǒng),。服務(wù)提供方的屬性請(qǐng)求器(Attribute Requester)可以利用SAML中定義的包含<samlp:AttributeQuery>字段的<samlp:Request>消息來(lái)發(fā)送屬性請(qǐng)求,屬性中心通過(guò)<saml:SubjectConfirmation>來(lái)確認(rèn)屬性請(qǐng)求器的身份是否合法(該步驟可選),,如果屬性請(qǐng)求器是可信的,,屬性中心將發(fā)送包含<samlp:AttributeStatement>字段的<samlp:Response>斷言作為應(yīng)答。屬性請(qǐng)求器解析<samlp:Response>斷言就可以得到SP所需要的用戶固有屬性或訪問(wèn)策略定義,。
4.1.2 服務(wù)提供方(SP)
SP是提供基于Web的服務(wù),、應(yīng)用或資源的實(shí)體,通過(guò)安全的途徑實(shí)現(xiàn)資源的授權(quán)訪問(wè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提供的用戶訪問(wèn)策略和本地訪問(wèn)控制策略對(duì)資源進(jìn)行訪問(wè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將以通過(guò)認(rèn)證后獲得的句柄(Handle)為憑據(jù),向AA發(fā)送屬性請(qǐng)求的SAML消息,,AA返回屬性查詢結(jié)果,,交由SHAR解析作為mod_shib模塊實(shí)現(xiàn)訪問(wèn)控制的依據(jù)。
4.1.3 身份聯(lián)盟中心(FC)
FC的主要功能是用于用戶的源組織選擇,,即當(dāng)用戶訪問(wèn)非源組織資源需要認(rèn)證時(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的認(rèn)證請(qǐng)求方式,即瀏覽器Browser/POST和Browser/Artifact認(rèn)證請(qǐng)求方式或者SAML認(rèn)證請(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)一身份認(rèn)證系統(tǒng)框架
4.2.1 全局架構(gòu)設(shè)計(jì)
(1)每個(gè)高校都具有雙重身份:既是服務(wù)提供者(SP),,又是身份提供者(IdP)。
(2)存在一個(gè)Discovery服務(wù)(即WAYF服務(wù)),,當(dāng)用戶沒(méi)有經(jīng)過(guò)認(rèn)證而訪問(wèn)SP時(shí),,由Discovery確定用戶應(yīng)該到哪個(gè)IdP去進(jìn)行身份驗(yàn)證。
整體邏輯架構(gòu)[5]說(shuō)明如圖2所示,。
4.2.2 單一高校內(nèi)部的系統(tǒng)架構(gòu)設(shè)計(jì)
為了更清楚地說(shuō)明整個(gè)邏輯架構(gòu),,圖3所示為各個(gè)高校的內(nèi)部邏輯架構(gòu)圖。
高校內(nèi)部邏輯架構(gòu)[6]說(shuō)明:
(1)高校中的IdP基于原有的身份認(rèn)證系統(tǒng),,在原有系統(tǒng)基礎(chǔ)上加入2個(gè)IdP組件:認(rèn)證憑據(jù)和屬性憑據(jù),。
(2)高校的SP提供并保護(hù)高校的受控資源,在受控資源之上增加3個(gè)SP組件:斷言接受器,、屬性請(qǐng)求器和訪問(wèn)控制器,。1個(gè)SP可以保護(hù)多個(gè)受控資源。
4.2.3 聯(lián)盟認(rèn)證過(guò)程
4.2.3.1 用戶未登錄時(shí)訪問(wèn)高校A的資源(系統(tǒng)視角)
場(chǎng)景:用戶第一次訪問(wèn)高校A的受控資源如圖4,、圖5,、圖6所示。
用戶訪問(wèn)某一高校受控資源步驟如下:
(1)用戶向高校A提出訪問(wèn)請(qǐng)求,。
(2)高校A的斷言接受器發(fā)現(xiàn)該用戶未認(rèn)證,,將請(qǐng)求重定向給聯(lián)盟認(rèn)證中心的WAYF服務(wù)器。
(3)WAYF服務(wù)器將學(xué)校選擇界面發(fā)送給用戶,,讓用戶選擇所能認(rèn)證的IdP,。
用戶訪問(wèn)某一高交的Jdp步驟如下:
(1)用戶選擇高校A后,提交給WAYF,。
(2)WAYF重定向到高校A的認(rèn)證服務(wù),。
(3)高校A的認(rèn)證服務(wù)發(fā)現(xiàn)用戶尚未登錄,將請(qǐng)求定向到SSO服務(wù),。
(4)SSO服務(wù)向用戶發(fā)出高校A的認(rèn)證登錄界面,。
用戶進(jìn)行身份認(rèn)證的過(guò)程步驟如下:
(1)用戶輸入用戶名口令,向高校A的IdP認(rèn)證登錄,。
(2)高校A的SSO服務(wù)對(duì)用戶認(rèn)證,,通過(guò)后生成Ticket(用戶A通過(guò)認(rèn)證后的證明),交給瀏覽器,。
(3)請(qǐng)求重定向到高校A的認(rèn)證服務(wù),,該認(rèn)證服務(wù)到SSO服務(wù)上去驗(yàn)證之前生成的Ticket,。
(4)SSO服務(wù)驗(yàn)證Ticket,通過(guò)后將用戶的userId交給認(rèn)證服務(wù),。
(5)認(rèn)證服務(wù)將userId交給認(rèn)證憑據(jù),。
(6)認(rèn)證憑據(jù)為該用戶產(chǎn)生一個(gè)nameId,這是整個(gè)聯(lián)盟認(rèn)證過(guò)程中用戶的唯一標(biāo)識(shí),,并將該nameId返回給認(rèn)證服務(wù),。
(7)認(rèn)證服務(wù)將nameId發(fā)還給瀏覽器,瀏覽器再次訪問(wèn)高校A的SP,。
(8)高校A的斷言接受器接受認(rèn)證后用戶的請(qǐng)求,,傳給屬性請(qǐng)求器。
(9)屬性請(qǐng)求器根據(jù)來(lái)訪用戶的nameId,,向認(rèn)證該用戶的IdP的屬性憑據(jù)請(qǐng)求用戶的屬性,。
(10)高校A的屬性憑據(jù)根據(jù)該nameId從認(rèn)證憑據(jù)處獲得用戶真實(shí)的userId。
(11)屬性憑據(jù)根據(jù)獲得的userId從用戶數(shù)據(jù)庫(kù)中獲得用戶身份信息的屬性值,,將屬性值返回給高校A的屬性請(qǐng)求器,。
(12)高校A的屬性請(qǐng)求器將屬性值發(fā)送給訪問(wèn)控制器。
(13)訪問(wèn)控制器根據(jù)用戶的屬性決定用戶可訪問(wèn)的受控資源,,并將結(jié)果返回給用戶,。
4.2.3.2 用戶未登錄時(shí)訪問(wèn)高校A資源(用戶視角)
用戶可視認(rèn)證過(guò)程如圖7所示。
訪問(wèn)高校A資源的整個(gè)過(guò)程如下:
(1)用戶向高校A訪問(wèn)受控資源,。
(2)用戶收到回復(fù),,要求其選擇所在的高校。
(3)用戶選擇其所在的高校,。
(4)用戶收到其所在高校的登錄認(rèn)證頁(yè)面,。
(5)用戶填入用戶名密碼,并提交,。
(6)用戶獲得所需要的受控資源,。
本文參考Shibboleth的架構(gòu),完成了跨校身份聯(lián)盟系統(tǒng)的設(shè)計(jì)方案,,實(shí)現(xiàn)用戶“異地訪問(wèn)—本地認(rèn)證”的功能,,避免了異地認(rèn)證的繁瑣,簡(jiǎn)化了業(yè)務(wù)流程,。身份聯(lián)盟各子系統(tǒng)交互采用SAML標(biāo)準(zhǔn),,有效地保證了系統(tǒng)通信的安全,保障了用戶的隱私,,很好地滿足了應(yīng)用管理的需求,,為高校間的合作和信息交流提供了一個(gè)良好的平臺(tái)。
參考文獻(xiàn)
[1] Shibboleth support.http://shibboleth.internet2.edu/support,,2009.
[2] CANTOR S,, HITCH F. Bindings for the OASIS security assertion markup language(SAML)V2.0 S1[M]. OASIS Standard. 2005.
[3] 陳科,,余堃,黃迪明.基于安全斷言標(biāo)記語(yǔ)言輔件技術(shù)的單點(diǎn)登錄系統(tǒng)分析[J].計(jì)算機(jī)應(yīng)用,,2005,25(11):2574-2576.
[4] CHAO Y Y. Weakest link attack on single sign-on and its case in SAML V2.0 Web SSO[J]. Computational Science and its Applications,, 2006,,3982:507-516.
[5] 宋志強(qiáng),陳懷楚,,沈錫臣.校園網(wǎng)統(tǒng)一身份認(rèn)證結(jié)構(gòu)及基于此結(jié)構(gòu)的應(yīng)用漫游的實(shí)現(xiàn)[J].計(jì)算機(jī)工程與應(yīng)用,,2002,38(10):188-191.
[6] 陳小云.統(tǒng)一身份認(rèn)證系統(tǒng)的研究與實(shí)現(xiàn)[D].成都:西南交通大學(xué),,2007.