2015-07-10 44 views
0

我工作的網站應用程序是在laravel 4.2框架上開發的,我的網站與另一個與其相關的網站應用程序相關聯。有沒有更好的單點登錄(SSO)功能的解決方案 - PHP

我想在我的應用程序中實現單點登錄(SSO)功能。

假設我的應用程序:www.example.com

相關網站如下:

  1. www.testsite1.com
  2. www.testsite2.com
  3. www.testsite3.com
  4. www.testsite4.com

當我登錄到任何一個網站(我的應用程序或相關網站)。

記錄後,點擊其餘網站除了(目前我登錄的網站),那麼它不應該提示登錄意味着它應該允許進入應用程序沒有日誌記錄,因爲我已經登錄在一個應用程序。

與我們登錄gmail帳戶並轉到任何帳戶(drive,google plus,youtube等)時相同,它不會再次請求登錄,它會繞過應用程序的登錄頁面。

有沒有更好的和可行的解決方案爲PHP/laravel?

+0

我建議你使用SAML。這個主題已經在這裏解決: http://stackoverflow.com/questions/31241498/good-single-sign-on-solution-for-laravel/31264691 查看我的評論 – smartin

回答

0

可能是以下步驟將幫助您在各個不同的網站

  1. 實現單點登錄當用戶訪問www.testsite1.com,重定向用戶SSO服務器。
  2. 將用戶重定向到SSO服務器後,檢查cookie是否存在,因爲它第一次不存在cookie,因此請顯示SSO服務器上託管的登錄頁面。
  3. 從用戶獲得憑證後驗證用戶
  4. 如果用戶有效,現在生成一個令牌,此令牌可以是唯一的十六進制數字或散列值作爲時間戳。
  5. 將此令牌設置到SSO服務器上的cookie中,並將用戶重定向回原始站點或成功頁面
  6. 現在當用戶訪問www.testsite2.com或www.testsite3.com時,將用戶重定向到SSO服務器再次
  7. 一旦用戶訪問了SSO,檢查該cookie,如果它存在,不會過期,然後直接將用戶重定向到成功頁面,而不要求登錄憑證再次或顯示登錄頁面,再次按照鑽

由於我們正在將用戶重定向到不同的服務器,因此我們可以在那裏設置cookie,其常用名稱爲「SSOcookie」,並且每次訪問來自不同的應用程序時也是如此。這將幫助您實現針對不同域的單點登錄。

相關問題