隨著互聯(lián)網(wǎng)絡(luò)應(yīng)用的普及,越來越多的人開始使用互聯(lián)網(wǎng)上提供的服務(wù)。然而目前提供服務(wù)的網(wǎng)站大多采用用戶名、口令的方式來識別用戶身份,這使得用戶需要經(jīng)常性的輸入自己的用戶名、口令。顯然這種認(rèn)證方式存在著弊端:隨著用戶網(wǎng)絡(luò)身份的增多,用戶相應(yīng)的需要記憶多組用戶名、口令,這給用戶造成記憶上的負(fù)擔(dān);另外頻繁的輸入用戶名、口令,會相應(yīng)的增大用戶的口令密碼被破解的機率。為了改變這一現(xiàn)狀,單點登錄技術(shù)應(yīng)運而生。
單點登錄技術(shù)的核心思想是通過一定的方式使得各提供服務(wù)的網(wǎng)站之間建立某種聯(lián)系,用戶只需要在其中一個認(rèn)證網(wǎng)站進行登錄后,即可實現(xiàn)全局登錄,當(dāng)用戶再訪問其他網(wǎng)站時,不需要再次登錄,其身份就可以被驗證。我們可以看到采用單點登錄技術(shù)后,用戶只需要記憶一組用戶名、口令,并且在登錄多個網(wǎng)站時只需要輸入一次用戶名、口令,這就使得用戶可以更加安全快捷的使用互聯(lián)網(wǎng)上的各種服務(wù)。
單點登錄的一般模型
在單點登錄的一般模型中,一般由三部分構(gòu)成:(1)用戶 (2)身份提供者 (3)服務(wù)提供者。如圖1所示。
用戶是指通過瀏覽器來使用單點登錄服務(wù)的個體。身份提供者在單點登錄中提供對個體的身份驗證服務(wù),相當(dāng)于一個權(quán)威機構(gòu)。服務(wù)提供者是指具體為用戶提供某種服務(wù)的機構(gòu)。用戶在身份提供者那里注冊身份,當(dāng)用戶進行單點登錄時,需要在身份提供者處登錄,進行身份驗證,由身份提供者為用戶標(biāo)記登錄信息。通常把用戶在身份提供者處進行的登錄稱作全局登錄。用戶在全局登錄后,當(dāng)訪問其它的服務(wù)提供者時,被訪問的服務(wù)提供者首先直接與身份提供者進行交互,來詢問該用戶是否已全局登錄,如果確定該用戶已全局登錄,則允許該用戶來訪問自己提供的服務(wù),否則將該用戶重定向到身份提供者處,進行全局登錄。
在具體的單點登錄實現(xiàn)中,身份提供者和服務(wù)提供者進行交互的方式不盡相同。如微軟的Passport單點登錄采用的是在重定向信息中包含加密后的驗證信息來進行交互,而自由聯(lián)盟的單點登錄規(guī)范是采用安全聲明標(biāo)記語言(SAML)來進行交互的。下面本文就通過介紹當(dāng)前這兩個主流的單點登錄協(xié)議:微軟Passport單點登錄協(xié)議和自由聯(lián)盟規(guī)范來進一步闡述單點登錄技術(shù)。
一、微軟Passport單點登錄協(xié)議
1.1 微軟Passport服務(wù)
提及微軟Passport單點登錄協(xié)議,我們自然要先介紹的是微軟Passport服務(wù)。在微軟的www.passport.com站點上我們可以看到微軟Passport的使用條款和通告。微軟Passport 是由微軟公司運行的一種Web 服務(wù),該服務(wù)會使用戶登錄到網(wǎng)站以及執(zhí)行電子商務(wù)交易的過程變得更加簡便。微軟的Passport服務(wù)是.Net戰(zhàn)略的一部分,通過一次登錄就可以使用戶獲得訪問很多網(wǎng)站的權(quán)限。微軟宣稱Passport的目的是使會員在使用互聯(lián)網(wǎng)和在線購物時更方便、快捷和安全,它得到了包括1-800-Flowers、CostCo、OfficeMax和Victoria Secret在內(nèi)的諸多著名在線商店的支持。微軟Passport服務(wù)從本質(zhì)上來說是一種由微軟控制的中央統(tǒng)籌式的單一登錄服務(wù)。微軟旗下的Hotmail、Messenger與ISP服務(wù)(MSN)都有加入此機制,目前約有2億個使用賬戶。
1.2 微軟Passport單點登錄協(xié)議
在微軟Passport服務(wù)模式中,有三個主體:(1)使用web瀏覽器的用戶(假設(shè)該用戶已經(jīng)注冊了Passport服務(wù)),(2)服務(wù)提供者(對用戶提供某種服務(wù)的網(wǎng)站),(3)Passport登錄服務(wù)器。Passport登錄服務(wù)器保存著用戶的認(rèn)證信息以及用戶的個人信息,服務(wù)提供者在得到用戶允許的前提下可以到Passport登錄服務(wù)器上獲取用戶個人信息。
微軟Passport單點登錄協(xié)議流程如下[1]:當(dāng)一個用戶通過瀏覽器訪問一個服務(wù)提供者網(wǎng)站時,如果該網(wǎng)站需要驗證用戶的身份,就把該用戶的瀏覽器重定向到Passport登錄服務(wù)器。下一步Passport登錄服務(wù)器通過SSL連接為用戶提供一個登錄頁面,在用戶登入該服務(wù)器后,被重定向回服務(wù)提供者網(wǎng)站。此時認(rèn)證信息被包含在重定向消息中。該認(rèn)證信息使用三重DES加密算法加密,加密密鑰是由Passport登錄服務(wù)器和服務(wù)提供者網(wǎng)站事先協(xié)商好的。在服務(wù)提供者網(wǎng)站檢驗了認(rèn)證信息的真實性后,即可認(rèn)為該用戶成功登錄。具體流程圖可參考圖2所示。
微軟Passport單點登錄協(xié)議采用了Kerberos認(rèn)證機制來完成身份認(rèn)證工作。Kerberos是一種為網(wǎng)絡(luò)通信提供可信第三方服務(wù)的面向開放系統(tǒng)的認(rèn)證機制。在Kerberos認(rèn)證機制中,每當(dāng)用戶(client)申請得到某服務(wù)程序(server)的服務(wù)時,用戶和服務(wù)程序會首先向Kerberos要求認(rèn)證對方的身份,認(rèn)證建立在用戶(client)和服務(wù)程序(server)對Kerberos的信任的基礎(chǔ)上。在申請認(rèn)證時,client和server都可看成是Kerberos認(rèn)證服務(wù)的用戶,為了和其它服務(wù)的用戶區(qū)別,Kerberos用戶統(tǒng)稱為principle,principle既可以是用戶也可以是某項服務(wù)。當(dāng)用戶登錄到工作站時,Kerberos對用戶進行初始認(rèn)證,通過認(rèn)證的用戶可以在整個登錄時間得到相應(yīng)的服務(wù)。Kerberos既不依賴用戶登錄的終端,也不依賴用戶所請求的服務(wù)的安全機制,它本身提供了認(rèn)證服務(wù)器來完成用戶的認(rèn)證工作[7]。簡單地說,Kerberos通過集中存儲的安全信息和分布式的“tickets”來實現(xiàn)用戶身份認(rèn)證。具體而言,微軟Passport服務(wù)通過如下步驟實現(xiàn)用戶身份驗證:
1、用戶開啟客戶端應(yīng)用程序或瀏覽器,打開登錄界面,并輸入用戶名、口令。
2、登錄動作引發(fā)客戶端應(yīng)用程序或網(wǎng)站向微軟Passport請求一個登錄確認(rèn)證明(即“ticket-granting-ticket”,TGT)。
3、微軟Passport驗證用戶用戶名、口令,頒發(fā)TGT,確認(rèn)登錄已經(jīng)成功。在滿足一定安全約束條款的前提下,該TGT在一定時期內(nèi)被緩存。
4、客戶端應(yīng)用程序或網(wǎng)站向微軟Passport提交TGT,同時請求頒發(fā)一個“會話證明”。
5、微軟Passport使用TGT來驗證客戶端的身份是否有效,確認(rèn)后向相應(yīng)的Web Service頒發(fā)“會話證明”。
6、客戶端向所請求的Web Service提交會話證明,經(jīng)確認(rèn)后,客戶端開始同Web Service進行信息交換,所有數(shù)據(jù)都經(jīng)由該“會話證明”加密從而確保安全。
1.3 微軟Passport小結(jié)
雖然微軟Passport已經(jīng)提供了多年的服務(wù),但是其安全性一直為人們所置疑。首先,其中央統(tǒng)籌的模式是最為大眾所質(zhì)疑的。因為核心的驗證服務(wù)器以及用戶個人信息服務(wù)器都是微軟一手控制的,再加上其技術(shù)細(xì)節(jié)并不對外公開,而且沒有依據(jù)某一標(biāo)準(zhǔn),致使人們一直擔(dān)憂用戶的個人資料被泄漏。其次,微軟的Passport系統(tǒng)曾被個人或黑客多次入侵。這些都限制了微軟Passport服務(wù)的進一步推廣。
二、自由聯(lián)盟規(guī)范
4.1 自由聯(lián)盟(Liberty Alliance)
自由聯(lián)盟是一個聯(lián)盟機構(gòu)的名稱,該聯(lián)盟的宗旨是創(chuàng)建一個經(jīng)由與Internet相連的任何器件都能實現(xiàn)的具有開放性的、聯(lián)合的、單一簽字身份識別的解決方案,該機構(gòu)的目標(biāo)是為實現(xiàn)利用因特網(wǎng)進行交易時隨時隨地的單點登錄認(rèn)證,并且進行有關(guān)標(biāo)準(zhǔn)的制訂。所有商業(yè)機構(gòu)和非商業(yè)機構(gòu)都可取得該機構(gòu)的成員身份。加盟該機構(gòu)的創(chuàng)始企業(yè)中有服務(wù)提供、汽車制造、金融服務(wù)、旅行業(yè)、數(shù)字媒體、零售業(yè)、電信及技術(shù)相關(guān)業(yè)界的著名企業(yè)。目前自由聯(lián)盟由170多家廠商組合,包括Sun、Nokia、American Express等,他們負(fù)責(zé)提供技術(shù)規(guī)范與商業(yè)指南來當(dāng)作跨企業(yè)的身份認(rèn)證服務(wù)。Liberty本身并不產(chǎn)生應(yīng)用,這方面是由技術(shù)廠商(如Sun、Novell、Peoplesoft與HP等)來開發(fā)支持Liberty標(biāo)準(zhǔn)的兼容應(yīng)用。自由聯(lián)盟規(guī)范可讓不同的服務(wù)供應(yīng)商加入一個聯(lián)邦式的信賴網(wǎng)絡(luò)中[6]。
自由聯(lián)盟的主要目標(biāo)有如下三個方面:
使個人消費者和企業(yè)用戶能夠安全保管個人信息;耍七M無信息壟斷的、可以相互運用并跨越多個網(wǎng)絡(luò)的服務(wù)。
制訂實現(xiàn)“單點登錄”的開放標(biāo)準(zhǔn)。基此,使用戶在任何1個WWW站點通過認(rèn)證后,不必接受其它站點認(rèn)證就可以使用其服務(wù)。
制訂所有接入因特網(wǎng)的設(shè)備都可以使用的網(wǎng)絡(luò)認(rèn)證開放標(biāo)準(zhǔn)。基此使手機、車載設(shè)備和信用卡等各種各樣的終端間都能進行安全的認(rèn)證。