(SSO)单点登录原理和总结
一:什么是單點登錄(single Sign-On)
SSO 是一種統一認證和授權機制,指訪問統一服務器不用應用中的受保護資源的同一用戶,只需要登錄一次,即通過一個應用中的安全驗證后,
再訪問其他應用中的受保護資源時,不再需要重新登錄驗證。
二:單點登錄解決了什么問題
解決了用戶只需要登錄一次就可以訪問所有相互信任的應用系統,而不用重復登錄
例如:CSDN中的論壇應用,博客應用,下載應用模塊。我們只要在CSDN中訪問任何一個應用后,再訪問其他應用站點的時候就不需要重新登錄
三:總結在項目開發中的一些體會。看如下流程圖:
一:用戶第一次訪問站點。
1.用戶第一次訪問>www.a.com,這個時候站點下沒有記錄之前登錄的Cookie
2.所有在發現沒有用戶登錄的情況下>跳轉到Login頁面
3.用戶現在輸入用戶名,密碼登錄,請求SSO登錄API,登錄成功,在Redis里面緩存一條Key=SessionID,Values = UserInfo這樣一條記錄,緩存時間可配置。Response返回登錄驗證狀態,和用戶信息。
4.用戶登錄成功,記錄下憑證,即此刻的SessionID寫入Cookie,然后跳轉到www.A.com
5.這時候有了Cookie,將記錄的Cookie,也就是SessionID請求SSO驗證token接口,因為登錄成功記錄了Key=SessionID,所以可以獲取到Values = 用戶信息,Response返回用戶信息
6.用戶現在去訪問www.B.com站點,B站點無Cookie,這里的SessionID還是當前會話的SessionID,所以去請求SSO 主站點驗證Token接口,發現存在Key=SessionID,返回登錄狀態成功,用戶信息。在B站點下記錄Cookie即token配置
這樣用戶第一次訪問A站點,從第一次登錄,到訪問其他站點的流程就走完了
?
二:用戶中途關閉瀏覽器,然后打開瀏覽器,訪問B站點
1.發現存在Cookie,即Token憑證,去SSO站點,驗證發現存在Key=SessionID,獲取Values 講UserInfo返回給用戶,返回用戶在登錄狀態。這樣訪問應用之前訪問過的站點依舊在登錄狀態
2.如果用戶在執行訪問第二個應用,這個時候redis緩存的登錄狀態過期,則返回憑證驗證失敗。這個時候第二個應用跳轉到登錄狀態,走用戶登錄的流程以及后續的驗證流程
注意:記錄Cookie的過期時間應該保證與redis的過期時間一致,不能在redis過期時間之后過期,這樣在用戶此時訪問第一個應用站點的時候,發現Cookie不存在,就會通過SessionID去驗證憑證,發現這時候是過期重新登錄,會講此時的登錄狀態寫入Cookie.
?
三:登出
只需要清除本地Cookie,調用SSO站點接口清除登錄緩存的狀態即可實現登出
?
四.注意:
在實際的項目開發中會遇到各種情況,比如子站點和SSO主站點的接口調用參數約束,簽名,加密等。以及純html站點的實現SSO登錄接口,或者 純.NET應用網站的跳轉接口,這些都要區別開來。只有在詳細了解SSO實現單點登錄的原理之后進行開發才能做到事半功倍的效果。
轉載于:https://www.cnblogs.com/but009/p/6974031.html
總結
以上是生活随笔為你收集整理的(SSO)单点登录原理和总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 学习笔记26_MVC前台强类型参数
- 下一篇: Hive Cilent数据操作