sso是老生常談的話題了,但部分同學對sso可能掌握的也是雲裡霧裡,一知半解。本次手撕公司的sso原理,試圖以一種簡單,流暢的形式為你提供有用的sso原理。
按照本人一貫行文風格,我們先說什麼是sso,為什麼要提出sso?
sso: 在多個系統中,只需要登陸一次,就可以訪問其他相互信任的應用系統, 這個技術的提出解決了:
sso 與cas(central authentication system)這個概念密切相關,賬戶集中由某個服務管理,sso服務只負責登陸認證。
登陸認證與【服務端在瀏覽器上寫入的認證cookie】密切相關, cookie 有一系列重要屬性:domain,path, expiration,httponly 決定了該cookie 在客戶端的作用域、作用範圍、有效時間、有效操作方式① 使用者訪問website1 系統,website1系統需要認證, 使用者當前沒有登陸
② website1給客戶端返回302重定向響應, 客戶端重定向到sso服務頁
# 互動過程確實是臨時跳轉,下面傳參false, 返回302臨時重定向響應
context.response.redirect(ssourl,
false);
使用者並沒有登陸sso系統,所以sso系統會返回登陸介面
③ 使用者在sso登陸介面輸出賬戶/密碼
⑤ website1收到以上重定向請求,解析querystring中的ticket, 向sso做一次ticket驗證; 驗證通過向客戶端寫入本站的 cookie for website
⑥ 上面第5步,瀏覽器位址會顯示:, 在本站驗證通過之後,最好再做乙個重定向,返回業務首頁:www.website1.com, 本步驟不是sso登陸的標準流程。
① 使用者訪問website2, 使用者在website2並沒得到認證;跳轉回 sso
② sso服務檢測到該 使用者在sso域下存在cookie for sso, 認定該使用者已經登陸,故跳轉回website2, 如上也會攜帶認證ticket
③ 如上,website2收到 website2.com?ticket=***x-oooo-***x-oooo請求, 會做一次sso驗證; 驗證成功,寫入本站cookie for website2
① sso認證成功,寫入的cookie for sso, 是登陸到其他系統的關鍵
② website1收到sso認證成功的重定向請求,解析出 ticket=***x-oooo-***x-oooo, 為什麼還要做一次sso驗證?
因為website1收到的來自sso的重定向請求位址,有可能是偽造, 所以在website1中需要去sso驗證一次。
③ 標準的cas登陸流程有兩次302客戶端重定向, 分別由原站點website1和sso啟動。
④ 退出sso登陸, 要做兩件事情:
- 向sso發起api請求,請求sso刪除使用者在sso域下的認證cookie for sso
- 移除本站的cookie for website1
⑤ 每個website,至少需要如下sso配置
"ssooptions
": ,
that' all,這是自己對sso登陸的一些理解, 本**希望以流暢的思路記錄sso流程, 各位看官不要吃快餐,知其然更知其所以然很關鍵。
單點登陸SSO原理介紹
sso 是乙個非常大的主題,我對這個主題有著深深的感受,自從廣州 usergroup 的論壇成立以來,無數都在嘗試使用開源的 cas kerberos 也提供另外一種方式的 sso 即基於 windows 域的 sso 還有就是從 2005 年開始一直興旺不衰的 saml 如果將這些免費的 sso ...
SSO 單點登陸
1.單點登陸概述 單點登入 single sign on 簡稱為 sso,是目前比較流行的企業業務整合的解決方案之一。sso的定義是在多個應用系統中,使用者只需要登入一次就可以訪問所有相互信任的應用系統。很早期的公司,一家公司可能只有乙個server,慢慢的server開始變多了。每個server都...
sso單點登陸
在乙個企業發展的過程中,用到的系統會慢慢增多,使用人員在多個系統中操作時需要登入各個系統,而且可能每個系統賬號都不一樣,這對使用人員來說很不方便,於是就產生了單點登入,在乙個系統登入其他的系統就不用登陸。在做單點登入之前先來回顧下單系統登入的操作,首先進入系統登入頁面,填寫登入資訊提交表單,系統後台...