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應用,使得每個應用都通過這個統一的認證服務來進行身份效驗
SSO技術應用再討論
近日學習研究了sso,有很多疑問想與大家交流。之前發了帖效果不佳,疑惑依然存在。今日將自創的sso應用方案整理出來,算是拋磚引玉,希望通過交流分析出最佳的應用模式,互進共勉。目標 整合現有郵件系統 論壇系統 部落格系統,實現單點登陸。面臨問題 跨域 應用系統由不同的開發語言編寫 如jsp asp p...
SSO與Apollo接入SSO思路
一般接入sso的思路如下 1.sso會提供乙個jar包,需要配置乙個filter 2.filter會攔截所有請求,檢查是否已經登入 3.如果沒有登入,那麼就會跳轉到sso登入頁面 4.在sso登入頁面登入成功後,會跳轉回apollo的頁面,帶上認證的資訊 5.在此進入sso的filter,校驗認證資...
什麼是 SSO 與 CAS
打個比方,sso 和我們去迪士尼玩時購買的通票很像。我們只要買一次通票,就可以玩所有遊樂場內的設施,而不需要在過山車或者摩天輪那裡重新買一次票。在這裡,買票就相當於登入認證,遊樂場就相當於使用一套 sso 的公司,各種遊樂設施就相當於公司的各個產品。使用 sso 的優點很明顯 就以我廠為例。我廠有兩...