OpenID处于负载均衡的情况

时间:2009-06-02 15:40:41

标签: java session openid load-balancing failover

我正在考虑使用Java + Tomcat / JBoss实现OpenID提供程序('OP')。

现在关于OpenID的关键之一是

  1. 用户与OP和RP进行通信,并与两个站点进行会话。
  2. OP和RP相互通信以确保用户没有伪造任何东西。
  3. 我无法找到任何文档的主题是关于如何在负载平衡的情况下正确实现此问题的问题。

    我担心的一般问题是RP连接到OP并最终在与用户不同的应用服务器上。

    我的问题:

    • 处理此问题的正确方法是什么?
    • 什么是'最好'的OpenID库 使用?

    感谢。

2 个答案:

答案 0 :(得分:2)

  

我担心的一般问题是RP连接到OP并最终在与用户不同的应用服务器上。

将对话状态保存在共享存储中。也就是数据库或distributed cache。缓存会更快,无论如何你都不需要太多的持久性。

使用粘性会话进行负载平衡(来自同一客户端的所有后续请求来到同一服务器)将减少缓存更新的数量。

(我最初建议的群集HTTP会话不会起作用,因为同一个会话在两个会话之间传播:用户和应用程序。)

答案 1 :(得分:1)

在OP端,真正需要在群集中的计算机之间共享的唯一特定于OpenID的状态是关联(共享机密及其句柄)。这很可缓存;给定关联句柄的秘密永远不会改变,它们具有明确定义的生命周期,并且不应该 其中许多。 (除非您使用一些使用无状态模式的高容量RP进行操作。)

根据您的功能集和用户界面,用户可能还有其他会话状态,但不需要应用于直接RP-OP通信,您可以使用标准的技巧包。