【问题标题】:OpenID in a load-balanced situation负载均衡情况下的 OpenID
【发布时间】:2009-06-02 15:40:40
【问题描述】:

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

现在关于 OpenID 的关键之一是

  1. 用户与 OP 和 RP 进行通信,并与两个站点进行会话。
  2. OP 和 RP 相互通信以确保用户没有伪造任何东西。

我无法找到任何文档的主题是关于如何在负载平衡的情况下正确实现这一点的问题。

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

我的问题:

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

谢谢。

【问题讨论】:

  • 除非严格要求,为什么不使用外部提供者?
  • 要求是使用现有的网站和现有的帐户作为认证。我正在寻找链接外部网站,而不需要用户主动登录每个网站。

标签: java session openid load-balancing failover


【解决方案1】:

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

将对话状态保存在共享存储中。即数据库或distributed cache。缓存会更快,而且你也不需要太多的持久性。

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

(我最初打算建议的群集 HTTP 会话无法正常工作,因为相同的会话分布在两个会话之间:用户会话和应用程序会话。)

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-07
      • 1970-01-01
      • 2021-02-03
      • 2020-02-13
      • 2020-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多