《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 業(yè)界動(dòng)態(tài) > 基于SAML的單點(diǎn)登錄模型的改進(jìn)

基于SAML的單點(diǎn)登錄模型的改進(jìn)

2009-07-08
作者:尹 星1,2,吳國新2

  摘 要: 分析了兩種典型的基于SAML的單點(diǎn)登錄模型,針對(duì)流程復(fù)雜的缺陷進(jìn)行簡化,提出改進(jìn)的單點(diǎn)登錄模型,對(duì)三種模型進(jìn)行比較,分析出改進(jìn)模型所具有的性能優(yōu)勢。
??? 關(guān)鍵詞: SAML;單點(diǎn)登錄(SSO);Web服務(wù)

?

  Web服務(wù)的出現(xiàn)使得企業(yè)與它的合作伙伴、客戶以及員工之間的關(guān)系變得更加緊密[1]。雖然Web服務(wù)的真正價(jià)值更多地體現(xiàn)在企業(yè)之間,但是目前許多企業(yè)仍然首先把Web服務(wù)的應(yīng)用限制在企業(yè)內(nèi)部,這是因?yàn)楫?dāng)前跨域的應(yīng)用面臨著這樣一個(gè)嚴(yán)重問題:當(dāng)用戶登錄到多個(gè)系統(tǒng)上請(qǐng)求服務(wù)時(shí),用戶可能需要預(yù)先分別在這些站點(diǎn)注冊(cè),然后在每次使用站點(diǎn)服務(wù)時(shí)都要進(jìn)行認(rèn)證。大量的用戶名和密碼不僅使得用戶難以記憶和區(qū)分,而且安全風(fēng)險(xiǎn)很大;此外企業(yè)需要花費(fèi)較大的開銷來管理大量用戶信息。因此,Web 服務(wù)要想取得成功必須首先解決安全問題[2],而安全問題的關(guān)鍵在于如何以一種靈活、簡便、可互操作的方式來實(shí)現(xiàn)跨多域、跨異構(gòu)系統(tǒng)的安全的服務(wù)訪問。
1 傳統(tǒng)單點(diǎn)登錄技術(shù)及SAML規(guī)范
  對(duì)于如何實(shí)現(xiàn)只需進(jìn)行一次身份認(rèn)證就能訪問多個(gè)服務(wù),當(dāng)前較好的解決方案就是使用單點(diǎn)登錄SSO(Single Sign On)技術(shù)。使用單點(diǎn)登錄技術(shù),用戶只需在初次登錄時(shí)進(jìn)行一次性認(rèn)證,即可獲得所需訪問系統(tǒng)和應(yīng)用軟件的授權(quán)。
  雖然傳統(tǒng)的單點(diǎn)登錄技術(shù)能在某種程度上實(shí)現(xiàn)“一次登錄,任意訪問”,但是由于不具備開放性和標(biāo)準(zhǔn)性,因此仍不能跨域?qū)嵤_@就需要一個(gè)能跨域傳遞符合通用標(biāo)準(zhǔn)的安全令牌的單點(diǎn)登錄機(jī)制,讓所有的安全組件在分布式異構(gòu)環(huán)境中聯(lián)合工作。當(dāng)前與單點(diǎn)登錄的相關(guān)Web服務(wù)安全規(guī)范是安全性斷言標(biāo)記語言SAML(Security Assertion Markup Language)[3]。作為XML的一個(gè)子集,SAML最主要的目的就是實(shí)現(xiàn)Web SSO,它解決了Web服務(wù)安全體系中的身份認(rèn)證多次使用的問題。此外,SAML并不定義任何新的認(rèn)證和授權(quán)機(jī)制或方法,只定義用于不同域的服務(wù)間安全信息傳輸?shù)奈臋n結(jié)構(gòu)[4]。
2?典型的基于SAML的單點(diǎn)登錄模型的分析
  典型的基于SAML的單點(diǎn)登錄模型有兩種,即Pull模型和Push模型[5]。這兩種模型的框架都是由如下三個(gè)部分組成:
  (1)主體:請(qǐng)求訪問某種資源的實(shí)體,可以是用戶或者程序。
  (2)源站點(diǎn):在本文中也稱作SAML權(quán)威機(jī)構(gòu)或者安全認(rèn)證機(jī)構(gòu),負(fù)責(zé)驗(yàn)證主體身份的合法性,并向主體提供其所需的安全信息以作為憑證(本文中即為SAML令牌)。由于該站點(diǎn)是主體身份信息提供者,所以稱為源站點(diǎn)。
  (3)目標(biāo)站點(diǎn):受保護(hù)的網(wǎng)絡(luò)資源的持有者,能向合法主體提供其所需資源。
  下面分別對(duì)Pull模型和Push模型進(jìn)行分析。
2.1?Pull模型
  Pull模型是指目標(biāo)站點(diǎn)從源站點(diǎn)那里把身份驗(yàn)證聲明拉過來,如圖1所示,對(duì)該模型的登錄流程描述如下:
  (1)主體登錄到源站點(diǎn)進(jìn)行身份認(rèn)證。
  (2)若主體通過了認(rèn)證,則源站點(diǎn)返回包含用戶身份信息的SAML身份認(rèn)證令牌。
  (3)主體使用令牌向目標(biāo)站點(diǎn)請(qǐng)求使用受安全保護(hù)的資源。
  (4)目標(biāo)站點(diǎn)接收到用戶身份驗(yàn)證令牌后,持該令牌到源站點(diǎn)請(qǐng)求SAML身份驗(yàn)證聲明。
  (5)源站點(diǎn)返回SAML身份驗(yàn)證聲明。
  (6)目標(biāo)站點(diǎn)收到SAML身份驗(yàn)證聲明后,為主體提供資源。

?


  在Pull模型中,身份驗(yàn)證令牌是由源站點(diǎn)產(chǎn)生和維護(hù),僅在主體被重定向到新的目標(biāo)站點(diǎn)時(shí),該目標(biāo)站點(diǎn)才獲取該令牌。
2.2? Push模型
  Push模型是指目標(biāo)站點(diǎn)把授權(quán)令牌推給源站點(diǎn),如圖2所示,對(duì)該模型的登錄流程描述如下:
  (1)主體登錄到源站點(diǎn)進(jìn)行身份認(rèn)證。
  (2)若主體通過了認(rèn)證,則源站點(diǎn)向目標(biāo)站點(diǎn)請(qǐng)求SAML授權(quán)令牌。
  (3)目標(biāo)站點(diǎn)根據(jù)源站點(diǎn)提供的用戶信息為該用戶提供SAML授權(quán)令牌。
  (4)源站點(diǎn)接收到目標(biāo)站點(diǎn)生成的SAML授權(quán)令牌后將其轉(zhuǎn)發(fā)給主體。
  (5)主體使用授權(quán)令牌向目標(biāo)站點(diǎn)請(qǐng)求受安全保護(hù)的資源。
  (6)目標(biāo)站點(diǎn)收到主體發(fā)送過來的SAML授權(quán)令牌后為主體提供資源。


  在Push模型中,目標(biāo)站點(diǎn)生成并維護(hù)授權(quán)令牌,而源站點(diǎn)則將使用該令牌將主體重定向到目標(biāo)站點(diǎn)。
  當(dāng)前基于SAML的單點(diǎn)登錄系統(tǒng)都是以上述兩種模型為基礎(chǔ)的,具體采用哪種取決于應(yīng)用環(huán)境。當(dāng)源站點(diǎn)鏈接有大量目標(biāo)站點(diǎn)時(shí),Push模型可能更適合,因?yàn)檫@種情況下,源站點(diǎn)就無需在目標(biāo)站點(diǎn)接受由其生成的令牌或與之相關(guān)的聲明之前維護(hù)這些令牌或聲明。但是當(dāng)目標(biāo)站點(diǎn)處理能力有限或者不宜保存用戶身份信息時(shí),就應(yīng)該采用Pull模型,讓維護(hù)令牌或聲明的工作由源站點(diǎn)來處理。
2.3? 典型SAML單點(diǎn)登錄模型的不足
  通過對(duì)Pull模型和Push模型的分析和比較可以看出,盡管在這兩種單點(diǎn)登錄模型中用戶也只進(jìn)行了一次身份認(rèn)證,但每次申請(qǐng)新的服務(wù)時(shí),Pull模型都要目標(biāo)站點(diǎn)向源站點(diǎn)發(fā)出請(qǐng)求以使用戶令牌生效,而Push模型都需要源站點(diǎn)向目標(biāo)站點(diǎn)發(fā)出請(qǐng)求以獲取用戶令牌。這兩種模型的結(jié)構(gòu)是相似的,只是運(yùn)行流程有所不同。從上面的分析可以看出,基于這兩種模型的單點(diǎn)登錄系統(tǒng)面臨如下三個(gè)問題:
  (1)在用戶每次訪問一個(gè)新的目標(biāo)服務(wù)站點(diǎn)時(shí),都需要在源站點(diǎn)與新的目標(biāo)站點(diǎn)之間交換安全信息,因此整個(gè)實(shí)現(xiàn)過程比較復(fù)雜。此外,當(dāng)某個(gè)時(shí)刻有很多用戶需要同時(shí)訪問多個(gè)服務(wù),則網(wǎng)絡(luò)中的數(shù)據(jù)流量會(huì)明顯增大。
  (2)由于源站點(diǎn)與目標(biāo)站點(diǎn)之間具有較強(qiáng)的依賴關(guān)系,因此系統(tǒng)的靈活性不足。
  (3)如果使用這兩種模型,就需要在源站點(diǎn)或者目標(biāo)站點(diǎn)上維護(hù)用戶的令牌,當(dāng)一個(gè)站點(diǎn)同時(shí)需要維護(hù)的用戶令牌過多,或者當(dāng)一個(gè)站點(diǎn)同時(shí)接收到過多的令牌請(qǐng)求時(shí),可能會(huì)導(dǎo)致該站點(diǎn)發(fā)生服務(wù)阻塞,這不僅會(huì)使安全服務(wù)得不到響應(yīng),甚至還有造成服務(wù)器崩潰的隱患。因此,上述兩種模式都不適用于大量用戶在相同時(shí)間調(diào)用很多服務(wù),并且源站點(diǎn)處理能力又很有限的場合。
  鑒于Pull模型和Push模型的不足,就需要尋求一種新的基于SAML的單點(diǎn)登錄模型,以簡化單點(diǎn)登錄系統(tǒng)的登錄過程。本文在這兩種模型的基礎(chǔ)上進(jìn)行改進(jìn),提出一種新的基于SAML的單點(diǎn)登錄模型。改進(jìn)的目標(biāo)是解決上述三點(diǎn)不足,使得包含SAML聲明的令牌僅在主體與源站點(diǎn)、以及主體與目標(biāo)站點(diǎn)之間進(jìn)行傳遞,而源站點(diǎn)和目標(biāo)站點(diǎn)之間無需進(jìn)行安全信息的互傳,并且使令牌的維護(hù)工作由代表主體的客戶端來完成。
3? 基于SAML的單點(diǎn)登錄模型的改進(jìn)
  對(duì)單點(diǎn)登錄模型進(jìn)行改進(jìn)的思想是:源站點(diǎn)采用SAML斷言作為會(huì)話令牌,令牌中包含的用戶身份和屬性信息通常由安全機(jī)構(gòu)進(jìn)行加密和數(shù)字簽名,形成安全的SAML令牌。這樣收到此令牌的目標(biāo)站點(diǎn)通過對(duì)簽名進(jìn)行驗(yàn)證就可以知道令牌發(fā)行者的身份,從而間接認(rèn)證了申請(qǐng)服務(wù)的主體的身份。當(dāng)目標(biāo)站點(diǎn)解析該令牌之后便可看到主體身份和屬性信息,然后根據(jù)這些信息做出對(duì)該用戶的訪問控制決策。在這種情況下,如果主體需要向別的目標(biāo)站點(diǎn)申請(qǐng)新的網(wǎng)絡(luò)服務(wù),它只需將已經(jīng)獲得的SAML權(quán)威機(jī)構(gòu)頒布給他的安全的SAML令牌出示給目標(biāo)站點(diǎn)即可。改進(jìn)模型如圖3所示。


  改進(jìn)的基于SAML的單點(diǎn)登錄模型消息交換和處理流程描述如下:
  (1)主體將自己的登錄信息發(fā)送至源站點(diǎn)以請(qǐng)求身份認(rèn)證。
  (2)源站點(diǎn)的認(rèn)證模塊對(duì)用戶登錄信息進(jìn)行驗(yàn)證,并為合法的用戶生成SAML斷言信息,然后使用源站點(diǎn)與目標(biāo)站點(diǎn)事先協(xié)商好的密鑰進(jìn)行加密和數(shù)字簽名,形成了安全的SAML令牌,最后將該令牌返回給主體。
  (3)主體使用該令牌訪問目標(biāo)站點(diǎn)。
  (4)目標(biāo)站點(diǎn)對(duì)該令牌進(jìn)行簽名驗(yàn)證,以確認(rèn)令牌的頒布者就是源站點(diǎn),從而無需再與源站點(diǎn)進(jìn)行交互,同時(shí)也間接驗(yàn)證了服務(wù)請(qǐng)求的發(fā)起者是合法的。接著,目標(biāo)站點(diǎn)根據(jù)解密后所獲得的SAML斷言信息以決策是否以及如何為用戶提供相應(yīng)的服務(wù)。
4? 三種模型的比較與分析
  與Pull模型和Push模型相比,改進(jìn)后的單點(diǎn)登錄模型具備如下一些突出的優(yōu)點(diǎn):
  (1)主體向源站點(diǎn)進(jìn)行請(qǐng)求驗(yàn)證時(shí),源站點(diǎn)無需向目標(biāo)站點(diǎn)請(qǐng)求授權(quán)決策;主體訪問目標(biāo)站點(diǎn)時(shí),眾多目標(biāo)站點(diǎn)無需頻繁地對(duì)源站點(diǎn)進(jìn)行安全性驗(yàn)證請(qǐng)求。為了證明改進(jìn)模型確實(shí)簡化了單點(diǎn)登錄系統(tǒng)的復(fù)雜性,本文對(duì)三種模型進(jìn)行了具體的性能分析,通過表1對(duì)三種模型在四種不同應(yīng)用場景下源站點(diǎn)被訪問的次數(shù)進(jìn)行了統(tǒng)計(jì)。從表中可以看出,無論主體和目標(biāo)站點(diǎn)的數(shù)量是多少,改進(jìn)模型源站點(diǎn)被訪問次數(shù)均少于另外兩種模型,特別是當(dāng)每個(gè)主體需要訪問的目標(biāo)站點(diǎn)的數(shù)目m的取值很大時(shí),應(yīng)用改進(jìn)模型能明顯減輕源站點(diǎn)的負(fù)載,同時(shí)也簡化了單點(diǎn)登錄系統(tǒng)的運(yùn)行流程,并降低了網(wǎng)絡(luò)中數(shù)據(jù)的流量。

?


  (2)從源站點(diǎn)發(fā)出的安全令牌能被所有源站點(diǎn)信任的目標(biāo)站點(diǎn)查看,無需在源站點(diǎn)和指定的目標(biāo)站點(diǎn)之間事先建立安全通道,而只需事先協(xié)商好加密和數(shù)字簽名處理的密鑰。這樣,這兩類站點(diǎn)間的獨(dú)立性就得到增強(qiáng),提高了系統(tǒng)的靈活性和可配置性。
  (3)大量的用戶令牌由各個(gè)主體自己維護(hù),這就減輕源站點(diǎn)或目標(biāo)站點(diǎn)用于維護(hù)令牌的開銷。
  改進(jìn)的基于SAML的單點(diǎn)登錄模型具備了上述三點(diǎn)獨(dú)特的優(yōu)勢,說明了這樣的改進(jìn)確實(shí)能簡化單點(diǎn)登錄的運(yùn)行流程,并提高單點(diǎn)登錄系統(tǒng)的效率和靈活性。改進(jìn)后的模型比上述兩種典型模型更適用于大量用戶同時(shí)訪問很多服務(wù),并且源站點(diǎn)處理能力又很有限的場合。
  本文首先介紹了傳統(tǒng)單點(diǎn)登錄技術(shù)以及SAML規(guī)范,然后對(duì)兩種典型的基于SAML的單點(diǎn)登錄模型進(jìn)行了分析,并指出了這兩種模型存在的缺陷。在此基礎(chǔ)上提出了改進(jìn)型的SAML單點(diǎn)登錄模型,并通過對(duì)三種的比較,驗(yàn)證了這樣的改進(jìn)確實(shí)能簡化單點(diǎn)登錄的流程,改進(jìn)的SSO模型能更好地應(yīng)用于Web服務(wù)中很多用戶同時(shí)跨域訪問多服務(wù)的應(yīng)用場景。


參考文獻(xiàn)
[1] FOSTER I,KESSELMAN C,NICK J M,et al.The Physiology of the Grid-:An Open Grid Services Architecture for Distributed Systems Integration.http://www.globus.org/research/papers/ogsa.pdf.
[2] IBM.com.Web Services的安全性.http://www.cit.fudan.edu.cn/webservices/0004/Course_pdf/chapter07.pdf.
[3] Martijn de Boer.Single sign on for web service.Apr 18,2005.https://forums.sdn.sap.com/thread.jspa?threadID=35990&messageID=343047.
[4] OASIS Security Services(SAML) TC.http://www.oasis-open.org/committees/security.
[5] GALBRAITH B,HANKISON W.Web服務(wù)安全性高級(jí)編程[M].吳旭超,王黎,譯.北京:清華大學(xué)出版社,2002.

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請(qǐng)及時(shí)通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。