我想實現一個處理許多站點登錄的分立遠程認證服務器。有點類似於OpenID。如何實現單點登錄認證服務器?
基本上,我有站點1和站點2,他們都依賴於同一個用戶數據庫,這是在一個單獨的認證站點。所以,auth-site爲它們處理用戶認證,並且在這個過程中,使認證用戶的信息可用於請求系統。
每個站點都可以在完全獨立的域名上,在完全獨立的機器上。
這都是通過HTTP(S),不能直接訪問數據庫。
還有最後一個怪癖:一旦用戶登錄到站點1,當訪問任何依賴auth站點的其他站點時,該站點必須將用戶視爲已經通過身份驗證。
這整個業務必須對最終用戶完全免費。它應該像一個簡單的日常登錄表單一樣工作。
作爲一個具體的例子,說我們在談論stackoverflow.com
和serverfault.com
,他們都通過authentic-overflow-server-stack.com
驗證。再次,一旦登錄到任何一個站點,我都可以去另一個站點並在沒有再次登錄的情況下開展業務。
我想知道的是這種場景背後的網站之間的一般交互機制。我使用的是Rails,但是我沒有在尋找代碼[1],只是一般的最佳實踐和指導,所以隨意用僞代碼或任何一般可讀的語言來回答。 OTOH,請記住,我的工具包中會有相當不錯的MVC,REST和元編程。
[1]:除非你知道現有的微小整齊免費MIT/BSD授權的應用/插件/發電機處理這個。
是的,它看起來像這一點,我很樂意。但是有一個現有的用戶數據庫,以及一個客戶對依賴第三方系統的偏見。此外,這些將是支付帳戶,雖然我不認爲這在技術上很重要,但確實會影響客戶偏見的強烈程度。 – kch 2009-04-26 03:23:44