2011-06-14 54 views
0

我有以下設置:共享/代理功能的CodeIgniter會話跨多個CI實例

Site1 (Core) at Core.example.com 
Site2 (Work1) at Work1.example.com 
Site3 (Work2) at Work2.example.com 

等...我只是用戶Work1在討論,但問題適用於所有Work網站

這個想法是,Core用於登錄,付款,帳戶管理等,工作網站提供的功能是足夠不同的,以證明單獨的CI實例/ DBS /等。

這工作relativfely以及在Core可以設置這是由其他網站拿起餅乾。

我得到的問題是,我想允許例如Work1代表用戶/作爲用戶撥打電話Core - 例如更新用戶帳戶詳細信息,獲取用戶可用服務列表等

我目前正在嘗試通過捲曲做到這一點。如果我到Work1由客戶端的HTTP請求讀取Core會話cookie並注入到從Work1Core捲曲請求,Core不接受它作爲一種有效的會話cookie。我不確定這是否由於IP地址不同(客戶端vs Work1)或其他原因。

不幸的是,我需要Work1有自己的數據庫,以便共享DB是不是一個可行的選擇。也就是說,我已在整個網站中使用相同的加密密鑰,因此可以根據需要在任何網站上解密/解析Cookie(或其他任何內容)。

有人能建議我怎麼能說服Core來自Worker1與用戶的Core會話cookie的請求實際上來自用戶?

回答

0

我最終能夠通過閱讀來的cookie,並注入捲曲要求解決這個問題。我還必須處理通過CURL檢索的會話cookie更新,重新包裝它們並將它們傳遞迴客戶端。

我還擴展了IP驗證,以檢查會話IP是否爲:當前請求的客戶端IP或我的Work1站點的IP地址,並且HTTPS請求具有MySite-OriginalIp標頭(附加到我的所有CURL請求)並且該值與會話匹配。

還有一些其他的安全性增強,調整和完整性檢查是需要得到這個要在一個強大的和可靠的方式不影響安全性的 - 太多此處細節。