單一登入(Single Sign On),簡稱為SSO,是目前較受歡迎的企業業務整合的解決方案之一。 SSO的定義是在多個應用系統中,使用者只需要登入一次就可以存取所有互信的應用系統。
推薦閱讀:php伺服器
實作單一登入的方法
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)。
技術實現的機制
當用戶第一次訪問應用系統的時候,因為還沒有登錄,會被引導到認證系統中進行登入;根據用戶提供的登入訊息,認證系統進行身分校驗,如果通過校驗,應該回傳給使用者一個認證的憑證-ticket;
使用者再造訪別的應用程式的時候,就會將這個ticket帶上,作為自己認證的憑證,應用系統接受到請求之後會把ticket送到認證系統進行校驗,檢查ticket的合法性。如果透過校驗,使用者就可以在不用再登入的情況下存取應用系統2和應用系統3了。
要實作SSO,需要以下主要的功能:
所有應用系統共用一個身分認證系統。
統一的認證系統是SSO的前提之一。認證系統的主要功能是將使用者的登入資訊和使用者資訊庫相比較,對使用者進行登入認證;認證成功後,認證系統應該產生統一的認證標誌(ticket),回饋給使用者。另外,認證系統也應該對ticket進行效驗,判斷其有效性。
所有應用系統能夠識別和提取ticket資訊。
要實現SSO的功能,讓使用者只登入一次,就必須讓應用系統能夠辨識已經登入過的使用者。應用系統應該能對ticket進行辨識與擷取,透過與認證系統的通訊,能自動判斷目前使用者是否已登入過,從而完成單一登入的功能。
以上是php單一登入是如何實現的的詳細內容。更多資訊請關注PHP中文網其他相關文章!