2009-06-02 34 views
2

我正在尋找使用Java + Tomcat/JBoss實現OpenID提供者('OP')。負載均衡情況下的OpenID

現在的關於OpenID的主要事情之一是,

  1. 用戶與OP和RP進行通信,並與這兩個網站的會話。
  2. OP和RP相互通信,以確保用戶沒有僞造任何東西。

我沒有找到任何文檔的主題是關於如何在負載均衡情況下正確實現這個問題。

我擔心的一般問題是,RP連接到OP,並且以不同於用戶的應用程序服務器結束。

我的問題:

  • 什麼是處理這個問題的正確方法?
  • 什麼是'最好的'OpenID庫到 的用法?

謝謝。

+0

除非嚴格要求,爲什麼不使用外部提供商? – 2009-06-02 17:28:33

回答

2

我擔心的一般問題是,RP連接到OP並結束於與用戶不同的應用程序服務器。

將對話狀態保存在共享存儲中。那就是數據庫或者distributed cache。高速緩存會更快,並且不需要太多的持久性。

使用粘性會話進行負載平衡(所有來自同一客戶端的相應請求都來自同一臺服務器)會減少高速緩存更新的數量。

(集羣HTTP會話,我打算建議最初將不一樣的談話工作分佈於兩個會話之間:用戶和應用程序)

1

在OP方面,只有特定OpenID的狀態真的需要在羣集中的機器之間共享的是關聯(共享祕密及其處理)。這是相當可緩存的;給定關聯句柄的祕密永遠不會改變,他們有一個明確的生命週期,並且不應該有其中很多。 (除非您可能使用某些使用無狀態模式的大容量RP進行操作。)

根據您的功能集和用戶界面,用戶可能會有一些其他會話狀態,但這不應該需要適用於RP-OP的直接通信,你可以使用你的標準包裝技巧。