不需要用戶端外掛程式PHP也能實現單點登入

來源:互聯網
上載者:User

標籤:blog   http   io   檔案   資料   2014   log   size   

分析CAS原理,構建PHP單點登入

單點登入(Single Sign On , 簡稱 SSO )是目前比較流行的服務於企業業務整合的解決方案之一, SSO 使得在多個應用系統中,使用者 只需要登入一次就可以訪問所有相互信任的應用系統。CAS(Central Authentication Service)是一款不錯的針 對 Web 應用程式的單點登入架構,本文根據CAS原理給出了PHP實現單點登入的方法。

假設現在有兩台普通Web伺服器A,B

再假設A,B兩台伺服器上的資源都需要認證使用者才能訪問(當然,使用者註冊,使用者登入等頁面不算在內)

使用者User登入其中一台伺服器,假設是A,有了A伺服器的許可權了,他想訪問B伺服器上的資源,並且不需要再次登入,因為他剛登入了A伺服器,並且沒有退出登入,如何?呢.

其實我們只需要再有一台伺服器C來做登入,登出等操作的驗證服務

訪 問A伺服器登入頁面,伺服器A將頁面重新導向至授權伺服器C,輸入使用者名稱及密碼完成認證,並將授權資訊寫入Session儲存在伺服器C上,伺服器C再將頁 面重新導向,並通過Url的參數形式,將SessionId傳至伺服器A,此時伺服器A再通過SessionId去伺服器C驗證是否該授權資訊並儲存在服務 器A本地,這樣,伺服器A與伺服器C就同時擁有了授權資訊,此時,使用者訪問伺服器B,伺服器B將頁面重新導向至伺服器C,因為瀏覽器儲存了伺服器C的 cookie資訊,所以,伺服器C可以檢測至該使用者已經登入,故不需要再次登入,直接通過Url參數的形式將SessionId以頁面重寫向方式返回至服 務器B,伺服器B用該SessionId串連伺服器C進行驗證,成功後將授權資訊儲存至伺服器B本地,這樣伺服器B也有了與伺服器C相同的授權資訊,不需 要登入

伺服器A,B,C這三台伺服器,需要共用授權資訊,可以是資料庫的方式,記憶體緩衝工具的方式或者其它檔案型資料庫方式共用授權資訊,當使用者在服務A,B其中一台退出登入時,另外兩台(A,C 或 B,C)伺服器的授權資訊同時銷毀

這樣就完成了單點登入,

實現原理參考圖:


 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.