程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 跨主域實現SSO的思路

跨主域實現SSO的思路

編輯:關於PHP編程

跨主域,實現SSO的思路

同一主域(即:同一個一級域名下的所有子域名)下包括多服務器共享SESSION數據實現的方法很多,這裡就不多說了!

現在關鍵的問題是不同主域的SSO的實現!這個問題比較復雜,能實現,但好多都是用一些特殊的軟件系統來支撐的。。。

實際上,SESSION也是需要COOKIE來支持的,COOKIE的不支持跨主域就決定了SESSION不能跨主域!那麼,如何實現跨主域呢???

這又是我在實現我的項目中的SSO時,突然想到的一個簡單的方法,供大家商討

一、假設  有A.COM , B.COM , C.COM 這三個主域,其中   A.COM主要負責驗證通行證(速度比較快),  B.COM 和 C.COM都是具體的應用

二、B.COM 和 C.COM 以及 A.COM 自己的一些應用都需要到  A.COM來獲取信任(登陸)

三、為各主域分配一個子域 passport.B.COM、passport.C.COM,它們的IP都指向  A.COM所在的主機地址

四、用戶在登陸通過驗證後,設立一個跳轉規則,以session_id作為參數,逐個跳轉  passport.B.COM、passport.C.COM (實際上這些子域可以建立到A主機的默認站點,通過數組以及一些參數就可以實現逐個快速跳轉),跳轉直接用PHP的 header("Location: passport.B.COM/?sid=xxxxxxxx&i=0"); ,在跳轉的同時,覆蓋當前主域的session_id為傳遞過來的session_id就可以了。

這裡有一些考慮:
1、將各 passport.X.COM分配到同一個速度比較快的主機上,有利於快速跳轉,而用戶看不見復雜跳轉的過程。。。
2、同一主機上跳轉可以避免中間跳轉環節的出錯導致跳轉失敗。

我只在本機模擬多主域上測試過,效果不錯;還沒有在INTERNET的網絡上具體的試驗,請大家有空嘗試一下,並提出更好的 SSO 解決方案  ...

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved