文章目錄
- 什麼是單點登陸
- 單點登陸的技術實現機制
- WEB-SSO的實現
- 後記
什麼是單點登陸
單點登入(Single Sign On),簡稱為 SSO,是目前比較流行的企業業務整合的解決方案之一。SSO的定義是在多個應用系統中,使用者只需要登入一次就可以訪問所有相互信任的應用系統。它包括可以將這次主要的登入映射到其他應用中用於同一個使用者的登入的機制。
單點登陸的技術實現機制
當使用者第一次訪問應用系統1的時候,因為還沒有登入,會被引導到認證系統中進行登入;根據使用者提供的登入資訊,認證系統進行身份效驗,如果通過效驗,應該返回給使用者一個認證的憑據--ticket;使用者再訪問別的應用的時候就會將這個ticket帶上,作為自己認證的憑據,應用系統接受到請求之後會把ticket送到認證系統進行效驗,檢查ticket的合法性。如果通過效驗,使用者就可以在不用再次登入的情況下訪問應用系統2和應用系統3了。
要實現SSO,需要以下主要的功能:
1、所有應用系統共用一個身份認證系統。
統一的認證系統是SSO的前提之一。認證系統的主要功能是將使用者的登入資訊和使用者資訊庫相比較,對使用者進行登入認證;認證成功後,認證系統應該產生統一的認證標誌(ticket),返還給使用者。另外,認證系統還應該對ticket進行效驗,判斷其有效性。
2、所有應用系統能夠識別和提取ticket資訊
要實現SSO的功能,讓使用者只登入一次,就必須讓應用系統能夠識別已經登入過的使用者。應用系統應該能對ticket進行識別和提取,通過與認證系統的通訊,能自動判斷目前使用者是否登入過,從而完成單點登入的功能。
另外:
1、單一的使用者資訊資料庫並不是必須的,有許多系統不能將所有的使用者資訊都集中儲存,應該允許使用者資訊放置在不同的儲存中,如所示。事實上,只要統一認證系統,統一ticket的產生和效驗,無論使用者資訊儲存在什麼地方,都能實現單點登入。
2、統一的認證系統並不是說只有單個的證明伺服器
證明伺服器之間要通過標準的通訊協議,互相交換認證資訊,就能完成更進階別的單點登入。如:當使用者在訪問應用系統1時,由第一個證明伺服器進行認證後,得到由此伺服器產生的ticket。當他訪問應用系統2的時候,證明伺服器2能夠識別此ticket是由第一個伺服器產生的,通過證明伺服器之間標準的通訊協議(例如SAML)來交換認證資訊,仍然能夠完成SSO的功能。
WEB-SSO的實現
使用者在訪問頁面1的時候進行了登入,但是用戶端的每個請求都是單獨的串連,當客戶再次訪問頁面2的時候,如何才能告訴Web伺服器,客戶剛才已經登入過了呢?瀏覽器和伺服器之間有約定:通過使用cookie技術來維護應用的狀態。Cookie是可以被Web伺服器設定的字串,並且可以儲存在瀏覽器中。當瀏覽器訪問了頁面1時,web伺服器設定了一個cookie,並將這個cookie和頁面1一起返回給瀏覽器,瀏覽器接到cookie之後,就會儲存起來,在它訪問頁面2的時候會把這個cookie也帶上,Web伺服器接到請求時也能讀出cookie的值,根據cookie值的內容就可以判斷和恢複一些使用者的資訊狀態。Web-SSO完全可以利用Cookie結束來完成使用者登入資訊的儲存,將瀏覽器中的Cookie和上文中的Ticket結合起來,完成SSO的功能。
為了完成一個簡單的SSO的功能,需要兩個部分的合作:
1、統一的身份認證服務。
2、修改Web應用,使得每個應用都通過這個統一的認證服務來進行身份效驗。
後記
大概就是這樣,如果還需要更詳細的調研,可以到這裡
- http://blogjava.blog.hexun.com/3859148_d.html
- http://blog.csdn.net/crppawen/archive/2006/02/05/592237.aspx