SSO英文全稱Single Sign On,單點登錄。SSO是在多個應(yīng)用系統(tǒng)中,用戶只需要登錄一次就可以訪問所有相互信任的應(yīng)用系統(tǒng)。它包括可以將這次主要的登錄映射到其他應(yīng)用中用于同一個用戶的登錄的機制。它是目前比較流行的企業(yè)業(yè)務(wù)整合的解決方案之一。
SSO技術(shù)實現(xiàn)機制
當(dāng)用戶第一次訪問應(yīng)用系統(tǒng)1的時候,因為還沒有登錄,會被引導(dǎo)到認證系統(tǒng)中進行登錄;根據(jù)用戶提供的登錄信息,認證系統(tǒng)進行身份效驗,如果通過效驗,應(yīng)該返回給用戶一個認證的憑據(jù)--ticket;用戶再訪問別的應(yīng)用的時候就會將這個ticket帶上,作為自己認證的憑據(jù),應(yīng)用系統(tǒng)接受到請求之后會把ticket送到認證系統(tǒng)進行效驗,檢查ticket的合法性。如果通過效驗,用戶就可以在不用再次登錄的情況下訪問應(yīng)用系統(tǒng)2和應(yīng)用系統(tǒng)3了。
要實現(xiàn)SSO,需要以下主要的功能:
1、所有應(yīng)用系統(tǒng)共享一個身份認證系統(tǒng)。
統(tǒng)一的認證系統(tǒng)是SSO的前提之一。認證系統(tǒng)的主要功能是將用戶的登錄信息和用戶信息庫相比較,對用戶進行登錄認證;認證成功后,認證系統(tǒng)應(yīng)該生成統(tǒng)一的認證標志(ticket),返還給用戶。另外,認證系統(tǒng)還應(yīng)該對ticket進行效驗,判斷其有效性。
2、所有應(yīng)用系統(tǒng)能夠識別和提取ticket信息
要實現(xiàn)SSO的功能,讓用戶只登錄一次,就必須讓應(yīng)用系統(tǒng)能夠識別已經(jīng)登錄過的用戶。應(yīng)用系統(tǒng)應(yīng)該能對ticket進行識別和提取,通過與認證系統(tǒng)的通訊,能自動判斷當(dāng)前用戶是否登錄過,從而完成單點登錄的功能。
另外:
1、單一的用戶信息數(shù)據(jù)庫并不是必須的,有許多系統(tǒng)不能將所有的用戶信息都集中存儲,應(yīng)該允許用戶信息放置在不同的存儲中,如下圖所示。事實上,只要統(tǒng)一認證系統(tǒng),統(tǒng)一ticket的產(chǎn)生和效驗,無論用戶信息存儲在什么地方,都能實現(xiàn)單點登錄。
2、統(tǒng)一的認證系統(tǒng)并不是說只有單個的認證服務(wù)器
認證服務(wù)器之間要通過標準的通訊協(xié)議,互相交換認證信息,就能完成更高級別的單點登錄。如:當(dāng)用戶在訪問應(yīng)用系統(tǒng)1時,由第一個認證服務(wù)器進行認證后,得到由此服務(wù)器產(chǎn)生的ticket。當(dāng)他訪問應(yīng)用系統(tǒng)2的時候,認證服務(wù)器2能夠識別此ticket是由第一個服務(wù)器產(chǎn)生的,通過認證服務(wù)器之間標準的通訊協(xié)議(例如SAML)來交換認證信息,仍然能夠完成SSO的功能。
WEB-SSO的實現(xiàn)
用戶在訪問頁面1的時候進行了登錄,但是客戶端的每個請求都是單獨的連接,當(dāng)客戶再次訪問頁面2的時候,如何才能告訴Web服務(wù)器,客戶剛才已經(jīng)登錄過了呢?瀏覽器和服務(wù)器之間有約定:通過使用cookie技術(shù)來維護應(yīng)用的狀態(tài)。Cookie是可以被Web服務(wù)器設(shè)置的字符串,并且可以保存在瀏覽器中。當(dāng)瀏覽器訪問了頁面1時,web服務(wù)器設(shè)置了一個cookie,并將這個cookie和頁面1一起返回給瀏覽器,瀏覽器接到cookie之后,就會保存起來,在它訪問頁面2的時候會把這個cookie也帶上,Web服務(wù)器接到請求時也能讀出cookie的值,根據(jù)cookie值的內(nèi)容就可以判斷和恢復(fù)一些用戶的信息狀態(tài)。Web-SSO完全可以利用Cookie結(jié)束來完成用戶登錄信息的保存,將瀏覽器中的Cookie和上文中的Ticket結(jié)合起來,完成SSO的功能。
為了完成一個簡單的SSO的功能,需要兩個部分的合作:
1、統(tǒng)一的身份認證服務(wù)。
2、修改Web應(yīng)用,使得每個應(yīng)用都通過這個統(tǒng)一的認證服務(wù)來進行身份效驗。