2010-01-17 28 views
1

我正在考慮爲我們所有的在線產品(包括我們自己的公司網站)創建一個全球ID系統(我們還沒有任何公開的產品,但我們相當接近)。如果我們完全是一個.Net商店,這不會成爲一個問題,但我們至少有ASP.Net MVC和Ruby on Rails,誰知道我們未來還會有什麼。如何在不同的環境中實施「全球身份識別系統」?

如何在不同的環境中實現這種類型的系統?你會使用內部Web服務進行身份驗證嗎?

回答

1

我最近做了這一點,它是在高級別相當簡單:

  • 創建授權憑據(用戶/密碼),然後發出一個認證令牌(如GUID)的Web服務。此令牌將在設定的時間或用戶註銷時過期。令牌可以存儲在Web應用程序的Cookie中,也可以存儲在客戶端/服務器應用程序的客戶端內存中。
  • 隨着用戶從一個系統移動到另一個系統,各個系統應該檢查身份驗證服務,以確定該令牌是否仍處於活動狀態。如果不是(例如在超時或假令牌的情況下),它應該將用戶重定向到全局登錄。
  • 很高興有功能,但不是必需的:由於用戶在系統中處於活動狀態,因此偶爾會調用認證服務並刷新/延長令牌的生命週期。

顯然,在您編寫自定義解決方案之前,應該探索運行您自己的OpenID或OpenAuth服務器作爲選項。

+0

你如何處理保持某人登錄來自不同域的多個服務?這甚至有可能嗎? – 2010-01-17 18:03:45

+0

您可以做的最好的做法是在共享域級別發出一個cookie。例如:如果您爲「mycompany」域發佈cookie,則可以通過app1.mycompany.com和app2.mycompany.com共享cookie。如果你的服務不共享上層的域名,那麼類似OpenID服務器可能是更好的選擇。 – 2010-01-17 18:07:27

1

是的,像SOAP webservice這樣的標準覆蓋的東西將是最明顯的方式。

易於在C#/。net中編寫,並且您知道它應該是任何其他語言/平臺可以使用的交叉兼容性問題。

請確保您的Google Web服務互操作性信息第一,因爲有一些陷阱。有一些博客文章here關於一些常見的事情來檢查。