2009-06-02 38 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的直接通信,你可以使用你的标准包装技巧。