2011-09-18 59 views
2

我已經研究過這個問題,但它主要來自想要通過一次單擊登錄到像Google或Facebook這樣的網站的人。單一登錄網頁

這是我的問題:

我有兩個網站。這兩個網站都有自己的登錄頁面(即login.php)。這兩個網站都有共同的用戶名。我可以控制兩個站點(我可以更改他們的代碼)。 我想在用戶點擊服務器A上的鏈接時登錄到服務器B.

我想過讓一臺服務器向另一臺服務器發送發佈請求,但隨後另一臺服務器將創建與此服務器的會話而不是與客戶的電腦。

我想要做的是創建一個與當前登錄腳本進行通信的代理登錄頁面。

如果可能我需要在php中完成。

任何建議/想法/鏈接?

謝謝

回答

1

你應該看看什麼WikimediaSingle User Login一樣。

系統工作的方式是當您登錄到項目中時,創建令牌並將其存儲在共享數據庫中。然後通過圖像將該令牌放入登錄成功頁面。例如,該HTML將導致到元項目的請求:

<img src="http://meta.wikimedia.org/wiki/Special:AutoLogin?token=TOKENTOKENTOKEN" alt="meta.wikimedia.org" title="meta.wikimedia.org"> 

然後,用戶使用該令牌附加到圖像,這會導致所得到的項目來認證該用戶和給該用戶的cookie的請求該域名。

+0

鏈接頁面上的第四行指出CentralAuth沒有提供Single Sign on的解決方案,或者我誤解了這個句子(我本人並不會說英語,所以這很有可能) –

+0

@Chaosekie that bit is talking about [$ wgSharedDB](http://www.mediawiki.org/wiki/Manual:$wgSharedDB),而不是CentralAuth。 – JohnD

+0

好的,謝謝,所以我應該向用戶發送令牌並且用戶使用該令牌向其他服務器發送登錄請求?我應該將這個令牌存儲在頁面上的某個地方,並用js將其提取並在新的請求中使用它?但是,我應該編碼到此令牌中以防止其他用戶攔截並使用它登錄到遠程服務器? –