回覆列表
  • 1 # 網路圈

    首先可以明確的告訴你,任何一門開發語言都可以實現SSO單點登入機制!

    什麼是SSO單點登入?

    SSO是英文Single Sign On的簡寫,中文翻譯就是單點登入。單點登入是為了解決什麼問題而生的呢?在企業資訊化建設過程中,業務會越來越複雜,所以系統會越來越多(甚至是不同語言開發的系統),這些系統間如果使用者認證體系沒有統一,那我們就要記住很多密碼,另外每個系統都要登入一次,相當麻煩。也就是在這種背景下,SSO機制應運而生。

    SSO單點登入的原理

    SSO會有一個獨立的中央認證系統(CAS),其它系統沒有登入/註冊入口,統一在認證系統處進行登入認證。當用戶在認證系統成功認證之後,認證系統會建立授權令牌給各個子系統,各個子系統拿到令牌後進行相關驗證後就建立各個系統的會話。

    SSO最終還是基於Token+Cookie+Session等技術來實現的,所以說任何一款開發語言都可以實現SSO單點登入。

    不同場景下的SSO單點登入實現方案

    SSO單點登入聽上去很簡單,但在不同業務下它實現的成本也是不同的,比如多個B/S系統會存在以下場景:

    1、多個系統部署(主)域名相同

    同域名下的多個系統間實現SSO可以採用Cookie共享的方式來完成(因為不涉及跨域),當A系統使用者訪問CAS認證完成後,在跳轉回A系統時寫入Cookie,當下次訪問B系統時就能獲取同域下的Cookie以完成會話跟蹤。

    2、多個系統部署的域名不同

    Cookie是有域限制的,非同源的Cookie互不可見。在這種情況下,A系統在CAS認證完成後,可以採用訊息通知的方式(如:批次請求各個子系統的回撥URL完成Cookie寫入)去通知其它已註冊的子系統完成會話狀態生成。

  • 中秋節和大豐收的關聯?
  • 同事搶走了自己的勞動成果,說成是她的,該怎麼辦?