我实现一个简单的负载均衡器自定义负载平衡器 - 这是一个HTTP监听器,解析来自浏览器,并将其发送到相应的ASP.NET应用程序的传入请求。它监听某个端口(8801),并在路由时保留原始URI并仅改变端口号码,例如, https://machine.domain.com:8801/testsite/Default.aspx可以被路由到https://machine.domain.com:8811/testsite/Default.aspxWIF被动联合会与地方
没有安全路由工作得很好。当我尝试将WIF联合应用到ASP.NET应用程序时,问题就出现了。我使用ADFS 2.0。这里有两种情况我想:
场景1
依赖方的WS联盟无源端点设置为ASP.NET应用程序的URI
当负载平衡器URI是通过浏览器访问,负载平衡器路由到ASP.NET应用程序和页面被加载,但是,根据设置的被动端点,来自STS的RequestSecurityTokenResponse会直接重定向到ASP.NET应用程序(而不是负载平衡器)。所以它可以工作,但由于我希望通过负载平衡器处理整个ASP.NET应用程序的通信,所以这种情况不符合我的要求。
方案2
依赖方的WS联盟无源端点设置为负载平衡器URI
当负载平衡器URI是通过浏览器访问,负载平衡器路由到ASP.NET应用程序,它返回未经授权响应,浏览器重定向到STS,RequestSecurityTokenResponse被重定向回负载均衡器,但是当进一步路由到ASP.NET应用程序时,我得到401响应 - 未经授权:由于凭据无效,访问被拒绝。这是由于我认为URI不匹配,因为saml令牌是为负载平衡器URI发布的。我尝试了听众uris和领域的各种组合,但没有成功。
所以我的问题是,是否存在一个解决办法,这将使负载均衡器处理所有必要联合会沟通,我的ASP.NET应用程序只能从负载均衡器进行访问。
我希望我能够清楚地解释我的问题。
帮助非常感谢 感谢
出于好奇,你在哪里把这段代码放在你的解决方案中? – shenn 2014-05-21 21:28:39