我正在实现一个简单的负载均衡器——它是一个 http 侦听器,它解析来自浏览器的传入请求并将它们路由到适当的 ASP.NET 应用程序。它侦听某个端口 (8801) 并在路由时保留原始 URI 并仅更改端口号,例如https://machine.domain.com:8801/testsite/Default.aspx可以路由到https://machine .domain.com:8811/testsite/Default.aspx
没有安全路由就可以正常工作。当我尝试将 WIF 联合应用于 ASP.NET 应用程序时,问题就出现了。我使用 ADFS 2.0。这是我尝试过的两种情况:
情景 1
依赖方的 WS-Federation 被动端点设置为 ASP.NET 应用程序 URI
当通过浏览器访问负载均衡器 URI 时,负载均衡器路由到 ASP.NET 应用程序并加载页面,但是,根据被动,来自 STS 的 RequestSecurityTokenResponse 被直接重定向到 ASP.NET 应用程序(而不是负载均衡器)端点设置。所以它可以工作,但由于我希望通过负载均衡器处理与 ASP.NET 应用程序的整个通信,所以这种情况不符合我的要求。
情景 2
依赖方的 WS-Federation 被动端点设置为负载平衡器 URI
当通过浏览器访问负载均衡器 URI 时,负载均衡器路由到 ASP.NET 应用程序,该应用程序返回未经授权的响应,浏览器重定向到 STS,RequestSecurityTokenResponse 被重定向回负载均衡器,但是当进一步路由到 ASP.NET 应用程序时,我得到 401 的响应 - 未经授权:由于凭据无效,访问被拒绝。这是由于我认为 URI 不匹配,因为 saml 令牌是为负载均衡器 URI 颁发的。我尝试了各种受众 uri 和领域的组合,但没有成功。
所以我的问题是是否存在使负载均衡器能够处理所有必要的联合通信的解决方法,因为我的 ASP.NET 应用程序只能从负载均衡器访问。
我希望我足够清楚地解释了我的问题。
非常感谢帮助谢谢