负载均衡器后面的 Openam

Openam behind load balancer

我对网络还很陌生,我在尝试实现负载平衡后的 opensso 时遇到了问题。负载平衡器使用 IP 地址,openam 代理应该在 运行 asp.net 应用程序的 IIS 服务器上工作。 Openam 只在 DNS 上工作,而负载均衡器只在 IP 上工作,无法通信。 这是一个常见的场景,任何人过去都处理过此类问题,请提供指导。

您需要了解一些技术细节,尤其是 https://www.rfc-editor.org/rfc/rfc6265(又称“cookie 规范”)。这就是为什么 OpenAM BY DEFAULT 只能在 FQDN 上工作,但是如果您了解技术基础,它只能在 IP 上工作。

代理默认探测 OpenAM URLs(参见 https://bugster.forgerock.org/jira/browse/OPENAM-3294)。

如果配置了 OpenAM 站点,则在验证“用户”的 SSO 令牌时,代理还会与主站点通信 URL,为该站点配置(并且当 OpenAM 实例属于该站点时)以及发送政策决策请求时。

如果没有配置 OpenAM 站点,代理会与创建 SSO 会话的 OpenAM 实例的服务器 URL 通信(我称之为 'authoritative OpenAM instance')。

OpenAM 还需要知道它必须处理哪些 FQDN。这可以通过 OpenAM 站点(了解 WRT 与代理通信的后果)或通过 'fqdn mapping'(高级服务器 属性 com.sun.identity.server.fqdnMap[FQDN]=FQDN)

来实现

现在您还需要了解 TCP/IP 协议栈中的名称解析。

客户端实际上首先在 IP 级别进行通信(抛开较低级别)。

负载均衡器通常定义一个 'virtual server',它分配了一个 VIP(术语令人困惑,因为在 HTTP 服务器上你也可以有类似 'virtual server' 的东西,但它可能作用于不同的网络堆栈的级别)。

这样就可以了(了解了技术基础之后)

  • 为 LB 的 VIP 创建名称解析到适当的 FQDN
  • 利用该 FQDN 创建 OpenAM 站点
  • 将 OpenAM 实例分配给该站点
  • 将代理配置为使用 OpenAM 站点的 FQDN 作为登录名URL(并可能在代理 bootstrap 文件中命名 url)
  • 可能会在 OpenAM 平台服务中重新配置 cookie 域
  • 重新启动 OpenAM