2012-06-18 82 views
4

問題

假設我有example.com,example.org和example.net。同一登錄跨透明登錄過程的多個站點

所有這些網站都有一個用戶憑據相同的基礎進行身份驗證登錄。

我在尋找有效的方式只登錄一個地方,但仍然有能力透明地登錄在網站的網站。

我目前的解決方案
...是有一個iframe加載的網站上(我稱之爲主站點)的一個資源,如果用戶在主站點登錄,使用刷新頁面令牌並通過一些JavaScript自動登錄用戶。

但這真是ineffecient和不安全的有以下幾個原因:

  • 用戶需要在主站點
  • 用戶需要刷新他的網頁,使用一些客戶方代碼登錄(我知道,這可能無法避免)。
  • 使用iframe通常是不被接受的,有些甚至有瀏覽器插件阻止它們。

什麼我不尋找
我不感興趣,在使用某些第三方供應商,如Facebook,谷歌或OpenID提供商,因爲這需要我的用戶提供第三方網站進行註冊使用我的服務。

總結到的具體問題
就像谷歌,甚至StackOverflow上,網站認證的過程似乎透明,我需要類似的東西。我目前的解決方案有什麼更好的選擇?

+1

如何讓自己的openID? –

+0

另外,看到這個: http://stackoverflow.com/questions/44509/single-sign-on-across-multiple-domains –

+0

@BenjaminGruenbaum看來,處理你自己的OpenID提供者並不那麼簡單,除了使用JanRains沒有人似乎已經爲PHP創建了一個最新的解決方案。 – Repox

回答

3

我不能共享代碼...但我實現參與解決中間人來處理我所有的網站...我們稱爲SSO代理認證....

基本上,所有登錄請求將通過SSO代理進行,它將確定您是否在嘗試訪問siteb時已經在sitea中登錄過。

...我可以指出你爲我們如何實現它的衣櫃是: http://www.jasny.net/articles/simple-single-sign-on-for-php/

其他SSO解決方案都有自己的地方太多,但有些是比需要更復雜。

另一種簡單的方法是,簡單地在對方之間傳遞一些(secure-ish)令牌。

+0

當他從exampe.com移至example.org時,您將如何消除用戶登錄的需求?我認爲用戶仍然需要在example.org上輸入用戶名和密碼,但可以在普通OpenID服務器上驗證 – HaBo

+0

@HaBo您是否嘗試過jasny代碼?它似乎工作正常。 – kojow7