反向代理的认证

网络工程 验证
2022-02-19 08:09:19

假设有一个运行多个 Web 应用程序的应用程序服务器。其中一些应用程序可以直接从 Internet 访问,但特定应用程序需要单点登录,这是通过添加正确 HTTP 标头的反向代理解决方案实现的。此反向代理实现在公司网络内的不同机器上运行。强制此特定应用程序仅处理“通过 SSO”(通过反向代理)而不是直接来自 Internet 的请求的典型方法是什么?

一些想法:

  • 只需检查请求 IP 并查看它是否与代理的匹配
  • 要求反向代理发送 SSL 客户端证书
  • 不关心传入 HTTP 请求的来源,但请检查 SSO 包含的 HTTP 标头是否用于有效的 SSO 会话

每种方法的优缺点是什么?你是如何实现类似的东西的?特定的 SSO 实现是 IBM WebSeal,但我也对您如何解决任何其他产品的问题也很感兴趣。谢谢!

1个回答

网络的角度来看,仅需要从反向代理访问的应用程序理想情况下应该在无法从 Internet 直接访问的系统(内部子网/vlan)上运行。事实上,我的偏好是将所有应用程序都放在负载均衡器后面,这样就没有通往服务器的直接路径。如果应用程序绑定到用于所有应用程序的代码库,您可能能够复制内部系统上的所有应用程序,该系统仅有效地运行 SSO 站点(因为它只接收来自反向代理的那些请求)并以某种方式呈现SSO-site 对直接访问系统没用。

另一个可行的解决方案是在站点上有一个 ACL,这样只有负载均衡器才能向应用程序发出请求。

安全 POV 不可行的解决方案是在您的 Web 主机上混合公共子网和私有子网来处理您的两个用例。