如何使用PHP實現單點登入的方法分析

來源:互聯網
上載者:User
這篇文章分享給大家的內容是關於如何使用PHP實現單點登入的方法分析,內容很有參考價值,希望可以幫到有需要的小夥伴。

單點登入的解釋

單點登入(Single Sign On),簡稱為 SSO,是目前比較流行的企業業務整合的解決方案之一。SSO的定義是在多個應用系統中,使用者只需要登入一次就可以訪問所有相互信任的應用系統。

實現的方法

server端

  • “共用Cookie”即共用session的方式,本質上cookie只是儲存session-id的介質,session-id也可以放在每次請求的url裡面.session機制是一個server一個session

  • SSO-Token方式是因為共用session的方式不安全,所以我們不再以session-id作為身份的標識,我們另外產生一種標識,把它取名為SSO-Token,這種標識在整個server群唯一的,所以所有的server群都能驗證整個token,同時拿到token 就代表拿到使用者的資訊

瀏覽器端

  • 單點登入還有非常關鍵的一步,這一步跟server端驗證token的方式無關,用最早的“共用session”的方式還是現在的“token”方式,身份標識到了瀏覽器端都要面臨這樣的一個問題:使用者登入成功拿到token(或者是session-id)後怎麼讓瀏覽器儲存和分享到其它網域名稱下?同網域名稱很簡單,把token存在cookie裡,把cookie的路徑設定成頂級網域名稱下,這樣所有子域都能讀取cookie中的token。這就是共用cookie的方式(這才叫共用Cookie嘛,上面那個應該叫共用session)。比如:Google公司,google.com是他的頂級網域名稱,郵箱服務的mail.google.com和地圖服務的map.google.com都是它的子域。但是,跨域的時候怎麼辦?Google公司還有一個網域名稱,youtube.com,提供視頻服務[2] 。

技術實現的機制

當使用者第一次訪問應用系統的時候,因為還沒有登入,會被
引導到認證系統中進行登入;根據使用者提供的登入資訊,認證系統進行身份校正,如果通過校正,應該返回給使用者一個認證的憑據--ticket;使用者再訪問別的應用的時候,就會將這個ticket帶上,作為自己認證的憑據,應用系統接受到請求之後會把ticket送到認證系統進行校正,檢查ticket的合法性。如果通過校正,使用者就可以在不用再次登入的情況下訪問應用系統2和應用系統3了。
要實現SSO,需要以下主要的功能:
所有應用系統共用一個身份認證系統。

  • 統一的認證系統是SSO的前提之一。認證系統的主要功能是將使用者的登入資訊和使用者資訊庫相比較,對使用者進行登入認證;認證成功後,認證系統應該產生統一的認證標誌(ticket),返還給使用者。另外,認證系統還應該對ticket進行效驗,判斷其有效性。
    所有應用系統能夠識別和提取ticket資訊

  • 要實現SSO的功能,讓使用者只登入一次,就必須讓應用系統能夠識別已經登入過的使用者。應用系統應該能對ticket進行識別和提取,通過與認證系統的通訊,能自動判斷目前使用者是否登入過,從而完成單點登入的功能。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.