摘 要: 分析了兩種典型的基于SAML的單點登錄模型,針對流程復雜的缺陷進行簡化,提出改進的單點登錄模型,對三種模型進行比較,分析出改進模型所具有的性能優(yōu)勢。
??? 關鍵詞: SAML;單點登錄(SSO);Web服務
?
Web服務的出現(xiàn)使得企業(yè)與它的合作伙伴、客戶以及員工之間的關系變得更加緊密[1]。雖然Web服務的真正價值更多地體現(xiàn)在企業(yè)之間,但是目前許多企業(yè)仍然首先把Web服務的應用限制在企業(yè)內部,這是因為當前跨域的應用面臨著這樣一個嚴重問題:當用戶登錄到多個系統(tǒng)上請求服務時,用戶可能需要預先分別在這些站點注冊,然后在每次使用站點服務時都要進行認證。大量的用戶名和密碼不僅使得用戶難以記憶和區(qū)分,而且安全風險很大;此外企業(yè)需要花費較大的開銷來管理大量用戶信息。因此,Web 服務要想取得成功必須首先解決安全問題[2],而安全問題的關鍵在于如何以一種靈活、簡便、可互操作的方式來實現(xiàn)跨多域、跨異構系統(tǒng)的安全的服務訪問。
1 傳統(tǒng)單點登錄技術及SAML規(guī)范
對于如何實現(xiàn)只需進行一次身份認證就能訪問多個服務,當前較好的解決方案就是使用單點登錄SSO(Single Sign On)技術。使用單點登錄技術,用戶只需在初次登錄時進行一次性認證,即可獲得所需訪問系統(tǒng)和應用軟件的授權。
雖然傳統(tǒng)的單點登錄技術能在某種程度上實現(xiàn)“一次登錄,任意訪問”,但是由于不具備開放性和標準性,因此仍不能跨域實施。這就需要一個能跨域傳遞符合通用標準的安全令牌的單點登錄機制,讓所有的安全組件在分布式異構環(huán)境中聯(lián)合工作。當前與單點登錄的相關Web服務安全規(guī)范是安全性斷言標記語言SAML(Security Assertion Markup Language)[3]。作為XML的一個子集,SAML最主要的目的就是實現(xiàn)Web SSO,它解決了Web服務安全體系中的身份認證多次使用的問題。此外,SAML并不定義任何新的認證和授權機制或方法,只定義用于不同域的服務間安全信息傳輸?shù)奈臋n結構[4]。
2?典型的基于SAML的單點登錄模型的分析
典型的基于SAML的單點登錄模型有兩種,即Pull模型和Push模型[5]。這兩種模型的框架都是由如下三個部分組成:
(1)主體:請求訪問某種資源的實體,可以是用戶或者程序。
(2)源站點:在本文中也稱作SAML權威機構或者安全認證機構,負責驗證主體身份的合法性,并向主體提供其所需的安全信息以作為憑證(本文中即為SAML令牌)。由于該站點是主體身份信息提供者,所以稱為源站點。
(3)目標站點:受保護的網絡資源的持有者,能向合法主體提供其所需資源。
下面分別對Pull模型和Push模型進行分析。
2.1?Pull模型
Pull模型是指目標站點從源站點那里把身份驗證聲明拉過來,如圖1所示,對該模型的登錄流程描述如下:
(1)主體登錄到源站點進行身份認證。
(2)若主體通過了認證,則源站點返回包含用戶身份信息的SAML身份認證令牌。
(3)主體使用令牌向目標站點請求使用受安全保護的資源。
(4)目標站點接收到用戶身份驗證令牌后,持該令牌到源站點請求SAML身份驗證聲明。
(5)源站點返回SAML身份驗證聲明。
(6)目標站點收到SAML身份驗證聲明后,為主體提供資源。
?
在Pull模型中,身份驗證令牌是由源站點產生和維護,僅在主體被重定向到新的目標站點時,該目標站點才獲取該令牌。
2.2? Push模型
Push模型是指目標站點把授權令牌推給源站點,如圖2所示,對該模型的登錄流程描述如下:
(1)主體登錄到源站點進行身份認證。
(2)若主體通過了認證,則源站點向目標站點請求SAML授權令牌。
(3)目標站點根據(jù)源站點提供的用戶信息為該用戶提供SAML授權令牌。
(4)源站點接收到目標站點生成的SAML授權令牌后將其轉發(fā)給主體。
(5)主體使用授權令牌向目標站點請求受安全保護的資源。
(6)目標站點收到主體發(fā)送過來的SAML授權令牌后為主體提供資源。
在Push模型中,目標站點生成并維護授權令牌,而源站點則將使用該令牌將主體重定向到目標站點。
當前基于SAML的單點登錄系統(tǒng)都是以上述兩種模型為基礎的,具體采用哪種取決于應用環(huán)境。當源站點鏈接有大量目標站點時,Push模型可能更適合,因為這種情況下,源站點就無需在目標站點接受由其生成的令牌或與之相關的聲明之前維護這些令牌或聲明。但是當目標站點處理能力有限或者不宜保存用戶身份信息時,就應該采用Pull模型,讓維護令牌或聲明的工作由源站點來處理。
2.3? 典型SAML單點登錄模型的不足
通過對Pull模型和Push模型的分析和比較可以看出,盡管在這兩種單點登錄模型中用戶也只進行了一次身份認證,但每次申請新的服務時,Pull模型都要目標站點向源站點發(fā)出請求以使用戶令牌生效,而Push模型都需要源站點向目標站點發(fā)出請求以獲取用戶令牌。這兩種模型的結構是相似的,只是運行流程有所不同。從上面的分析可以看出,基于這兩種模型的單點登錄系統(tǒng)面臨如下三個問題:
(1)在用戶每次訪問一個新的目標服務站點時,都需要在源站點與新的目標站點之間交換安全信息,因此整個實現(xiàn)過程比較復雜。此外,當某個時刻有很多用戶需要同時訪問多個服務,則網絡中的數(shù)據(jù)流量會明顯增大。
(2)由于源站點與目標站點之間具有較強的依賴關系,因此系統(tǒng)的靈活性不足。
(3)如果使用這兩種模型,就需要在源站點或者目標站點上維護用戶的令牌,當一個站點同時需要維護的用戶令牌過多,或者當一個站點同時接收到過多的令牌請求時,可能會導致該站點發(fā)生服務阻塞,這不僅會使安全服務得不到響應,甚至還有造成服務器崩潰的隱患。因此,上述兩種模式都不適用于大量用戶在相同時間調用很多服務,并且源站點處理能力又很有限的場合。
鑒于Pull模型和Push模型的不足,就需要尋求一種新的基于SAML的單點登錄模型,以簡化單點登錄系統(tǒng)的登錄過程。本文在這兩種模型的基礎上進行改進,提出一種新的基于SAML的單點登錄模型。改進的目標是解決上述三點不足,使得包含SAML聲明的令牌僅在主體與源站點、以及主體與目標站點之間進行傳遞,而源站點和目標站點之間無需進行安全信息的互傳,并且使令牌的維護工作由代表主體的客戶端來完成。
3? 基于SAML的單點登錄模型的改進
對單點登錄模型進行改進的思想是:源站點采用SAML斷言作為會話令牌,令牌中包含的用戶身份和屬性信息通常由安全機構進行加密和數(shù)字簽名,形成安全的SAML令牌。這樣收到此令牌的目標站點通過對簽名進行驗證就可以知道令牌發(fā)行者的身份,從而間接認證了申請服務的主體的身份。當目標站點解析該令牌之后便可看到主體身份和屬性信息,然后根據(jù)這些信息做出對該用戶的訪問控制決策。在這種情況下,如果主體需要向別的目標站點申請新的網絡服務,它只需將已經獲得的SAML權威機構頒布給他的安全的SAML令牌出示給目標站點即可。改進模型如圖3所示。
改進的基于SAML的單點登錄模型消息交換和處理流程描述如下:
(1)主體將自己的登錄信息發(fā)送至源站點以請求身份認證。
(2)源站點的認證模塊對用戶登錄信息進行驗證,并為合法的用戶生成SAML斷言信息,然后使用源站點與目標站點事先協(xié)商好的密鑰進行加密和數(shù)字簽名,形成了安全的SAML令牌,最后將該令牌返回給主體。
(3)主體使用該令牌訪問目標站點。
(4)目標站點對該令牌進行簽名驗證,以確認令牌的頒布者就是源站點,從而無需再與源站點進行交互,同時也間接驗證了服務請求的發(fā)起者是合法的。接著,目標站點根據(jù)解密后所獲得的SAML斷言信息以決策是否以及如何為用戶提供相應的服務。
4? 三種模型的比較與分析
與Pull模型和Push模型相比,改進后的單點登錄模型具備如下一些突出的優(yōu)點:
(1)主體向源站點進行請求驗證時,源站點無需向目標站點請求授權決策;主體訪問目標站點時,眾多目標站點無需頻繁地對源站點進行安全性驗證請求。為了證明改進模型確實簡化了單點登錄系統(tǒng)的復雜性,本文對三種模型進行了具體的性能分析,通過表1對三種模型在四種不同應用場景下源站點被訪問的次數(shù)進行了統(tǒng)計。從表中可以看出,無論主體和目標站點的數(shù)量是多少,改進模型源站點被訪問次數(shù)均少于另外兩種模型,特別是當每個主體需要訪問的目標站點的數(shù)目m的取值很大時,應用改進模型能明顯減輕源站點的負載,同時也簡化了單點登錄系統(tǒng)的運行流程,并降低了網絡中數(shù)據(jù)的流量。
?
(2)從源站點發(fā)出的安全令牌能被所有源站點信任的目標站點查看,無需在源站點和指定的目標站點之間事先建立安全通道,而只需事先協(xié)商好加密和數(shù)字簽名處理的密鑰。這樣,這兩類站點間的獨立性就得到增強,提高了系統(tǒng)的靈活性和可配置性。
(3)大量的用戶令牌由各個主體自己維護,這就減輕源站點或目標站點用于維護令牌的開銷。
改進的基于SAML的單點登錄模型具備了上述三點獨特的優(yōu)勢,說明了這樣的改進確實能簡化單點登錄的運行流程,并提高單點登錄系統(tǒng)的效率和靈活性。改進后的模型比上述兩種典型模型更適用于大量用戶同時訪問很多服務,并且源站點處理能力又很有限的場合。
本文首先介紹了傳統(tǒng)單點登錄技術以及SAML規(guī)范,然后對兩種典型的基于SAML的單點登錄模型進行了分析,并指出了這兩種模型存在的缺陷。在此基礎上提出了改進型的SAML單點登錄模型,并通過對三種的比較,驗證了這樣的改進確實能簡化單點登錄的流程,改進的SSO模型能更好地應用于Web服務中很多用戶同時跨域訪問多服務的應用場景。
參考文獻
[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服務安全性高級編程[M].吳旭超,王黎,譯.北京:清華大學出版社,2002.